MrShi
12 小时以前 ac33a3140ef8ef20dfd2537fce2dfdd0f374f30e
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -21,6 +21,7 @@
import com.doumee.dao.business.join.PlanorderDetailJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.dto.PlatformConfigDTO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.dto.CouponDTO;
import com.doumee.dao.web.request.*;
import com.doumee.dao.web.request.goods.*;
@@ -35,6 +36,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.IntegralService;
import com.doumee.service.business.NoticeService;
import com.doumee.service.system.SystemDictDataService;
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
@@ -89,6 +91,10 @@
    private MemberMapper memberMapper;
    @Autowired
    private CouponMapper couponMapper;
    @Autowired
    private NoticeService noticeService;
    @Autowired
    private NoticeMapper noticeMapper;
    @Autowired
    private MemberCouponJoinMapper memberCouponJoinMapper;
    @Autowired
@@ -275,7 +281,7 @@
                    Constants.UserActionType.CHANGE_ORDER_KD,
                    userActionMapper,
                    update.getEditDate(),
                    new String[]{user.getUsername(), DateUtil.getPlusTime2(update.getEditDate()),"备注:"+goodsorder.getKdInfo()},
                    new String[]{goodsorder.getKdInfo()},
                    JSONObject.toJSONString(update) ,
                    query.getKdName()+"(单号:"+query.getKdCode()+")",
                    goodsorder.getKdName()+"(单号:"+goodsorder.getKdCode()+")");
@@ -387,7 +393,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),ResponseStatus.DATA_EMPTY.getMessage());
        }
        cancelOrder( query.getId(),  user.getId(),goodsorder.getCancelInfo() );
        cancelOrderNew( query.getId(),  user.getId(),goodsorder.getCancelInfo() );
    }
@@ -404,36 +410,45 @@
    @Override
    public Goodsorder findById(Integer id) {
        Goodsorder result=goodsorderJoinMapper.selectById(id);
        MPJLambdaWrapper<Goodsorder> q = new MPJLambdaWrapper<Goodsorder>()
                .selectAll(Goodsorder.class)
                .selectAs(Shop::getName,Goodsorder::getShopName)
                .selectAs(Member::getNickname,Goodsorder::getNickName)
                .selectAs(Member::getPhone,Goodsorder::getPhone)
                .selectAs(Member::getName,Goodsorder::getMemberName)
                .selectAs(MemberCoupon::getName,Goodsorder::getCouponName)
                .select("t4.realname",Goodsorder::getKdUserName)
                .select("t5.realname",Goodsorder::getCancelUserName)
                .select("t6.realname",Goodsorder::getRefundUserName)
                .selectAs(Shop::getName,Goodsorder::getShopName)
                .leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId)
                .leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId)
                .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId)
                .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getKdUser)
                .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getCancelUser)
                .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getRefundUserId)
                .eq(Goodsorder::getId,id);
        Goodsorder result=goodsorderJoinMapper.selectJoinOne(Goodsorder.class,q);
        if(Objects.nonNull(result)){
            MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>();
            queryWrapper.selectAll(GoodsorderDetail.class);
            queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
            queryWrapper.selectAs(Labels::getName,GoodsorderDetail::getLablesName);
            queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
            queryWrapper.eq(GoodsorderDetail::getOrderId,result.getId());
            queryWrapper.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
            queryWrapper.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
            queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getCategoryId);
            queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId);
            queryWrapper.selectAll(GoodsorderDetail.class)
                    .selectAs(Labels::getName,GoodsorderDetail::getCategoryName)
                    .eq(GoodsorderDetail::getIsdeleted,Constants.ZERO)
                    .leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId)
                    .leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId)
                    .leftJoin(Labels.class,Labels::getId,Goods::getCategoryId)
                    .eq(GoodsorderDetail::getOrderId,result.getId()) ;
            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailMapper.selectList(queryWrapper);
            String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
            String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                    + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
            for(GoodsorderDetail model:goodsorderDetailList){
                if(StringUtils.isNotBlank(model.getImgurl())){
                   model.setImgurl(path+ model.getImgurl());
                }
                //小计
                model.setTotalPrice(Constants.formatBigdecimal(model.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(model.getGoodsNum()))));
            }
            result.setGoodsorderDetailList(goodsorderDetailList);
            //查询咖啡计划订阅周期
            if(Constants.equalsInteger(result.getType(),Constants.TWO)){
                MPJLambdaWrapper<PlanorderDetail> queryplan = new MPJLambdaWrapper<>();
                queryplan.eq(PlanorderDetail::getOrderId,result.getId());
                queryplan.last("limit 1");
               PlanorderDetail planorderDetail= planorderDetailJoinMapper.selectOne( queryplan);
               result.setPlanorderDetail(planorderDetail);
            }
        }
        return result;
    }
@@ -458,6 +473,8 @@
        queryWrapper.selectAll(Goodsorder.class);
        queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
        initPageQueryWrapper(queryWrapper,pageWrap);
        queryWrapper.selectAs(MemberCoupon::getName,Goodsorder::getCouponName);
        queryWrapper.leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId);
        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus());
        queryWrapper.orderByDesc(Goodsorder::getCreateDate);
