Browse Source

refactor(wechat-pay): 优化分账累计金额计算逻辑- 提取累计分账金额计算为独立方法 addProfitSharingInfos
- 移除重复的循环计算逻辑- 统一处理各分账类型的累计金额设置
- 增加对分账状态为 SUCCESS 的过滤条件
- 简化主业务流程中的代码复杂度

SheepHy 3 weeks ago
parent
commit
ba0ffdb040

+ 21 - 9
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/WeChatPayService.java

@@ -318,16 +318,8 @@ public class WeChatPayService {
                 SHAppProfitSharingInfo.setMchName(depart.getMchName());
                 SHAppProfitSharingInfo.setType(1);
                 SHAppProfitSharingInfo.setRatio(SH);
-                List<AppProfitSharingInfo> list = appProfitSharingInfoMapper.selectList(
-                        Wrappers.<AppProfitSharingInfo>lambdaQuery()
-                                .eq(AppProfitSharingInfo::getOrgCode, orgCode)
-                );
-                int cumulativeSum = 0;
-                for (AppProfitSharingInfo item : list) {
-                    cumulativeSum = cumulativeSum + item.getPreAmount();
-                }
-                SHAppProfitSharingInfo.setCumulative(cumulativeSum);
                 SHAppProfitSharingInfo.setPreAmount(RatiosUtil.amount_fee(allocate[0]));
+                SHAppProfitSharingInfo.setCumulative(addProfitSharingInfos(SHAppProfitSharingInfo.getOrgCode()));
                 appProfitSharingInfoMapper.insert(SHAppProfitSharingInfo);
 
                 //平台所得金额(金额*比例-微信手续费)
@@ -337,6 +329,7 @@ public class WeChatPayService {
                     PTAppProfitSharingInfo.setAmount(RatiosUtil.amount_fee(BigDecimal.ZERO));
                     PTAppProfitSharingInfo.setDescription("分账金额为0,请自行处理");
                 }
+                PTAppProfitSharingInfo.setCumulative(addProfitSharingInfos(PTAppProfitSharingInfo.getOrgCode()));
                 appProfitSharingInfoMapper.insert(PTAppProfitSharingInfo);
             }
             //门店(分账给平台及商户)
@@ -351,6 +344,7 @@ public class WeChatPayService {
                 MDAppProfitSharingInfo.setType(1);
                 MDAppProfitSharingInfo.setRatio(MD);
                 MDAppProfitSharingInfo.setPreAmount(RatiosUtil.amount_fee(allocate[0]));
+                MDAppProfitSharingInfo.setCumulative(addProfitSharingInfos(MDAppProfitSharingInfo.getOrgCode()));
                 appProfitSharingInfoMapper.insert(MDAppProfitSharingInfo);
                 //商户所得金额
 
@@ -366,6 +360,7 @@ public class WeChatPayService {
                     SHAppProfitSharingInfo.setAmount(RatiosUtil.amount_fee(BigDecimal.ZERO));
                     SHAppProfitSharingInfo.setDescription("分账金额为0,请自行处理");
                 }
+                SHAppProfitSharingInfo.setCumulative(addProfitSharingInfos(SHAppProfitSharingInfo.getOrgCode()));
                 appProfitSharingInfoMapper.insert(SHAppProfitSharingInfo);
 
                 //平台所得金额(金额*比例-微信手续费)
@@ -375,11 +370,28 @@ public class WeChatPayService {
                     PTAppProfitSharingInfo.setAmount(RatiosUtil.amount_fee(BigDecimal.ZERO));
                     PTAppProfitSharingInfo.setDescription("分账金额为0,请自行处理");
                 }
+                PTAppProfitSharingInfo.setCumulative(addProfitSharingInfos(PTAppProfitSharingInfo.getOrgCode()));
                 appProfitSharingInfoMapper.insert(PTAppProfitSharingInfo);
             }
         }
     }
 
+    /**
+     * <p>添加累计分账</p>
+     * @author SheepHy
+     *
+     */
+    public int addProfitSharingInfos(String orgCode) {
+        List<AppProfitSharingInfo> success = appProfitSharingInfoMapper.selectList(Wrappers.<AppProfitSharingInfo>lambdaQuery()
+                .eq(AppProfitSharingInfo::getOrgCode, orgCode)
+                .eq(AppProfitSharingInfo::getStatus, "SUCCESS"));
+        int cumulativeSum = 0;
+        for (AppProfitSharingInfo item : success) {
+            cumulativeSum = cumulativeSum + item.getPreAmount();
+        }
+        return cumulativeSum;
+    }
+
     @NotNull
     private static AppProfitSharingInfo getPtAppProfitSharingInfo(AppOrder appOrder, BigDecimal PT, Integer procedureFee, BigDecimal insurePrice) {
         AppProfitSharingInfo PTAppProfitSharingInfo = new AppProfitSharingInfo();