From a00c6d07e4c8eb629e5ffe4661dcde2686c1df53 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 18 七月 2025 18:51:08 +0800
Subject: [PATCH] 修改bug 分佣退回  判断是否可以退款

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java |   39 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java
index 74a060b..b920461 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderServiceImpl.java
@@ -20,6 +20,7 @@
 import com.ruoyi.system.pojo.dto.OrderPageDTO;
 import com.ruoyi.system.pojo.model.DailyStatistics;
 import com.ruoyi.system.pojo.vo.*;
+import com.ruoyi.system.service.CompanyTypeService;
 import com.ruoyi.system.service.OrderService;
 import com.ruoyi.system.wx.RefundCallbackResult;
 import com.ruoyi.system.wx.WechatPayService;
@@ -63,6 +64,13 @@
     private RedisCache redisCache;
     @Resource
     private QichachaMapper qichachaMapper;
+
+    @Resource
+    private CompanyTypeService companyTypeService;
+
+
+    @Resource
+    private AccountDetailMapper accountDetailMapper;
 
 
     @Override
@@ -162,6 +170,9 @@
         BusinessVO vo = new BusinessVO();
         BeanUtils.copyProperties(company, vo);
         vo.setPlace(company.getCity()+company.getProvince()+company.getArea());
+
+        String name = companyTypeService.getById(company.getCompanyCategory()).getName();
+        vo.setCompanyCategoryName(name);
 
         //todo 再查企业工商信息 覆盖掉之前的
 
@@ -607,6 +618,15 @@
             order.setRefundTime(LocalDateTime.now());
             companyMapper.updateById(company);
         }else{
+            // 判断是否能退
+            if(order.getShareUserId()!=null){
+                User user = appUserMapper.selectById(order.getShareUserId());
+                if(user.getBalance().doubleValue()<order.getCommissionPrice().doubleValue()){
+                    throw new ServiceException("退款失败,卖家上级余额不足");
+                }
+            }
+
+
             R r = refundPayMoney(order);//退款
             if (200 == r.getCode()) {
                 //退款申请成功
@@ -676,14 +696,29 @@
         order.setIsRefund(1);
         order.setRefundTime(LocalDateTime.now());
         this.baseMapper.updateById(order);
+
         //将分佣次数加回
-        User user = appUserMapper.selectById(order.getUserId());
-        User inviter = appUserMapper.selectById(user.getInviteId());
+        User inviter = appUserMapper.selectById(company.getUserId());
         if (inviter!=null && inviter.getIsDelete()==0){
             inviter.setInviteNum(inviter.getInviteNum()+1);
             appUserMapper.updateById(inviter);
         }
 
+        // 分佣退回
+        if(order.getShareUserId()!=null && order.getCommissionPrice().doubleValue()>0){
+            User user = appUserMapper.selectById(order.getShareUserId());
+            user.setBalance(user.getBalance().subtract(order.getCommissionPrice()));
+            appUserMapper.updateById(user);
+            AccountDetail accountDetail = new AccountDetail();
+            accountDetail.setUserId(order.getShareUserId());
+            accountDetail.setType(2);
+            accountDetail.setCategory(4);
+            accountDetail.setSourceId(order.getId());
+            accountDetail.setMoney(order.getCommissionPrice());
+            accountDetail.setRemark("订单取消分佣退回");
+            accountDetailMapper.insert(accountDetail);
+        }
+
         //商品状态修改
         company.setStatus(1);
         companyMapper.updateById(company);

--
Gitblit v1.7.1