@@ -471,7 +488,7 @@
            dealOrderDetailsBiz(idList,result);//查询订单明细
        }
        PageData<Goodsorder> rr =  PageData.from(result);
        if(pageWrap.getPage() == 1){
        if(pageWrap.getPage() == 1  && pageWrap.getModel().getNeedCount()!=null&& pageWrap.getModel().getNeedCount()){
            //如果查询第一页,做数据统计
            rr.setCountData(dealCountOrderNum(pageWrap));
        }
@@ -648,41 +665,42 @@
    @Override
    public List<Goodsorder> exportExcel(Goodsorder pageWrap) {
        MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Goodsorder.class);
        queryWrapper.selectAs(GoodsorderDetail::getName,Goodsorder::getGoodsName);
        queryWrapper.selectAs(GoodsorderDetail::getSkuName,Goodsorder::getSkuName);
        queryWrapper.selectAs(GoodsorderDetail::getGoodsNum,Goodsorder::getGoodsNum);
        queryWrapper.selectAs(GoodsorderDetail::getPrice,Goodsorder::getGoodsPrice);
        queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName);
        queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone);
        queryWrapper.selectAs(Addr::getAddr,Goodsorder::getAddr);
        queryWrapper.select("(select CREATE_DATE  from order_urge where ORDER_ID=t.id and ISDELETED=0 ORDER BY CREATE_DATE desc limit 1) as urgeCreateDate ");
        queryWrapper.leftJoin(Member.class,Member::getId,Goodsorder::getMemberId);
        queryWrapper.leftJoin(Addr.class,Addr::getMemberId,Member::getId);
        queryWrapper.leftJoin(GoodsorderDetail.class,GoodsorderDetail::getOrderId,Goodsorder::getId);
        queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(Addr::getIsDefault,Constants.ONE);
        queryWrapper.eq(pageWrap.getCode()!=null,Goodsorder::getCode,pageWrap.getCode());
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getNickName()),ms->ms.like(Goodsorder::getLinkname,pageWrap.getNickName())
                .or().like(Goodsorder::getLinkphone,pageWrap.getNickName())
        );
        queryWrapper.ge(pageWrap.getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getStarttime());
        queryWrapper.le(pageWrap.getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getEndtime());
        queryWrapper.eq(pageWrap.getStatus()!=null,Goodsorder::getStatus,pageWrap.getStatus());
        queryWrapper.eq(pageWrap.getIsdeleted()==null,Goodsorder::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(pageWrap.getIsdeleted()!=null,Goodsorder::getIsdeleted,pageWrap.getIsdeleted());
        queryWrapper.orderByDesc(Goodsorder::getCreateDate);
        List<Goodsorder> result = goodsorderJoinMapper.selectJoinList(Goodsorder.class, queryWrapper);
    public List<GoodsorderExport> exportExcel(PageWrap<Goodsorder> pageWrap) {
        pageWrap.getModel().setNeedCount(false);
        PageData<Goodsorder> list = findPage(pageWrap);
        List<GoodsorderExport> result = new ArrayList<>();
        if(list!=null && list.getRecords()!=null){
            for(Goodsorder order: list.getRecords()){
                GoodsorderExport param = new GoodsorderExport();
                param.setCode(order.getCode());
                String goodsInfo = "";
                int goodsNum= 0;
                if(order.getGoodsorderDetailList()!=null && order.getGoodsorderDetailList().size()>0){
                    for(GoodsorderDetail detail:order.getGoodsorderDetailList()){
                        goodsNum += Constants.formatIntegerNum(detail.getGoodsNum());
                        goodsInfo+= StringUtils.defaultString(detail.getName(),"")+"/"+Constants.formatBigdecimal(detail.getGoodsWeight())+"kg"
                                +"("+Constants.formatBigdecimal(detail.getPrice())+"  x  "+Constants.formatIntegerNum(detail.getGoodsNum())+");\n";
                    }
                }
                param.setTotalNum(goodsNum);
                param.setGoodsName(goodsInfo);
                param.setTotalPrice(order.getTotalPrice());
                param.setIntegralPrice(order.getIntegral());
                param.setCouponPrice(order.getCouponPrice());
                param.setMailPrice(order.getMailPrice());
                param.setPrice(order.getPrice());
                param.setShopName(order.getShopName());
                param.setShopSettlement(order.getShopSettlement());
                param.setReceiveType(order.getReceiveType());
                param.setLinkname(order.getLinkname());
                param.setLinkphone(order.getLinkphone());
                param.setAddr(order.getLinkaddr());
                param.setKdInfo(StringUtils.defaultString(order.getKdName(),"")+StringUtils.defaultString(order.getKdCode(),""));
                param.setStatus(order.getStatus());
                param.setCreateDate(order.getCreateDate());
                result.add(param);
            }
        }
        return result;
    }
@@ -694,187 +712,6 @@
    /****************************************移动端接口开始********************************************************************/
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public PayResponse orderPay(OrderPayRequest orderPayRequest){
        Member member = memberMapper.selectById(orderPayRequest.getMemberId());
        //查询收货地址
        Addr addr = addrMapper.selectById(orderPayRequest.getAddressId());
        if(Objects.isNull(addr)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到收货地址信息!");
        }
        Areas area = areasService.findById(addr.getAreaId(), Constants.TWO);
        if(Objects.isNull(area)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"收货地址区划信息发生变化,请更新后下单!");
        }
        Goodsorder goodsorder = new Goodsorder();
        goodsorder.setCreator(orderPayRequest.getMemberId());
        goodsorder.setIntegral(BigDecimal.ZERO);
        goodsorder.setCreateDate(new Date());
        goodsorder.setIsdeleted(Constants.ZERO);
        goodsorder.setMemberInfo(orderPayRequest.getRemark());
        goodsorder.setAddrId(addr.getId());
        goodsorder.setLinkaddr(area.getProvinceName()+area.getCityName() + area.getName() + addr.getAddr());
        goodsorder.setLinkphone(addr.getPhone());
        goodsorder.setLinkname(addr.getName());
        goodsorder.setMemberId(member.getId());
        goodsorder.setType(orderPayRequest.getOrderType());
        //单据编号 自增
        goodsorder.setCode(getNextInCode());
        //计算订单总金额
        BigDecimal sumPrice = BigDecimal.ZERO;
        //存储记录明细
        List<PayDetailRequest> payDetailRequestList = orderPayRequest.getPayDetailRequestList();
        if(Objects.isNull(payDetailRequestList)||payDetailRequestList.size()==Constants.ZERO){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"无明细数据,请检查选择数据!");
        }
        List<GoodsorderDetail> goodsOrderDetailList = new ArrayList<>();
        for (PayDetailRequest payDetailRequest:payDetailRequestList) {
            //查询商品
            GoodsSku goodsSku = goodsSkuMapper.selectById(payDetailRequest.getGoodsSkuId());
            if(Objects.isNull(goodsSku)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到商品SKU信息!");
            }
            Goods goods = goodsMapper.selectById(goodsSku.getGoodsId());
            if(Objects.isNull(goods)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到商品信息!");
            }
            if(goods.getStatus().equals(Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在商品已删除或已下架,无法下单");
            }
            if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在商品库存不足,无法下单!");
            }
            //商品库存扣除
            goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum()))));
            goodsSkuMapper.updateById(goodsSku);
            GoodsorderDetail goodsOrderDetail = new GoodsorderDetail();
            goodsOrderDetail.setCreator(member.getId());
            goodsOrderDetail.setCreateDate(new Date());
            goodsOrderDetail.setImgurl(StringUtils.isBlank(goodsSku.getImgurl())?goods.getImgurl():goodsSku.getImgurl());
            goodsOrderDetail.setName(goods.getName());
            goodsOrderDetail.setGoodsSkuId(goodsSku.getId().toString());
            goodsOrderDetail.setSkuName(goodsSku.getName());
            goodsOrderDetail.setPrice(goodsSku.getPrice());
            goodsOrderDetail.setGoodsNum(payDetailRequest.getGoodsNum());
            goodsOrderDetailList.add(goodsOrderDetail);
            sumPrice = sumPrice.add(goodsSku.getPrice().multiply(new BigDecimal(payDetailRequest.getGoodsNum())));
            //购物车支付 删除购物车商品
            if(orderPayRequest.getIsShopChart().equals(Constants.ONE)){
                shopcartMapper.deleteById(payDetailRequest.getShopCartId());
            }
        }
        //订单支付现金金额
        goodsorder.setPrice((sumPrice.subtract(orderPayRequest.getDeductionBalance())));
        MemberCoupon memberCoupon = new MemberCoupon();
        if(!Objects.isNull(orderPayRequest.getCouponId())){
            memberCoupon = memberCouponMapper.selectById(orderPayRequest.getCouponId());
            if(Objects.isNull(memberCoupon)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到优惠券信息!");
            }
            if(sumPrice.compareTo(memberCoupon.getLimitPrice())<Constants.ZERO){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"订单金额小于优惠券总金额,无法使用!");
            }
            if(memberCoupon.getStatus().equals(Constants.ONE)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"优惠券已使用!");
            }
            sumPrice = sumPrice.subtract(memberCoupon.getPrice());
            goodsorder.setCouponId(orderPayRequest.getCouponId());
            goodsorder.setCouponPrice(memberCoupon.getPrice());
        }
        goodsorder.setCode(getNextInCode());
        if(!Objects.isNull(memberCoupon)){
            memberCoupon.setStatus(Constants.ONE);
            memberCouponMapper.updateById(memberCoupon);
        }
        //咖豆商城订单 单独处理 扣减积分 添加积分变动记录
        if(orderPayRequest.getOrderType().equals(Constants.ONE)){
            if(member.getIntegral().compareTo(sumPrice)<=Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "咖豆不足,无法兑换!");
            }
            goodsorder.setStatus(Constants.OrderStatus.PAY_DONE.getKey());
            goodsorder.setPayStatus(Constants.ZERO);
            goodsorder.setPayDate(new Date());
            goodsorderMapper.insert(goodsorder);
            //更新用户积分
            memberMapper.subtractIntegral(member.getId(),sumPrice);
            PayResponse payResponse = new PayResponse();
            payResponse.setOrderId(goodsorder.getId());
            return payResponse;
        }
        goodsorder.setIntegral(orderPayRequest.getDeductionBalance());
        goodsorderMapper.insert(goodsorder);
        //数据存储
        BigDecimal total = Constants.formatBigdecimal(goodsorder.getPrice()).add(Constants.formatBigdecimal(goodsorder.getIntegral())).add(Constants.formatBigdecimal(goodsorder.getCouponPrice()));
        BigDecimal rate =Constants.formatBigdecimal(goodsorder.getCouponPrice()).divide(total,4,BigDecimal.ROUND_HALF_UP);
        BigDecimal totalWxMoney = new BigDecimal(0);
        BigDecimal totalIntegral = new BigDecimal(0);
        for (int i =0;i< goodsOrderDetailList.size();i++) {
            GoodsorderDetail goodsOrderDetail= goodsOrderDetailList.get(i);
            goodsOrderDetail.setOrderId(goodsorder.getId());
            BigDecimal wxMoney ;
            BigDecimal integral;
            if(i!=0 && i == goodsOrderDetailList.size() -1){
                //处理因为四舍五入造成的可退金额损失
                wxMoney = Constants.formatBigdecimal(goodsorder.getPrice()).subtract(totalWxMoney);
                integral = Constants.formatBigdecimal(goodsorder.getIntegral()).subtract(totalIntegral);;
            }else{
                //当前明细实际价格
                BigDecimal detialTotal = Constants.formatBigdecimal(goodsOrderDetail.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(goodsOrderDetail.getGoodsNum())));
                //折算优惠券后支付价格(包含现金和余额部分)
                BigDecimal  actDetialTotal = detialTotal.subtract(detialTotal.multiply(rate));
                //按现金和积分支付比例,折算每个明细现金和积分支付的数量
                BigDecimal rate1 = detialTotal .divide(total,4,BigDecimal.ROUND_HALF_UP);
                //可退现金金额
                wxMoney = Constants.formatBigdecimal(goodsorder.getPrice()).multiply(rate1);
                //剩下的是余额抵扣
                integral =actDetialTotal.subtract(wxMoney);
                totalWxMoney = totalWxMoney.add(wxMoney);//累计
                totalIntegral= totalIntegral.add(integral);//累计
            }
            goodsOrderDetail.setMoney(wxMoney);
            goodsOrderDetail.setIntegral(integral);
            goodsorderDetailMapper.insert(goodsOrderDetail);
        }
        //如果抵扣金额大于 0 则进行余额业务处理
        if(orderPayRequest.getDeductionBalance().compareTo(BigDecimal.ZERO)>Constants.ZERO){
            //抵扣金额小于会员剩余余额
            if(orderPayRequest.getDeductionBalance().compareTo(member.getIntegral())<=Constants.ZERO){
                //更新余额信息 添加积分变动记录
                DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
                dealIntegralRequest.setIntegralNum(orderPayRequest.getDeductionBalance());
                dealIntegralRequest.setDealType(Constants.ONE);
                dealIntegralRequest.setMemberId(member.getId());
                dealIntegralRequest.setObjId(goodsorder.getId());
                dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
                dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER);
                integralService.dealIntegral(dealIntegralRequest);
                //发送微信小程序订阅消息
                SendWxMessage.integralChangeNotice(member,orderPayRequest.getDeductionBalance());
                //余额全部抵扣
                if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)==Constants.ZERO){
                    goodsorder.setStatus(Constants.OrderStatus.PAY_DONE.getKey());
                    goodsorder.setPayStatus(Constants.ONE);
                    goodsorder.setPayDate(new Date());
                    goodsorderMapper.updateById(goodsorder);
                    PayResponse payResponse = new PayResponse();
                    payResponse.setOrderId(goodsorder.getId());
                    return payResponse;
                }
            }else{
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"余额不足,无法进行支付,当前剩余余额:【"+member.getIntegral()+"】!");
            }
        }
        if(goodsorder.getPrice().compareTo(orderPayRequest.getTitlePrice())!=Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"商品价格发生变化,请刷新后重新支付!");
        }
        return this.wxPay(goodsorder,member);
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -890,6 +727,8 @@
        goodsorder.setMemberId(member.getId());
        goodsorder.setType(Constants.ZERO);
        goodsorder.setStatus(Constants.ZERO);
        goodsorder.setReceiveType(orderPayRequest.getReceiveType());
        goodsorder.setCouponPrice(BigDecimal.ZERO);
        Shop shop = null;
        if(Constants.equalsInteger(orderPayRequest.getReceiveType(),Constants.ZERO)){
            //查询收货地址
@@ -945,6 +784,7 @@
        payConfirmRequest.setAddressId(orderPayRequest.getAddressId());
        payConfirmRequest.setMemberId(member.getId());
        payConfirmRequest.setCouponId(orderPayRequest.getCouponId());
        payConfirmRequest.setUseIntegral(orderPayRequest.getUseIntegral());
        //通过支付确认接口获取生成支付信息
        OrderPayConfirmResponse orderPayConfirmResponse = this.orderPayConfirm(payConfirmRequest,memberCouponService);
        if(Objects.isNull(orderPayConfirmResponse)){
@@ -956,6 +796,7 @@
        goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount());
        goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount());
        goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE);
        goodsorder.setGoodsNum(orderPayRequest.getPayDetailRequestList().stream().mapToInt(PayDetailRequest::getGoodsNum).sum());
        if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
            sumPrice = sumPrice.subtract(orderPayConfirmResponse.getMemberCoupon().getPrice());
            goodsorder.setCouponId(orderPayConfirmResponse.getMemberCoupon().getId());
