From 4bd430086630df238462908761261f13da5a482f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 05 Dec 2024 16:09:34 +0800
Subject: [PATCH] refactor(mall): 优化订单退款逻辑

---
 src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java               |    3 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java |   30 +++++++++-----
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java  |   11 ++---
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java       |   20 ++++------
 4 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
index 7973074..437def5 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -2,14 +2,10 @@
 
 import cc.mrbird.febs.common.annotation.ControllerEndpoint;
 import cc.mrbird.febs.common.controller.BaseController;
-import cc.mrbird.febs.common.entity.DeptTree;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
-import cc.mrbird.febs.common.exception.FebsException;
-import cc.mrbird.febs.common.utils.FebsUtil;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextHolder;
 import cc.mrbird.febs.common.utils.excl.ExcelSheetPO;
@@ -18,18 +14,15 @@
 import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.mapper.*;
-import cc.mrbird.febs.mall.service.IAdminMallGoodsService;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper;
 import cc.mrbird.febs.mall.service.IAdminMallOrderService;
 import cc.mrbird.febs.mall.service.IApiMallTeamLeaderService;
 import cc.mrbird.febs.mall.service.MallInvoiceService;
 import cc.mrbird.febs.mall.vo.AdminAddAddressTreeVo;
-import cc.mrbird.febs.mall.vo.AdminMallOrderRefundAddressVo;
-import cc.mrbird.febs.pay.model.OrderStateDto;
 import cc.mrbird.febs.pay.service.IXcxPayService;
-import cc.mrbird.febs.pay.util.WechatConfigure;
-import cc.mrbird.febs.system.entity.Dept;
-import cc.mrbird.febs.system.entity.User;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -45,7 +38,9 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
-import java.io.*;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
@@ -196,6 +191,7 @@
     @PostMapping(value = "/refundOperation")
     @ControllerEndpoint(operation = "订单退款", exceptionMessage = "操作失败")
     public FebsResponse refundOperation(ApiLeaderRefundOrderDto apiLeaderRefundOrderDto) {
+        apiLeaderRefundOrderDto.setAgreeType(2);
         return apiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
     }
 
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java
index 8e54c36..f12a492 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderRefundOrderDto.java
@@ -17,4 +17,7 @@
     @ApiModelProperty(value = "是否同意 1:同意 2:拒绝", example = "1")
     private Integer agreeState;
 
+    @ApiModelProperty(value = "类型 1-未发货用户点击退款 2-后端同意退款", example = "1")
+    private Integer agreeType;
+
 }
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 1b46a1c..880a151 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
@@ -8,19 +8,19 @@
 import cc.mrbird.febs.mall.conversion.MallGoodsCommentConversion;
 import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion;
 import cc.mrbird.febs.mall.conversion.MallOrderRefundConversion;
-import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.*;
-import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.mall.vo.ApiCouponAmountMapVo;
+import cc.mrbird.febs.mall.vo.OrderDetailVo;
+import cc.mrbird.febs.mall.vo.OrderListVo;
+import cc.mrbird.febs.mall.vo.OrderRefundVo;
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
-import cc.mrbird.febs.pay.model.OrderStateDto;
 import cc.mrbird.febs.pay.service.IPayService;
 import cc.mrbird.febs.pay.service.IXcxPayService;
 import cc.mrbird.febs.pay.util.WeixinServiceUtil;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
-import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService;
 import cc.mrbird.febs.vip.service.IMallVipConfigService;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUnit;
@@ -28,8 +28,6 @@
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -942,6 +940,7 @@
             apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId());
             apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
             apiLeaderRefundOrderDto.setAgreeState(1);
+            apiLeaderRefundOrderDto.setAgreeType(1);
             iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
         }
         return new FebsResponse().success();
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
index 7c79417..d1f7617 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -388,6 +388,10 @@
         //获取退款订单信息
         Long orderId = apiLeaderRefundOrderDto.getOrderId();
         Long itemId = apiLeaderRefundOrderDto.getItemId();
+        Integer agreeType = apiLeaderRefundOrderDto.getAgreeType();
+        if(!(1 == agreeType || 2 == agreeType)){
+            return new FebsResponse().fail().message("退款失败,请联系客服人员");
+        }
 
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
         MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId);
@@ -421,23 +425,27 @@
             int orderMoney = orderAmount.multiply(aa).intValue();
 
             //退款退款金额
-            BigDecimal refundAmount = mallRefundEntity.getAmount();
-            List<MallOrderItem> mallOrderItemListOnly = mallOrderItemMapper.selectListByStateAndOrderId(1,orderId);
-            if(CollUtil.isNotEmpty(mallOrderItemListOnly)){
-                if(1==mallOrderItemListOnly.size()){
-                    refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
-                    log.info("退款订单编号为{},订单金额:{},待退款订单:{},退款金额:{}", refundNo,orderAmount,mallOrderItemListOnly.size(),refundAmount);
-                }
-            }
 //            BigDecimal refundAmount = mallRefundEntity.getAmount();
 //            List<MallOrderItem> mallOrderItemListOnly = mallOrderItemMapper.selectListByStateAndOrderId(1,orderId);
-//            List<MallOrderItem> mallOrderItemListIng = mallOrderItemMapper.selectListByStateAndOrderId(2,orderId);
-//            if(CollUtil.isEmpty(mallOrderItemListOnly) && CollUtil.isNotEmpty(mallOrderItemListIng) ){
-//                if(1 == mallOrderItemListIng.size() ){
+//            if(CollUtil.isNotEmpty(mallOrderItemListOnly)){
+//                if(1==mallOrderItemListOnly.size()){
 //                    refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
 //                    log.info("退款订单编号为{},订单金额:{},待退款订单:{},退款金额:{}", refundNo,orderAmount,mallOrderItemListOnly.size(),refundAmount);
 //                }
 //            }
+            BigDecimal refundAmount = mallRefundEntity.getAmount();
+            if(agreeType == 1){
+                refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
+            }else if(agreeType == 2){
+                List<MallOrderItem> mallOrderItemListOnly = mallOrderItemMapper.selectListByStateAndOrderId(1,orderId);
+                List<MallOrderItem> mallOrderItemListIng = mallOrderItemMapper.selectListByStateAndOrderId(2,orderId);
+                if(CollUtil.isEmpty(mallOrderItemListOnly) && CollUtil.isNotEmpty(mallOrderItemListIng) ){
+                    if(1 == mallOrderItemListIng.size() ){
+                        refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
+                        log.info("退款订单编号为{},订单金额:{},待退款订单:{},退款金额:{}", refundNo,orderAmount,mallOrderItemListOnly.size(),refundAmount);
+                    }
+                }
+            }
 //            refundAmount = refundAmount.add(mallOrderInfo.getCarriage());
             BigDecimal bb = new BigDecimal(100);
             int refundMoney = refundAmount.multiply(bb).intValue();

--
Gitblit v1.9.1