From d8d6661b4736e5de37d4a158b8286509b748d62b Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 22 一月 2026 18:16:54 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |  350 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 284 insertions(+), 66 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 0753bde..7634794 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -39,9 +39,11 @@
 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;
@@ -76,6 +78,8 @@
     @Autowired
     private GoodsorderMapper goodsorderMapper;
     @Autowired
+    private UserActionMapper userActionMapper;
+    @Autowired
     private ActivitySignMapper activitySignMapper;
     @Autowired
     private AftersaleMapper  aftersaleMapper;
@@ -83,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;
@@ -232,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);
@@ -255,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);*/
     }
 
 
@@ -373,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();
 
@@ -418,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;
     }
 
 
@@ -1605,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())
+        );
+    }
+
+
+
 
     /**
      * 璁㈠崟鏍搁攢
@@ -1644,6 +1860,8 @@
         if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
             //璧犻�佹秷璐硅�呯Н鍒�
             this.orderAddMemberIntegral(goodsorder);
+            //涓嬪崟瀹屾垚 鏍规嵁淇℃伅纭鏄惁闇�瑕佽禒閫侀個璇疯�呬紭鎯犲埜
+            this.orderDoneRewardInviteCoupon(goodsorder);
             //缁忛攢鍟� 娣诲姞璧犻�佺Н鍒�
             this.orderAddShopIntegral(goodsorder);
             //缁忛攢鍟� 缁撶畻閲戦

--
Gitblit v1.9.3