@@ -974,6 +815,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"无明细数据,请检查选择数据!");
        }
        List<GoodsorderDetail> goodsOrderDetailList = new ArrayList<>();
        BigDecimal shopSettlement = BigDecimal.ZERO;
        for (OrderGoodsCalculateResponse payDetailRequest:goodsCalculateList) {
            //查询商品
            GoodsSku goodsSku = goodsSkuMapper.selectById(payDetailRequest.getSkuId());
@@ -1006,6 +848,7 @@
            goodsOrderDetail.setCouponDeduct(payDetailRequest.getCouponDeductCash());
            goodsOrderDetail.setIntegralDeduct(payDetailRequest.getIntegralDeductCash());
            goodsOrderDetail.setOrderId(goodsorder.getId());
            goodsOrderDetail.setGoodsId(goodsSku.getGoodsId());
            //判断门店是否设置商品的价格信息
            if(Objects.nonNull(goodsorder.getDistributionShopId())){
@@ -1019,7 +862,6 @@
                if(Objects.isNull(shopGoodsRelation)){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,经销商未绑定["+goods.getName()+"]商品,请联系管理员!");
                }
                PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
                //经销商优惠承担占比
                BigDecimal shopRate = new BigDecimal("100").subtract(platformConfigDTO.getTotalRate());
@@ -1030,8 +872,11 @@
                if(shop.getSaleType().equals(Constants.ONE)){
                    goodsOrderDetail.setShopSettlement(goodsOrderDetail.getPrice().subtract(shopDeductAmount));
                }else {
                    //平台铺货
                    goodsOrderDetail.setShopSettlement(
                            shopGoodsRelation.getPrice().subtract(shopGoodsRelation.getPrice()).subtract(shopDeductAmount));
                            goodsOrderDetail.getPrice()
                                    .subtract(shopGoodsRelation.getPrice())
                                    .subtract(shopDeductAmount));
                }
                if(goodsOrderDetail.getShopSettlement().compareTo(BigDecimal.ZERO)<Constants.ZERO){
                    goodsOrderDetail.setShopSettlement(BigDecimal.ZERO);
@@ -1039,12 +884,16 @@
            }else{
                goodsOrderDetail.setShopSettlement(BigDecimal.ZERO);
            }
            shopSettlement = shopSettlement.add(goodsOrderDetail.getShopSettlement());
            goodsOrderDetailList.add(goodsOrderDetail);
            //删除购物车商品
            shopcartMapper.delete(new QueryWrapper<Shopcart>().lambda()
                    .eq(Shopcart::getMemberId,member.getId())
                    .eq(Shopcart::getGoodsSkuId,goodsOrderDetail.getGoodsSkuId())
            );
        }
        if(CollectionUtils.isNotEmpty(goodsOrderDetailList)){
            goodsorderDetailMapper.insert(goodsOrderDetailList);
        }
        //积分变动记录
        if(goodsorder.getUseIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
@@ -1055,13 +904,15 @@
            dealIntegralRequest.setMemberId(member.getId());
            dealIntegralRequest.setObjId(goodsorder.getId());
            dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER);
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER);
            integralService.dealIntegral(dealIntegralRequest);
        }
        if(goodsorder.getPrice().compareTo(orderPayRequest.getTitlePrice())!=Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"商品价格发生变化,请刷新后重新支付!");
        }
        //存在现金支付
        if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
            return this.wxPay(goodsorder,member);
