From 3392f0e5dbd791e6dfd29c1e76a3e368b0f223da Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 06 Sep 2022 17:51:08 +0800
Subject: [PATCH] 20220902

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |  186 +++++++++++++++++++++++-----------------------
 1 files changed, 92 insertions(+), 94 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index fafe3d7..5b7fe34 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -75,6 +75,7 @@
     private final MallMemberMapper mallMemberMapper;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final MallLeaderAchieveMapper mallLeaderAchieveMapper;
+    private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -83,6 +84,11 @@
         String takeUniqueCode = addOrderDto.getTakeUniqueCode();
         if(StrUtil.isEmpty(takeUniqueCode)){
             throw new FebsException("请选择自提点");
+        }
+
+        MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
+        if(ObjectUtil.isEmpty(mallTeamLeader)){
+            throw new FebsException("请重新选择团长");
         }
 
         String orderNo = MallUtils.getOrderNum();
@@ -227,6 +233,23 @@
         orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
         orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
         this.baseMapper.updateById(orderInfo);
+        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id);
+        if(CollUtil.isNotEmpty(mallOrderItemList)){
+            for(MallOrderItem mallOrderItem : mallOrderItemList){
+                Long goodsId = mallOrderItem.getGoodsId();
+                Long skuId = mallOrderItem.getSkuId();
+                Integer cnt = mallOrderItem.getCnt();
+                MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
+                mallGoods.setVolume(mallGoods.getVolume() - cnt);
+                mallGoods.setStock(mallGoods.getStock() + cnt);
+                mallGoodsMapper.updateById(mallGoods);
+
+                MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId);
+                mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - cnt);
+                mallGoodsSku.setStock(mallGoodsSku.getStock() + cnt);
+                mallGoodsSkuMapper.updateById(mallGoodsSku);
+            }
+        }
     }
 
     /**
@@ -488,14 +511,28 @@
         this.baseMapper.updateById(orderInfo);
 
         //生成一条团长提成记录
-        MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve();
-        mallLeaderAchieve.setMemberId(orderInfo.getMemberId());
-        mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo());
-        BigDecimal subtract = orderInfo.getAmount().subtract(orderInfo.getCarriage() == null ? BigDecimal.ZERO : orderInfo.getCarriage());
-        mallLeaderAchieve.setAmount(subtract);
-        mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode());
-        mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE);
-        mallLeaderAchieveMapper.insert(mallLeaderAchieve);
+        Long orderInfoId = orderInfo.getId();
+        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId);
+        if(CollUtil.isNotEmpty(mallOrderItemList)){
+            DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode());
+            BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN);
+            for(MallOrderItem mallOrderItem : mallOrderItemList){
+                Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState();
+                if(1 == state){
+                    MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve();
+                    mallLeaderAchieve.setMemberId(orderInfo.getMemberId());
+                    mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo());
+                    mallLeaderAchieve.setOrderItemId(mallOrderItem.getId());
+                    BigDecimal itemAmount = mallOrderItem.getAmount();
+                    mallLeaderAchieve.setAmount(itemAmount);
+                    BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN);
+                    mallLeaderAchieve.setProfitAmount(bigDecimal);
+                    mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode());
+                    mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE);
+                    mallLeaderAchieveMapper.insert(mallLeaderAchieve);
+                }
+            }
+        }
     }
 
     @Override
@@ -669,95 +706,56 @@
         if(1 != deliveryState){
             return new FebsResponse().fail().message("订单不是待配送状态");
         }
-        QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
-        objectQueryWrapper.eq("member_id",member.getId());
-        objectQueryWrapper.eq("order_id",mallOrderInfo.getId());
-        MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper);
-        MallRefundEntity mallRefundEntity = new MallRefundEntity();
-        if(ObjectUtil.isEmpty(mallRefund)){
-            mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_r");
-            mallRefundEntity.setMemberId(member.getId());
-            mallRefundEntity.setOrderId(mallOrderInfo.getId());
-            mallRefundEntity.setType(1);
-            mallRefundEntity.setState(3);
-            mallRefundEntity.setAmount(mallOrderInfo.getAmount());
-            mallRefundMapper.insert(mallRefundEntity);
-        }else{
-            if(mallRefund.getState() == 1){
-                return new FebsResponse().fail().message("订单已退款");
-            }
-            if(mallRefund.getState() == 3){
-                return new FebsResponse().fail().message("订单退款中");
-            }
-            if(mallRefund.getState() == 2){
-                mallRefundEntity.setId(mallRefund.getId());
-                mallRefundEntity.setRefundNo(mallRefund.getRefundNo());
-                mallRefundEntity.setMemberId(mallRefund.getMemberId());
-                mallRefundEntity.setOrderId(mallRefund.getOrderId());
-                mallRefundEntity.setType(mallRefund.getType());
+        //根据子订单生成退款记录
+        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id);
+        if(CollUtil.isEmpty(mallOrderItemList)){
+            return new FebsResponse().fail().message("订单不存在");
+        }
+        for(MallOrderItem mallOrderItem : mallOrderItemList){
+            QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
+            objectQueryWrapper.eq("member_id",member.getId());
+            objectQueryWrapper.eq("order_id",mallOrderInfo.getId());
+            objectQueryWrapper.eq("item_id",mallOrderItem.getId());
+            MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper);
+            MallRefundEntity mallRefundEntity = new MallRefundEntity();
+            if(ObjectUtil.isEmpty(mallRefund)){
+                mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId());
+                mallRefundEntity.setMemberId(member.getId());
+                mallRefundEntity.setOrderId(mallOrderInfo.getId());
+                mallRefundEntity.setItemId(mallOrderItem.getId());
+                if("余额支付".equals(mallOrderInfo.getPayMethod())){
+                    mallRefundEntity.setType(3);
+                }else if("微信支付".equals(mallOrderInfo.getPayMethod())){
+                    mallRefundEntity.setType(1);
+                }else{
+                    mallRefundEntity.setType(3);
+                }
                 mallRefundEntity.setState(3);
-                mallRefundEntity.setAmount(mallRefund.getAmount());
-                mallRefundMapper.updateById(mallRefundEntity);
+                mallRefundEntity.setAmount(mallOrderItem.getAmount());
+                mallRefundMapper.insert(mallRefundEntity);
+            }else{
+                if(mallRefund.getState() == 1){
+                    return new FebsResponse().fail().message("订单已退款");
+                }
+                if(mallRefund.getState() == 2 || mallRefund.getState() == 3){
+                    mallRefundEntity.setId(mallRefund.getId());
+                    mallRefundEntity.setRefundNo(mallRefund.getRefundNo());
+                    mallRefundEntity.setMemberId(mallRefund.getMemberId());
+                    mallRefundEntity.setOrderId(mallRefund.getOrderId());
+                    mallRefundEntity.setItemId(mallRefund.getItemId());
+                    mallRefundEntity.setType(mallRefund.getType());
+                    mallRefundEntity.setState(3);
+                    mallRefundEntity.setAmount(mallRefund.getAmount());
+                    mallRefundMapper.updateById(mallRefundEntity);
+                }
             }
+            ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto();
+            apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId());
+            apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
+            apiLeaderRefundOrderDto.setAgreeState(1);
+            iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
         }
-
-        //退款订单编号
-        String orderNo = mallOrderInfo.getOrderNo();
-        //退款退款编号
-        String refundNo = mallRefundEntity.getRefundNo();
-        //退款订单金额
-        BigDecimal orderAmount = mallOrderInfo.getAmount();
-        BigDecimal aa = new BigDecimal(100);
-        int orderMoney = orderAmount.multiply(aa).intValue();
-
-        //退款退款金额
-        BigDecimal refundAmount = mallRefundEntity.getAmount();
-        BigDecimal bb = new BigDecimal(100);
-        int refundMoney = refundAmount.multiply(bb).intValue();
-
-        Long refundId = mallRefundEntity.getId();
-        MallRefundEntity mallRefundOld = mallRefundMapper.selectById(refundId);
-        MallOrderInfo mallOrderInfoOld = this.baseMapper.selectByOrderNo(orderNo);
-        //余额支付退款
-        if(OrderPayMethodEnum.BALANCE.getName().equals(mallOrderInfo.getPayMethod())){
-            mallRefundOld.setState(1);
-            mallRefundMapper.updateById(mallRefundOld);
-            mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue());
-            this.baseMapper.updateById(mallOrderInfoOld);
-            mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
-            memberWalletService.add(refundAmount, member.getId(), "balance");
-            mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId());
-            return new FebsResponse().success().message("退款成功");
-        }
-
-        Boolean flag = false;
-        Boolean debug = xcxProperties.getDebug();
-        if (debug) {
-            boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null);
-            flag = b;
-        } else {
-            log.info("开始调用退款接口。。。退款编号为{}", refundNo);
-            boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null);
-            flag = b;
-        }
-
-        /**
-         * 更新退款表
-         * 更新订单表
-         */
-        if(flag){
-            mallRefundOld.setState(1);
-            mallRefundMapper.updateById(mallRefundOld);
-            mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue());
-            this.baseMapper.updateById(mallOrderInfoOld);
-            mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId());
-            mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
-        }else{
-            mallRefundOld.setState(2);
-            mallRefundMapper.updateById(mallRefundOld);
-            return new FebsResponse().fail().message("退款失败,请联系客服人员");
-        }
-        return new FebsResponse().success().message("退款成功");
+        return new FebsResponse().success();
     }
 
     @Override

--
Gitblit v1.9.1