rk
13 小时以前 a598218a73cc7736925517b12db6a861bd971f73
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
@@ -24,6 +25,7 @@
import com.doumee.dao.web.request.*;
import com.doumee.dao.web.request.goods.*;
import com.doumee.dao.web.response.HomeInfoResponse;
import com.doumee.dao.web.response.MailConfigResponse;
import com.doumee.dao.web.response.MyPageResponse;
import com.doumee.dao.web.response.goods.*;
import com.doumee.service.business.AreasService;
@@ -37,9 +39,12 @@
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.models.auth.In;
import okhttp3.Address;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.C;
@@ -73,6 +78,8 @@
    @Autowired
    private GoodsorderMapper goodsorderMapper;
    @Autowired
    private UserActionMapper userActionMapper;
    @Autowired
    private ActivitySignMapper activitySignMapper;
    @Autowired
    private AftersaleMapper  aftersaleMapper;
@@ -80,6 +87,12 @@
    private ShopGoodsRelationMapper shopGoodsRelationMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private CouponMapper couponMapper;
    @Autowired
    private MemberCouponJoinMapper memberCouponJoinMapper;
    @Autowired
    private InviteRecordMapper inviteRecordMapper;
    @Autowired
    private GoodsorderDetailMapper goodsorderDetailMapper;
@@ -95,6 +108,9 @@
    @Autowired
    private ShopMapper shopMapper;
    @Autowired
    private LabelsMapper labelsMapper;
    @Autowired
    private ShopGoodsRelationMapper relationMapper;
@@ -137,6 +153,9 @@
    @Autowired
    private AreasService areasService;
    @Autowired
    private AreasMapper areasMapper;
    @Autowired
    private GoodsorderDetailJoinMapper goodsorderDetailJoinMapper;
@@ -194,7 +213,7 @@
        goodsorderMapper.updateById(goodsorder);
    }
    @Override
    /*@Override
    public IPage<Shop> getShopPage(PageWrap<Shop> pageWrap) {
        IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        Shop model = pageWrap.getModel();
@@ -213,7 +232,7 @@
                        .like(StringUtils.isNotBlank(model.getName()),Shop::getName,model.getName())
                .orderByAsc(" distance ")
        );
    }
    }*/
    /**
@@ -223,22 +242,47 @@
    @Override
    public void orderSendOutGoods(Goodsorder goodsorder) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(StringUtils.isBlank(goodsorder.getKdCode()) ||StringUtils.isBlank(goodsorder.getKdName())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Goodsorder query=goodsorderMapper.selectById(goodsorder.getId());
        if(query==null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),ResponseStatus.DATA_EMPTY.getMessage());
        }
        if(!Constants.equalsInteger(query.getStatus(),Constants.ONE)){
        if(!Constants.equalsInteger(query.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())
                && !Constants.equalsInteger(query.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订单状态已流转,请刷新页面!");
        }
        goodsorder.setEditDate(new Date());
        goodsorder.setEditor(user.getId());
        goodsorder.setKdDate(new Date());
        goodsorder.setKdUser(user.getId());
        goodsorder.setStatus(Constants.OrderStatus.WAIT_RECEIVE.getKey());
        goodsorderMapper.updateById(goodsorder);
        if(!Constants.equalsInteger(query.getReceiveType(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"该订单有客户到店自提,无需发货操作!");
        }
        Goodsorder update = new Goodsorder();
        update.setId(goodsorder.getId());
        update.setKdName(goodsorder.getKdName());
        update.setKdCode(goodsorder.getKdCode());
        update.setKdInfo(goodsorder.getKdInfo());
        update.setKdId(goodsorder.getKdId());
        update.setEditDate(new Date());
        update.setEditor(user.getId());
        update.setKdDate(new Date());
        update.setKdUser(user.getId());
        update.setStatus(Constants.OrderStatus.WAIT_RECEIVE.getKey());
        goodsorderMapper.updateById(update);
        // TODO 发送微信模板消息
        if(Constants.equalsInteger(query.getStatus(), Constants.OrderStatus.WAIT_RECEIVE.getKey())){
            //如果是快递变更
            UserActionServiceImpl.saveUserActionBiz(user,query.getId(),
                    Constants.UserActionType.CHANGE_ORDER_KD,
                    userActionMapper,
                    update.getEditDate(),
                    new String[]{user.getUsername(), DateUtil.getPlusTime2(update.getEditDate()),"备注:"+goodsorder.getKdInfo()},
                    JSONObject.toJSONString(update) ,
                    query.getKdName()+"(单号:"+query.getKdCode()+")",
                    goodsorder.getKdName()+"(单号:"+goodsorder.getKdCode()+")");
        }
      /*  // TODO 发送微信模板消息
        Member member=memberMapper.selectById(query.getMemberId());
        MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
@@ -246,7 +290,7 @@
        queryWrapper.orderByDesc(GoodsorderDetail::getCreateDate);
        queryWrapper.last("limit 1");
        GoodsorderDetail goodsorderDetail=goodsorderDetailMapper.selectOne(queryWrapper);
        SendWxMessage.orderSendNotice(goodsorder,goodsorderDetail!=null?goodsorderDetail.getName():"",member);
        SendWxMessage.orderSendNotice(goodsorder,goodsorderDetail!=null?goodsorderDetail.getName():"",member);*/
    }