@@ -1069,6 +920,7 @@
        //无现金支付
        goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
                .set(Goodsorder::getStatus,Constants.ONE)
                .set(Goodsorder::getShopSettlement,shopSettlement)
                .set(Goodsorder::getPayStatus,Constants.OrderStatus.PAY_DONE.getKey())
                .set(Goodsorder::getPayDate,DateUtil.getCurrDateTime())
                .set(Goodsorder::getId,goodsorder.getId())
@@ -1076,6 +928,13 @@
        PayResponse payResponse = new PayResponse();
        payResponse.setOrderId(goodsorder.getId());
        payResponse.setPayType(Constants.ONE);
        //发送通知
        if(Objects.nonNull(goodsorder.getPickUpShopId())){
            //发送站内信 - 经销商
            noticeService.orderPayNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getReceiveType());
        }
        return payResponse;
    }
@@ -1149,7 +1008,7 @@
            request.setBody("平台商城");
            request.setAttach("shopGoods");
            request.setOutTradeNo(goodsorder.getCode().toString());
            request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getPrice().toString()));
            request.setTotalFee(1);//BaseWxPayRequest.yuanToFen(goodsorder.getPrice().toString()));
          //  request.setTotalFee(2);
            request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss"));
            request.setSpbillCreateIp(this.getIpAddr());
@@ -1183,14 +1042,31 @@
        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
        page.getRecords().forEach(i->{
            List<MemberOrderDetailResponse> memberOrderDetailResponseList = goodsorderDetailMapper.getDetailList(i.getOrderId());
            memberOrderDetailResponseList.forEach(j->{
                j.setImgUrl(fullUrl + j.getImgUrl());
            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
                    .eq(GoodsorderDetail::getOrderId,i.getOrderId()));
            goodsorderDetailList.stream().forEach(s ->{
                if(StringUtils.isNotBlank(s.getImgurl())){
                    s.setImgurl(fullUrl + s.getImgurl());
                }
            });
            i.setMemberOrderDetailResponseList(memberOrderDetailResponseList);
            i.setGoodsorderDetailList(goodsorderDetailList);
        });
        return page;
    }
    @Override
    public MemberOrderResponse getGoodsOrderDetailByCode(String exchangeCode){
        Goodsorder goodsorder = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getExchangeCode,exchangeCode)
                .last(" limit 1")
        );
        if(Objects.isNull(goodsorder)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到订单信息");
        }
        return this.getGoodsOrderDetail(goodsorder.getId());
    }
    /**
@@ -1205,23 +1081,34 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到订单信息");
        }
        if(memberOrderResponse.getOrderStatus().equals(Constants.OrderStatus.WAIT_PAY.getKey())){
            memberOrderResponse.setCountdown(memberOrderResponse.getCancelDate().getTime()-System.currentTimeMillis());
            memberOrderResponse.setCountdown(memberOrderResponse.getCancelDate().getTime()>System.currentTimeMillis()?memberOrderResponse.getCancelDate().getTime()-System.currentTimeMillis():Constants.ZERO);
        }
        List<MemberOrderDetailResponse> memberOrderDetailResponseList = goodsorderDetailMapper.getDetailList(memberOrderResponse.getOrderId());
        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
        memberOrderDetailResponseList.forEach(j->{
            j.setImgUrl(fullUrl + j.getImgUrl());
        List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
                .eq(GoodsorderDetail::getOrderId,memberOrderResponse.getOrderId()));
        goodsorderDetailList.stream().forEach(s ->{
            if(StringUtils.isNotBlank(s.getImgurl())){
                s.setImgurl(fullUrl + s.getImgurl());
            }
        });
        memberOrderResponse.setMemberOrderDetailResponseList(memberOrderDetailResponseList);
        if(Constants.equalsInteger(memberOrderResponse.getReceiveType(),Constants.ONE)){
            memberOrderResponse.setShopInfo(shopMapper.selectById(memberOrderResponse.getShopId()));
        memberOrderResponse.setGoodsorderDetailList(goodsorderDetailList);
        Shop shop = shopMapper.selectById(memberOrderResponse.getShopId());
        if(Objects.nonNull(shop)){
            shop.setPassword(null);
            shop.setUsername(null);
            shop.setAreas(AreasServiceImpl.getAddressByAreaId(shop.getAreaId()));
            memberOrderResponse.setShopInfo(shop);
        }
        Member member = memberMapper.selectById(memberOrderResponse.getMemberId());
        if(Objects.nonNull(member)){
            String memberfullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode();
            member.setImgFullUrl(memberfullUrl + member.getImgurl());
            if(StringUtils.isNotBlank(member.getImgurl())){
                member.setImgFullUrl(memberfullUrl + member.getImgurl());
            }
            memberOrderResponse.setMember(member);
        }
        return memberOrderResponse;
@@ -1303,7 +1190,7 @@
            dealIntegralRequest.setMemberId(goodsorder.getMemberId());
            dealIntegralRequest.setObjId(goodsorder.getId());
            dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_CANCEL);
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_CANCEL);
            integralService.dealIntegral(dealIntegralRequest);
        }
        //订单信息取消
@@ -1327,11 +1214,7 @@
                }
            }
        }
        SendWxMessage.orderCancel(goodsorder,memberMapper.selectById(goodsorder.getMemberId()),goodsName);
        //查询优惠券信息记录
        if(!Objects.isNull(goodsorder.getCouponId())){
            MemberCoupon memberCoupon = memberCouponMapper.selectById(goodsorder.getCouponId());
@@ -1354,11 +1237,11 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_PAY.getKey())
        || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())
        || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey()) )){
            || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) )){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订单取消失败:订单状态已流转!");
        }
        if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO){
        if(Constants.formatBigdecimal(goodsorder.getPrice()).compareTo(BigDecimal.ZERO)>Constants.ZERO
                && Constants.equalsObject(goodsorder.getPayStatus(),Constants.ONE) ){
            //微信现金退款
            String refundCode = WxMiniUtilService.wxRefund(goodsorder.getCode().toString(), goodsorder.getPrice(), goodsorder.getPrice());
            Fund fund = new Fund();
@@ -1375,6 +1258,7 @@
            fund.setNum(goodsorder.getPrice());
            fundMapper.insert(fund);
        }
        //订单已支付状态 , 使用了积分 且积分使用大于0
        if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
            //更新余额信息 添加积分变动记录
            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
@@ -1383,7 +1267,7 @@
            dealIntegralRequest.setMemberId(goodsorder.getMemberId());
            dealIntegralRequest.setObjId(goodsorder.getId());
            dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_CANCEL);
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_CANCEL);
            integralService.dealIntegral(dealIntegralRequest);
        }
        //订单信息取消
@@ -1408,7 +1292,10 @@
            }
        }
        //SendWxMessage.orderCancel(goodsorder,memberMapper.selectById(goodsorder.getMemberId()),goodsName);
        // 用户主动取消 发送经销商站内消息
        if(Objects.nonNull(goodsorder.getPickUpShopId())&&StringUtils.isBlank(cancelInfo)){
            noticeService.orderCancelNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getCode().toString());
        }
        //查询优惠券信息记录
        if(!Objects.isNull(goodsorder.getCouponId())){
@@ -1418,11 +1305,9 @@
                memberCouponMapper.updateById(memberCoupon);
            }
        }
    }
    public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){
        List<MemberCoupon> memberCouponList = new ArrayList<>();
@@ -1470,6 +1355,7 @@
        OrderPayConfirmResponse orderPayConfirmResponse = new OrderPayConfirmResponse();
        List<Goods> goodsList = goodsMapper.selectJoinList(Goods.class,
                new MPJLambdaWrapper<Goods>()
                        .selectAll(Goods.class)
                        .selectAs(GoodsSku::getPrice,Goods::getSkuPrice)
                        .selectAs(GoodsSku::getId,Goods::getSkuId)
                        .selectAs(GoodsSku::getIntegralRate,Goods::getDeductRata)
@@ -1480,8 +1366,17 @@
        if(CollectionUtils.isEmpty(goodsList)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未匹配到商品信息");
        }
        List<OrderGoodsCalculateResponse> goodsCalculateList = ListUtil.copyProperties(goodsList,OrderGoodsCalculateResponse::new);
        List<OrderGoodsCalculateResponse> goodsCalculateList = ListUtil.copyProperties(goodsList,OrderGoodsCalculateResponse::new);
        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
        for (OrderGoodsCalculateResponse orderGoodsCalculateResponse:goodsCalculateList) {
            orderGoodsCalculateResponse.setSkuImg(StringUtils.isNotBlank(orderGoodsCalculateResponse.getSkuImg())?fullUrl+orderGoodsCalculateResponse.getSkuImg():null);
            if(Objects.isNull(orderGoodsCalculateResponse.getCouponDeductCash())){
                orderGoodsCalculateResponse.setCouponDeductCash(BigDecimal.ZERO);
            }
//            orderGoodsCalculateResponse.setIntegralDeductCash(BigDecimal.ZERO);
        }
        //订单总金额
        BigDecimal amount = BigDecimal.ZERO;
        //优惠券抵扣金额
@@ -1514,7 +1409,7 @@
                if(CollectionUtils.isEmpty(memberCoupons)){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"选择的优惠券无效,请刷新重试");
                }
                memberCoupon = memberCouponList.get(Constants.ZERO);
                memberCoupon = memberCoupons.get(Constants.ZERO);
                couponAmount = memberCoupon.getValidAmount();
                memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
                orderPayConfirmResponse.setMemberCoupon(memberCoupon);
@@ -1621,12 +1516,12 @@
        if(Constants.equalsInteger(type,Constants.ZERO)){
            if( Constants.equalsInteger(platformConfigDTO.getReturnMemberIntegralStatus(),Constants.ZERO)
                && Objects.nonNull(platformConfigDTO.getReturnMemberIntegral())){
                integralBack = payAmount.divide(platformConfigDTO.getReturnMemberIntegral(),0,BigDecimal.ROUND_DOWN);
                integralBack = payAmount.multiply(platformConfigDTO.getReturnMemberIntegral()).divide(BigDecimal.ONE,0,BigDecimal.ROUND_DOWN);
            }
        }else{
            if( Constants.equalsInteger(platformConfigDTO.getReturnShopIntegralStatus(),Constants.ZERO)
                    && Objects.nonNull(platformConfigDTO.getReturnShopIntegral())){
                integralBack = payAmount.divide(platformConfigDTO.getReturnShopIntegral(),0,BigDecimal.ROUND_DOWN);
                integralBack = payAmount.multiply(platformConfigDTO.getReturnShopIntegral()).divide(BigDecimal.ONE,0,BigDecimal.ROUND_DOWN);
            }
        }
        return integralBack;
@@ -1642,14 +1537,14 @@
     */
    public BigDecimal  calculateIntegralRata(OrderPayConfirmResponse orderPayConfirmResponse,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalIntegral){
        //当前选择商品最大可用积分抵扣的金额
        BigDecimal maxDeductionCash =  goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(i.getCouponDeductCash())
        BigDecimal maxDeductionCash =  goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(Objects.isNull(i.getCouponDeductCash())?BigDecimal.ZERO:i.getCouponDeductCash())
                .multiply(i.getDeductRata()).multiply(new BigDecimal("0.01"))).reduce(BigDecimal.ZERO,BigDecimal::add);
        //积分 - 现金 比例
        //积分-现金兑换比例(XXX积分抵扣1元)
        BigDecimal cashToIntegralRata = new BigDecimal(systemDictDataBiz.queryByCode(Constants.SHOP_CONFIG,Constants.INTEGRAL_EXCHANGE_CASH_RATA).getCode());
        //当前选择商品抵扣需要使用的积分
        BigDecimal maxDeductionIntegral =  maxDeductionCash.multiply(cashToIntegralRata).multiply(new BigDecimal("100"));
        BigDecimal maxDeductionIntegral =  maxDeductionCash.multiply(cashToIntegralRata);
        //获取当前需要支付的现金总额
        BigDecimal payCash =  goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(i.getCouponDeductCash())).reduce(BigDecimal.ZERO,BigDecimal::add);
        BigDecimal payCash =  goodsCalculateList.stream().map(i->i.getSkuAmount().subtract(Objects.isNull(i.getCouponDeductCash())?BigDecimal.ZERO:i.getCouponDeductCash())).reduce(BigDecimal.ZERO,BigDecimal::add);
        //如果实际积分少于最大需要积分 需要计算比例占比 去对应添加至对应的商品里
        //循环下单商品列表 计算应该使用的积分值