@@ -364,12 +408,14 @@
        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);
            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailMapper.selectList(queryWrapper);
            String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
@@ -409,82 +455,195 @@
        IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.selectAll(Goodsorder.class);
        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.eq(Addr::getIsDefault,Constants.ONE);
        queryWrapper.eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode());
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickName()),ms->ms.like(Goodsorder::getLinkname,pageWrap.getModel().getNickName())
         .or().like(Goodsorder::getLinkphone,pageWrap.getModel().getNickName())
        );
        queryWrapper.ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime());
        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime());
        queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
        queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
        initPageQueryWrapper(queryWrapper,pageWrap);
        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus());
        queryWrapper.eq(pageWrap.getModel().getIsdeleted()==null,Goodsorder::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(pageWrap.getModel().getIsdeleted()!=null,Goodsorder::getIsdeleted,pageWrap.getModel().getIsdeleted());
        queryWrapper.orderByDesc(Goodsorder::getCreateDate);
        IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
        List<Integer> idList = new ArrayList<>();
        for(Goodsorder model:result.getRecords()){
            model.setResourcePath(path);
            //订单总金额等于实付金额加优惠金额,再减去退款金额
            BigDecimal sumMoney=new BigDecimal(0);
            if(model.getPrice()!=null){
                if(model.getIntegral()!=null){
                    sumMoney=model.getPrice().add(model.getIntegral());
                    if(Constants.equalsInteger(model.getIsAftersale(),Constants.ONE)&&model.getAftersaleMoney()!=null){
                        sumMoney.subtract(model.getAftersaleMoney());
                        model.setOrderMoneyCount(sumMoney);
                    }else{
                        model.setOrderMoneyCount(sumMoney);
                    }
                }else{
                    model.setOrderMoneyCount(model.getPrice());
                }
            }else   if(model.getIntegral()!=null){
                sumMoney=model.getIntegral();
            idList.add(model.getId());
        }
        if(idList.size()>0){
            dealOrderDetailsBiz(idList,result);//查询订单明细
        }
        PageData<Goodsorder> rr =  PageData.from(result);
        if(pageWrap.getPage() == 1){
            //如果查询第一页,做数据统计
            rr.setCountData(dealCountOrderNum(pageWrap));
        }
        return rr;
    }
    private void initPageQueryWrapper(MPJLambdaWrapper<Goodsorder> queryWrapper, PageWrap<Goodsorder> pageWrap) {
        queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId);
        queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode());
        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getName,pageWrap.getModel().getShopName());
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickName()),ms->ms.like(Goodsorder::getLinkname,pageWrap.getModel().getNickName())
                .or().like(Goodsorder::getLinkphone,pageWrap.getModel().getNickName())
        );
        queryWrapper.ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime());
        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime());
        queryWrapper.eq(pageWrap.getModel().getReceiveType()!=null,Goodsorder::getReceiveType,pageWrap.getModel().getReceiveType());
        queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
    }
    private Goodsorder dealCountOrderNum( PageWrap<Goodsorder>  pageWrap) {
        MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
        initPageQueryWrapper(queryWrapper,pageWrap);
        Goodsorder goodsorder = new Goodsorder();
        queryWrapper.eq( Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey());
        goodsorder.setWaitPayNum(goodsorderJoinMapper.selectJoinCount(queryWrapper));//待支付
        queryWrapper = new MPJLambdaWrapper<>();
        initPageQueryWrapper(queryWrapper,pageWrap);
        queryWrapper.eq( Goodsorder::getStatus,Constants.OrderStatus.PAY_DONE.getKey());
        goodsorder.setWaitKdNum(goodsorderJoinMapper.selectJoinCount(queryWrapper));//待发货,待自提
        queryWrapper = new MPJLambdaWrapper<>();
        initPageQueryWrapper(queryWrapper,pageWrap);
        queryWrapper.eq( Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey());
        goodsorder.setWaitDoneNum(goodsorderJoinMapper.selectJoinCount(queryWrapper));//待收货
        return goodsorder;
    }
    private void dealOrderDetailsBiz(List<Integer> idList, IPage<Goodsorder> result) {
        MPJLambdaWrapper<GoodsorderDetail> queryGoods = new MPJLambdaWrapper<>();
        queryGoods.selectAll(GoodsorderDetail.class);
        queryGoods.selectAs(Goods::getImgurl,GoodsorderDetail::getGoodsImgurl);
        queryGoods.selectAs(Labels::getName, GoodsorderDetail::getCategoryName);
        queryGoods.select("ls.name as parentName ");
        queryGoods.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
        queryGoods.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
        queryGoods.leftJoin(Labels.class, Labels::getId, Goods::getCategoryId);
        queryGoods.leftJoin("labels ls on ls.id=t2.PARENT_CATEGORY_ID");
        queryGoods.in(GoodsorderDetail::getOrderId,idList);
        queryGoods.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
        List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
        for(Goodsorder model :result.getRecords()){
            initOrderPrice(model);
            model.setGoodsorderDetailList(getDetailListById(fullUrl,goodsorderDetailList,model.getId()));
        }
    }
    private void initOrderPrice(Goodsorder model) {
        //订单总金额等于实付金额加优惠金额,再减去退款金额
        BigDecimal sumMoney=new BigDecimal(0);
        if(model.getPrice()!=null){
            if(model.getIntegral()!=null){
                sumMoney=model.getPrice().add(model.getIntegral());
                if(Constants.equalsInteger(model.getIsAftersale(),Constants.ONE)&&model.getAftersaleMoney()!=null){
                    sumMoney.subtract(model.getAftersaleMoney());
                    model.setOrderMoneyCount(sumMoney);
                }else{
                    model.setOrderMoneyCount(sumMoney);
                }
            }else{
                model.setOrderMoneyCount(model.getPrice());
            }
        }else   if(model.getIntegral()!=null){
            sumMoney=model.getIntegral();
            if(Constants.equalsInteger(model.getIsAftersale(),Constants.ONE)&&model.getAftersaleMoney()!=null){
                sumMoney.subtract(model.getAftersaleMoney());
                model.setOrderMoneyCount(sumMoney);
            }else{
                model.setOrderMoneyCount(sumMoney);
            }
        }
    }
    @Override
    public PageData<Goodsorder> findPageShop(PageWrap<Goodsorder> pageWrap) {
        IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.selectAll(Goodsorder.class)
         .eq(pageWrap.getModel().getDistributionShopId()!=null,Goodsorder::getDistributionShopId,pageWrap.getModel().getDistributionShopId())
         .eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus())
         .eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode())
         .ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime())
         .le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime())
         .eq(Goodsorder::getIsdeleted,Constants.ZERO)
         .exists(StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),
                "select d.id from goodsorder_detail d where d.isdeleted=0 and d.order_id=t.id and (d.goods_sku_id ='"+pageWrap.getModel().getGoodsName()+"' or d.name like '%"+pageWrap.getModel().getGoodsName()+"%')")
         .orderByDesc(Goodsorder::getCreateDate);
        IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
        PageData<Goodsorder> rr = PageData.from(result);
        if(result!=null && result.getRecords().size()>0) {
            List<Integer> idList = new ArrayList<>();
            for(Goodsorder model:result.getRecords()){
                idList.add(model.getId());
            }
            MPJLambdaWrapper<GoodsorderDetail> queryGoods = new MPJLambdaWrapper<>();
            queryGoods.selectAll(GoodsorderDetail.class);
            queryGoods.selectAs(Goods::getImgurl,GoodsorderDetail::getGoodsImgurl);
            queryGoods.selectAs(Labels::getName, GoodsorderDetail::getCategoryName);
            queryGoods.select("ls.name as parentName ");
            queryGoods.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
            queryGoods.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
            queryGoods.leftJoin(Labels.class, Labels::getId, Goods::getCategoryId);
            queryGoods.leftJoin("labels ls on ls.id=t2.PARENT_CATEGORY_ID");
            queryGoods.eq(GoodsorderDetail::getOrderId,model.getId());
            queryGoods.in(GoodsorderDetail::getOrderId,idList);
            queryGoods.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
           List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
           goodsorderDetailList.stream().forEach(s ->{
               if(StringUtils.isBlank(s.getImgurl())){
                   s.setImgurl(s.getGoodsImgurl());
               }
           });
           model.setGoodsorderDetailList(goodsorderDetailList);
            queryGoods.and( StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),w ->{
                w.like(GoodsorderDetail::getName,pageWrap.getModel().getGoodsName() ).or().eq(GoodsorderDetail::getGoodsSkuId,pageWrap.getModel().getGoodsName());
            } );
            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
            String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
            for(Goodsorder model:result.getRecords()){
                model.setGoodsorderDetailList(getDetailListById(fullUrl,goodsorderDetailList,model.getId()));
            }
            if(pageWrap.getPage() == 1 && pageWrap.getModel().getDistributionShopId()!=null){
                //如果查询第一页,做经销商销售信息统计业务查询
                Goodsorder count = new Goodsorder();
                count.setOrderCount(rr.getTotal());
                List<GoodsorderDetail> list =  goodsorderDetailJoinMapper.selectJoinList(GoodsorderDetail.class,new MPJLambdaWrapper<GoodsorderDetail>()
                        .selectAll(GoodsorderDetail.class)
                        .leftJoin(Goodsorder.class,Goodsorder::getId,GoodsorderDetail::getOrderId)
                        .eq(pageWrap.getModel().getDistributionShopId()!=null,Goodsorder::getDistributionShopId,pageWrap.getModel().getDistributionShopId())
                        .eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus())
                        .and( StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),w ->{
                            w.like(GoodsorderDetail::getName,pageWrap.getModel().getGoodsName() ).or().eq(GoodsorderDetail::getGoodsSkuId,pageWrap.getModel().getGoodsName());
                        } )
                        .eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode())
                        .ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime())
                        .le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime())
                        .eq(Goodsorder::getIsdeleted,Constants.ZERO));
                if(list!=null && list.size()>0){
                    //商品总量
                    for (GoodsorderDetail d : list){
                        count.setGoodsNum(Constants.formatIntegerNum(count.getGoodsNum()) + Constants.formatIntegerNum(d.getGoodsNum()));
                        count.setOrderMoneyCount(Constants.formatBigdecimal(count.getOrderMoneyCount())
                                .add(Constants.formatBigdecimal(d.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(d.getGoodsNum())))));
                    }
                }
                rr.setCountData(count);
            }
        }
        return PageData.from(result);
        return rr;
    }
    private List<GoodsorderDetail> getDetailListById( String fullUrl ,List<GoodsorderDetail> goodsorderDetailList, Integer id) {
        List<GoodsorderDetail> list = new ArrayList<>();
        if(goodsorderDetailList!=null && goodsorderDetailList.size()>0){
            for(GoodsorderDetail d : goodsorderDetailList){
                if(Constants.equalsInteger(id,d.getOrderId())){
                    if(d.getImgurl()!=null){
                        d.setImgurl(fullUrl+d.getImgurl());
                    }
                    list.add(d);
                }
            }
        }
        return list;
    }