@@ -1667,7 +1562,7 @@
        //剩余积分值
        orderPayConfirmResponse.setSurplusIntegral(totalIntegral);
        //实际抵扣使用积分
        orderPayConfirmResponse.setDeductIntegral(totalIntegral.compareTo(maxDeductionCash)<=Constants.ZERO?totalIntegral:maxDeductionIntegral);
        orderPayConfirmResponse.setDeductIntegral(totalIntegral.compareTo(maxDeductionIntegral)<=Constants.ZERO?totalIntegral:maxDeductionIntegral);
        return realDeductionCash;
    }
@@ -1735,6 +1630,7 @@
     * @param memberId
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void affirmOrder(Integer orderId,Integer memberId){
        Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
        if(!goodsorder.getMemberId().equals(memberId)){
@@ -1797,6 +1693,7 @@
        String couponNames = "";
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(shareCouponRewardList)){
            List<MemberCoupon> memberCouponList = new ArrayList<>();
            List<CouponNoticeRequest> requestList = new ArrayList<>();
            for (JSONObject jsonObject:shareCouponRewardList) {
                Integer couponId = jsonObject.getInteger("couponId");
                Integer num = jsonObject.getInteger("num");
@@ -1810,9 +1707,19 @@
                }
                couponIds = couponIds + (StringUtils.isBlank(couponIds)? ",":"" )+ couponId ;
                couponNames = couponNames + (StringUtils.isBlank(couponNames)? ",":"" )+ coupon.getName() ;
                CouponNoticeRequest couponNoticeRequest = new CouponNoticeRequest();
                couponNoticeRequest.setMemberCoupon(memberCoupon);
                couponNoticeRequest.setNum(num);
                requestList.add(couponNoticeRequest);
            }
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
                memberCouponJoinMapper.insert(memberCouponList);
            }
            if(CollectionUtils.isNotEmpty(requestList)){
                //发送站内信
                noticeService.couponNotice(inviteMember.getId(),requestList);
            }
        }
        inviteRecordMapper.update(new UpdateWrapper<InviteRecord>().lambda()
@@ -1833,10 +1740,12 @@
     * @param memberId
     */
    @Override
    public void orderWriteOff(String exchangeCode,Integer memberId){
        Goodsorder goodsorder = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda()
                .eq(Goodsorder::getExchangeCode,exchangeCode)
                .eq(Goodsorder::getIsdeleted,Constants.ZERO).last("limit 1 "));
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void orderWriteOff(Integer orderId,Integer memberId){
        if(Objects.isNull(orderId)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
        if(Objects.isNull(goodsorder)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
@@ -1850,9 +1759,9 @@
        if(Objects.isNull(shop)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到订单关联经销商信息,请联系管理员");
        }
        if(!Constants.equalsInteger(shop.getMemberId(),memberId)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"["+shop.getName()+"]非您绑定的经销商,无法进行该操作!");
        }
//        if(!Constants.equalsInteger(shop.getMemberId(),memberId)){
//            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"["+shop.getName()+"]非您绑定的经销商,无法进行该操作!");
//        }
        goodsorder.setStatus(Constants.OrderStatus.DONE.getKey());
        goodsorder.setDoneDate(new Date());
        goodsorderMapper.updateById(goodsorder);
@@ -1879,7 +1788,7 @@
            return;
        }
        BigDecimal backIntegral = getBackIntegral(goodsorder.getPrice(),Constants.ONE);
        if (backIntegral.compareTo(BigDecimal.ZERO) >= 0) {
        if (backIntegral.compareTo(BigDecimal.ZERO) > 0) {
            //更新余额信息 添加积分变动记录
            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
            dealIntegralRequest.setIntegralNum(backIntegral);
@@ -1887,7 +1796,11 @@
            dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
            dealIntegralRequest.setObjId(goodsorder.getId());
            dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.ORDER_DONATE);
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER);
            Member member = memberMapper.selectById(goodsorder.getMemberId());
            if(Objects.nonNull(member)){
                dealIntegralRequest.setParam1(member.getNickname());
            }
            integralService.dealShopIntegral(dealIntegralRequest);
        }
    }
@@ -1908,6 +1821,7 @@
            dealIntegralRequest.setObjId(goodsorder.getId());
            dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.ORDER_DONE_AMOUNT);
            dealIntegralRequest.setParam1(goodsorder.getCode().toString());
            integralService.dealShopAmount(dealIntegralRequest);
        }
    }
@@ -1923,12 +1837,12 @@
            return;
        }
        BigDecimal backIntegral = getBackIntegral(goodsorder.getPrice(),Constants.ZERO);
        if (backIntegral.compareTo(BigDecimal.ZERO) >= 0) {
        if (backIntegral.compareTo(BigDecimal.ZERO) > 0) {
            //更新余额信息 添加积分变动记录
            DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
            dealIntegralRequest.setIntegralNum(backIntegral);
            dealIntegralRequest.setDealType(Constants.ZERO);
            dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
            dealIntegralRequest.setMemberId(goodsorder.getMemberId());
            dealIntegralRequest.setObjId(goodsorder.getId());
            dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
            dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.ORDER_DONATE);
@@ -1975,6 +1889,19 @@
        goodsorder.setIsComment(Constants.ONE);
        goodsorderMapper.updateById(goodsorder);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public  void orderRefund(Goodsorder param){
        Goodsorder goodsorder = goodsorderMapper.selectById(param.getId());
        if(!goodsorder.getMemberId().equals(goodsorder.getMemberId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:用户信息匹配失败!");
        }
        if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单未完成,无法退款!");
        }
    }
    @Override
@@ -1999,7 +1926,7 @@
        ));
        myPageResponse.setAfterOrders(aftersaleMapper.selectCount(new QueryWrapper<Aftersale>()
                .apply(" ID in ( select g.id from goodsorder g where g.MEMBER_ID = '"+memberId+"'  ) ")
                .notIn("STATUS",Constants.AftersaleStatus.DONE,Constants.AftersaleStatus.SHOP_REFUSE,Constants.AftersaleStatus.CANCEL)
                .notIn("STATUS",Constants.AftersaleStatus.DONE.getKey(),Constants.AftersaleStatus.SHOP_REFUSE.getKey(),Constants.AftersaleStatus.CANCEL.getKey())
        ));