@@ -770,6 +929,7 @@
            goodsorder.setDistributionShopId(shop.getId());
            if(Objects.isNull(member.getBindShopId())){
                member.setBindShopId(shop.getId());
                member.setBindShopDate(new Date());
            }
        }
@@ -793,8 +953,7 @@
        goodsorder.setPrice(orderPayConfirmResponse.getPayAmount());
        goodsorder.setTotalPrice(orderPayConfirmResponse.getAmount());
        goodsorder.setUseIntegral(orderPayConfirmResponse.getDeductIntegral());
        goodsorder.setIntegral(goodsorder.getUseIntegral());
        goodsorder.setIntegralPrice(orderPayConfirmResponse.getIntegralAmount());
        goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount());
        goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount());
        goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE);
        if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
@@ -807,6 +966,8 @@
                    .eq(MemberCoupon::getId,orderPayConfirmResponse.getMemberCoupon().getId())
            );
        }
        goodsorder.setReturnCustomerIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ONE));
        goodsorder.setReturnMemberIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ZERO));
        goodsorderMapper.insert(goodsorder);
        List<OrderGoodsCalculateResponse> goodsCalculateList  = orderPayConfirmResponse.getGoodsCalculateList();
        if(CollectionUtils.isEmpty(goodsCalculateList)){
@@ -1055,6 +1216,13 @@
        memberOrderResponse.setMemberOrderDetailResponseList(memberOrderDetailResponseList);
        if(Constants.equalsInteger(memberOrderResponse.getReceiveType(),Constants.ONE)){
            memberOrderResponse.setShopInfo(shopMapper.selectById(memberOrderResponse.getShopId()));
        }
        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());
            memberOrderResponse.setMember(member);
        }
        return memberOrderResponse;
    }
@@ -1375,14 +1543,44 @@
        //邮费金额
        if(Objects.nonNull(request.getReceiveType())){
            if(Constants.equalsInteger(request.getReceiveType(),Constants.ZERO)){
                //TODO  根据收货地址 查询运费配置
                MailConfigResponse mailConfigResponse = systemDictDataBiz.getMailConfig();
                if(Objects.nonNull(request.getAddressId())){
                    Addr addr = addrMapper.selectById(request.getAddressId());
                    if(Objects.isNull(addr)){
                        throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到收货地址信息");
                    }
                    Areas areas = areasMapper.selectOne(new QueryWrapper<Areas>().lambda()
                            .eq(Areas::getIsdeleted,Constants.ZERO)
                            .eq(Areas::getId,StringUtils.leftPad(addr.getAreaId().toString().substring(0,2),6,"0"))
                            .isNotNull(Areas::getYunFeeId)
                            .last(" limit 1 ")
                    );
                    if(Objects.nonNull(areas)){
                        Labels  labels = labelsMapper.selectById(areas.getYunFeeId());
                        if(Objects.nonNull(labels)&&StringUtils.isNotBlank(labels.getParam())){
                            //{weight0:10,fee0:10,weight1:10,fee1:10},{首重:10,首重运费:10,续重:10,续重费:10}
                            mailConfigResponse = JSONObject.parseObject(labels.getParam(),MailConfigResponse.class);
                        }
                    }
                }
                //根据收货地址 查询运费配置
                //计算商品信息总重量
                BigDecimal totalWeight = goodsCalculateList.stream().map(i->
                        i.getWeight().multiply(new BigDecimal(i.getGoodsNum().toString()))
                ).reduce(BigDecimal.ZERO,BigDecimal::add);
                //TODO 暂时无运费金额
                mailAmount = BigDecimal.ZERO;
                if(totalWeight.compareTo(mailConfigResponse.getWeight0())>=Constants.ZERO){
                    mailAmount = mailConfigResponse.getFee0();
                }else{
                    //超重重量
                    BigDecimal overWeight = totalWeight.subtract(mailConfigResponse.getWeight0());
                    if (overWeight.compareTo(mailConfigResponse.getWeight1()) >= Constants.ZERO) {
                        mailAmount = mailConfigResponse.getFee0().add(
                                mailConfigResponse.getFee1()
                                .multiply(overWeight.divide(mailConfigResponse.getWeight1(),2,RoundingMode.HALF_UP)));
                    }else{
                        mailAmount = mailConfigResponse.getFee0().add(mailConfigResponse.getFee1());
                    }
                }
                amount = amount.add(mailAmount);
            }
        }