@@ -2209,6 +2136,13 @@
                        .eq(Collect::getMemberId,member.getId())
                )
        );
        homeInfoResponse.setUnRead(
                noticeMapper.selectCount(new QueryWrapper<Notice>().lambda()
                        .eq(Notice::getIsdeleted,Constants.ZERO)
                        .eq(Notice::getMemberId,member.getId())
                        .eq(Notice::getStatus,Constants.ZERO)
                )>=Constants.ZERO?Constants.ZERO:Constants.ONE
        );
        return homeInfoResponse;
    }
@@ -2223,12 +2157,13 @@
        Utils.MP.blankToNull(pageWrap.getModel());
        ShopOrderRequest model = pageWrap.getModel();
        queryWrapper.selectAll(Goodsorder.class);
//        queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName);
//        queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone);
//        queryWrapper.selectAs(Member::getImgurl,Goodsorder::getImgurl);
        queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
        queryWrapper.selectAs(Shop::getPhone,Goodsorder::getShopPhone);
        queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId);
        queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(Objects.nonNull(model.getStatus()),Goodsorder::getStatus,model.getStatus());
        queryWrapper.eq(Objects.nonNull(model.getShopId()),Goodsorder::getDistributionShopId,model.getShopId());
        queryWrapper.eq(Objects.nonNull(model.getShopId())&&Constants.equalsInteger(model.getUserType(),Constants.ONE),Goodsorder::getDistributionShopId,model.getShopId());
        queryWrapper.eq(Objects.nonNull(model.getShopId())&&Constants.equalsInteger(model.getUserType(),Constants.ZERO),Goodsorder::getMemberId,model.getShopId());
        queryWrapper.orderByDesc(Goodsorder::getCreateDate);
        IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
@@ -2241,8 +2176,8 @@
            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
                    .eq(GoodsorderDetail::getOrderId,goodsorder.getId()));
            goodsorderDetailList.stream().forEach(s ->{
                if(StringUtils.isBlank(s.getImgurl())){
                    s.setImgurl(path + s.getGoodsImgurl());
                if(StringUtils.isNotBlank(s.getImgurl())){
                    s.setImgurl(path + s.getImgurl());
                }
            });
            goodsorder.setGoodsorderDetailList(goodsorderDetailList);
@@ -2252,4 +2187,27 @@
//    public IPage<Shop> getGoodsorderPageForShop(PageWrap pageWrap,String shopId) {
//        IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
//
//        IPage<Goodsorder> goodsorderPage = goodsorderJoinMapper.selectJoinPage(page,Goodsorder.class,
//                new MPJLambdaWrapper<Goodsorder>()
//                        .selectAll(Goodsorder.class)
//                        .selectAs(Member::getPhone,Goodsorder::getPhone)
//                        .selectAs(Member::getNickname,Goodsorder::getNickName)
//                        .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId)
//                        .eq(Goodsorder::getIsdeleted,Constants.ZERO)
//                        .eq(Goodsorder::getDistributionShopId,shopId)
//                        .eq(Goodsorder::getStatus,Constants.OrderStatus.PAY_DONE.getKey())
//                        .eq(Goodsorder::getReceiveType,Constants.ONE)
//                        .orderByDesc(Goodsorder::getId)
//        );
//
//
//
//    }
}