@@ -1557,11 +1755,77 @@
        //根据订单类型进行积分赠送
        //下单确认收货 ,赠送经销商积分
        this.orderAddShopIntegral(goodsorder);
        //下单完成 根据信息确认是否需要赠送邀请者优惠券
        this.orderDoneRewardInviteCoupon(goodsorder);
        //消费者确认收货
        this.orderAddMemberIntegral(goodsorder);
        //经销商 结算金额
        this.orderAddShopCash(goodsorder);
    }
    /**
     * 订单确认收货,赠送邀请者优惠券
     * @param
     */
    public void orderDoneRewardInviteCoupon(Goodsorder goodsorder){
        PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
        if (platformConfigDTO.getShareCouponRewardStatus().equals(Constants.ONE)) {
            return;
        }
        Member member = memberMapper.selectById(goodsorder.getMemberId());
        if(Objects.isNull(member)||member.getIsdeleted().equals(Constants.ONE)){
            return;
        }
        InviteRecord inviteRecord = inviteRecordMapper.selectOne(new QueryWrapper<InviteRecord>().lambda()
                .eq(InviteRecord::getMemberId,member.getId())
                .eq(InviteRecord::getIsdeleted,Constants.ZERO)
                .eq(InviteRecord::getFirstOrderStatus,Constants.ZERO)
                .last("limit 1")
        );
        if(Objects.isNull(inviteRecord)){
            return;
        }
        Member inviteMember = memberMapper.selectById(inviteRecord.getInviteId());
        if(Objects.isNull(inviteMember)||inviteMember.getIsdeleted().equals(Constants.ONE)){
            return;
        }
        List<JSONObject> shareCouponRewardList = platformConfigDTO.getShareCouponRewardList();
        //[{"num":"2","couponId":6},{"num":"3","couponId":5}]
        String couponIds = "";
        String couponNames = "";
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(shareCouponRewardList)){
            List<MemberCoupon> memberCouponList = new ArrayList<>();
            for (JSONObject jsonObject:shareCouponRewardList) {
                Integer couponId = jsonObject.getInteger("couponId");
                Integer num = jsonObject.getInteger("num");
                Coupon coupon =  couponMapper.selectById(couponId);
                if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
                    continue;
                }
                MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,inviteMember,new Date(),Constants.ONE,null);
                for (int i = 0; i < num; i++) {
                    memberCouponList.add(memberCoupon);
                }
                couponIds = couponIds + (StringUtils.isBlank(couponIds)? ",":"" )+ couponId ;
                couponNames = couponNames + (StringUtils.isBlank(couponNames)? ",":"" )+ coupon.getName() ;
            }
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
                memberCouponJoinMapper.insert(memberCouponList);
            }
        }
        inviteRecordMapper.update(new UpdateWrapper<InviteRecord>().lambda()
                .set(InviteRecord::getFirstOrderStatus,Constants.ONE)
                .set(InviteRecord::getFirstFinishDate,new Date())
                .set(InviteRecord::getCouponIds,couponIds)
                .set(InviteRecord::getCouponNames,couponNames)
                .eq(InviteRecord::getId,inviteRecord.getId())
        );
    }
    /**
     * 订单核销
@@ -1596,6 +1860,8 @@
        if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
            //赠送消费者积分
            this.orderAddMemberIntegral(goodsorder);
            //下单完成 根据信息确认是否需要赠送邀请者优惠券
            this.orderDoneRewardInviteCoupon(goodsorder);
            //经销商 添加赠送积分
            this.orderAddShopIntegral(goodsorder);
            //经销商 结算金额
@@ -1786,10 +2052,12 @@
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.GOODSORDER_KEY,0);
        //加入redis缓存,刷新今天售后编号0开始
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,0);
        //加入redis缓存,刷新今天售后编号0开始
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,0);
    }
    @Override
    public  void refreshOrderCodes(){
        long countOrder = 0,countSign=0,countSale=0;
        long countOrder = 0,countSign=0,countSale=0,countWithdraw=0;
        QueryWrapper<Goodsorder> order = new QueryWrapper<>();
        order.apply(true, "TO_DAYS(NOW())=TO_DAYS(create_date)");
@@ -1818,6 +2086,22 @@
        }
        //加入redis缓存,刷新今天售后编号0开始
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,countSale);
        QueryWrapper<WithdrawRecord> withdraw = new QueryWrapper<>();
        withdraw.apply(true, "TO_DAYS(NOW())=TO_DAYS(create_date)");
        withdraw.orderByDesc(" CODE ");
        withdraw.last(" limit 1 ");
        Aftersale maxWithdrawOrder =  aftersaleMapper.selectOne(sale);
        if(!Objects.isNull(maxWithdrawOrder)){
            countWithdraw = Integer.valueOf(maxOrder.getCode().toString().substring(8,12));
        }
        //加入redis缓存,刷新今天售后编号0开始
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,countWithdraw);
    }
@@ -1899,11 +2183,13 @@
                        .eq(Goodsorder::getMemberId,member.getId())
                        .eq(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey()))
        );
        homeInfoResponse.setWaitPayNum(
                goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getIsdeleted,Constants.ZERO)
                        .eq(Goodsorder::getMemberId,member.getId())
                        .eq(Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey()))
        );
        homeInfoResponse.setCartTypeNum(
                shopcartMapper.selectCount(new QueryWrapper<Shopcart>().lambda()
                        .eq(Shopcart::getIsdeleted,Constants.ZERO)
@@ -1925,11 +2211,44 @@
        );
        return homeInfoResponse;
    }
    @Override
    public PageData<Goodsorder> shopOrderPage(PageWrap<ShopOrderRequest> pageWrap) {
        Integer shopId = null;
        Integer status = null;
        IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
        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.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.orderByDesc(Goodsorder::getCreateDate);
        IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
        for(Goodsorder goodsorder:result.getRecords()){
            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());
                }
            });
            goodsorder.setGoodsorderDetailList(goodsorderDetailList);
        }
        return PageData.from(result);
    }