浏览代码

fixed 分佣提成计算问题

fushengqian 1 周之前
父节点
当前提交
2395288cb9

+ 31 - 30
fuint-application/src/main/java/com/fuint/common/service/impl/CommissionLogServiceImpl.java

@@ -212,31 +212,31 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
                          lambdaQueryWrapper.eq(MtCommissionRuleItem::getTargetId, goodsId);
                          lambdaQueryWrapper.eq(MtCommissionRuleItem::getTargetId, goodsId);
                          lambdaQueryWrapper.eq(MtCommissionRuleItem::getType, CommissionTypeEnum.GOODS.getKey());
                          lambdaQueryWrapper.eq(MtCommissionRuleItem::getType, CommissionTypeEnum.GOODS.getKey());
                          lambdaQueryWrapper.eq(MtCommissionRuleItem::getStatus, StatusEnum.ENABLED.getKey());
                          lambdaQueryWrapper.eq(MtCommissionRuleItem::getStatus, StatusEnum.ENABLED.getKey());
+                         lambdaQueryWrapper.groupBy(MtCommissionRuleItem::getTarget);
                          lambdaQueryWrapper.orderByDesc(MtCommissionRuleItem::getId);
                          lambdaQueryWrapper.orderByDesc(MtCommissionRuleItem::getId);
                          List<MtCommissionRuleItem> commissionRuleItemList = mtCommissionRuleItemMapper.selectList(lambdaQueryWrapper);
                          List<MtCommissionRuleItem> commissionRuleItemList = mtCommissionRuleItemMapper.selectList(lambdaQueryWrapper);
                          if (commissionRuleItemList != null && commissionRuleItemList.size() > 0) {
                          if (commissionRuleItemList != null && commissionRuleItemList.size() > 0) {
-                             MtCommissionRuleItem mtCommissionRuleItem = commissionRuleItemList.get(0);
-                             MtCommissionRule mtCommissionRule = mtCommissionRuleMapper.selectById(mtCommissionRuleItem.getRuleId());
-                             // 规则状态正常
-                             if (mtCommissionRule != null && mtCommissionRule.getStatus().equals(StatusEnum.ENABLED.getKey())) {
-                                 // 分佣金额计算,散客和会员佣金比例不同
-                                 BigDecimal rate = mtCommissionRuleItem.getMember();
-                                 if (mtOrder.getStaffId() != null && mtOrder.getStaffId() > 0 && mtOrder.getIsVisitor().equals(YesOrNoEnum.YES.getKey())) {
-                                     rate = mtCommissionRuleItem.getGuest();
-                                 }
-                                 BigDecimal amount = orderGoods.getPrice().multiply(rate.divide(new BigDecimal("100")));
-
-                                 // 员工提成计算,员工信息不能为空
-                                 if (mtOrder.getStaffId() > 0 && mtCommissionRule.getTarget().equals(CommissionTargetEnum.STAFF.getKey())) {
-                                     if (mtOrder.getStaffId() != null && mtOrder.getStaffId() > 0) {
-                                         addCommissionLog(mtOrder, mtCommissionRule, amount, mtCommissionRuleItem, 0);
+                             for (MtCommissionRuleItem mtCommissionRuleItem : commissionRuleItemList) {
+                                  MtCommissionRule mtCommissionRule = mtCommissionRuleMapper.selectById(mtCommissionRuleItem.getRuleId());
+                                  // 规则状态正常
+                                  if (mtCommissionRule != null && mtCommissionRule.getStatus().equals(StatusEnum.ENABLED.getKey())) {
+                                     // 分佣金额计算,散客和会员佣金比例不同
+                                     BigDecimal rate = mtCommissionRuleItem.getMember();
+                                     if (mtOrder.getStaffId() != null && mtOrder.getStaffId() > 0 && mtOrder.getIsVisitor().equals(YesOrNoEnum.YES.getKey())) {
+                                         rate = mtCommissionRuleItem.getGuest();
                                      }
                                      }
-                                 }
-
-                                 // 会员分销计算,会员信息不能为空
-                                 if (mtOrder.getCommissionUserId() > 0 && mtCommissionRule.getTarget().equals(CommissionTargetEnum.MEMBER.getKey())) {
-                                     addCommissionLog(mtOrder, mtCommissionRule, amount, mtCommissionRuleItem, mtOrder.getCommissionUserId());
-                                 }
+                                     BigDecimal amount = orderGoods.getPrice().multiply(rate.divide(new BigDecimal("100")));
+                                     // 员工提成计算,员工信息不能为空
+                                     if (mtOrder.getStaffId() > 0 && mtCommissionRule.getTarget().equals(CommissionTargetEnum.STAFF.getKey())) {
+                                         if (mtOrder.getStaffId() != null && mtOrder.getStaffId() > 0) {
+                                             addCommissionLog(mtOrder, mtCommissionRule, amount, mtCommissionRuleItem, 0);
+                                         }
+                                     }
+                                     // 会员分销计算,会员信息不能为空
+                                     if (mtOrder.getCommissionUserId() > 0 && mtCommissionRule.getTarget().equals(CommissionTargetEnum.MEMBER.getKey())) {
+                                         addCommissionLog(mtOrder, mtCommissionRule, amount, mtCommissionRuleItem, mtOrder.getCommissionUserId());
+                                     }
+                                  }
                              }
                              }
                          }
                          }
                     }
                     }
@@ -249,19 +249,20 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
                 lambdaQueryWrapper.eq(MtCommissionRuleItem::getMerchantId, mtOrder.getMerchantId());
                 lambdaQueryWrapper.eq(MtCommissionRuleItem::getMerchantId, mtOrder.getMerchantId());
                 lambdaQueryWrapper.eq(MtCommissionRuleItem::getType, CommissionTypeEnum.RECHARGE.getKey());
                 lambdaQueryWrapper.eq(MtCommissionRuleItem::getType, CommissionTypeEnum.RECHARGE.getKey());
                 lambdaQueryWrapper.eq(MtCommissionRuleItem::getStatus, StatusEnum.ENABLED.getKey());
                 lambdaQueryWrapper.eq(MtCommissionRuleItem::getStatus, StatusEnum.ENABLED.getKey());
+                lambdaQueryWrapper.groupBy(MtCommissionRuleItem::getTarget);
                 lambdaQueryWrapper.orderByDesc(MtCommissionRuleItem::getId);
                 lambdaQueryWrapper.orderByDesc(MtCommissionRuleItem::getId);
                 List<MtCommissionRuleItem> commissionRuleItemList = mtCommissionRuleItemMapper.selectList(lambdaQueryWrapper);
                 List<MtCommissionRuleItem> commissionRuleItemList = mtCommissionRuleItemMapper.selectList(lambdaQueryWrapper);
                 if (commissionRuleItemList != null && commissionRuleItemList.size() > 0) {
                 if (commissionRuleItemList != null && commissionRuleItemList.size() > 0) {
-                    MtCommissionRuleItem mtCommissionRuleItem = commissionRuleItemList.get(0);
-                    MtCommissionRule mtCommissionRule = mtCommissionRuleMapper.selectById(mtCommissionRuleItem.getRuleId());
-
-                    // 分佣金额计算,散客和会员佣金比例不同
-                    BigDecimal rate = mtCommissionRuleItem.getMember();
-                    if (mtOrder.getStaffId() != null && mtOrder.getStaffId() > 0 && mtOrder.getIsVisitor().equals(YesOrNoEnum.YES.getKey())) {
-                        rate = mtCommissionRuleItem.getGuest();
+                    for (MtCommissionRuleItem mtCommissionRuleItem : commissionRuleItemList) {
+                        MtCommissionRule mtCommissionRule = mtCommissionRuleMapper.selectById(mtCommissionRuleItem.getRuleId());
+                        // 分佣金额计算,散客和会员佣金比例不同
+                        BigDecimal rate = mtCommissionRuleItem.getMember();
+                        if (mtOrder.getStaffId() != null && mtOrder.getStaffId() > 0 && mtOrder.getIsVisitor().equals(YesOrNoEnum.YES.getKey())) {
+                            rate = mtCommissionRuleItem.getGuest();
+                        }
+                        BigDecimal amount = mtOrder.getAmount().multiply(rate.divide(new BigDecimal("100")));
+                        addCommissionLog(mtOrder, mtCommissionRule, amount, mtCommissionRuleItem, 0);
                     }
                     }
-                    BigDecimal amount = mtOrder.getAmount().multiply(rate.divide(new BigDecimal("100")));
-                    addCommissionLog(mtOrder, mtCommissionRule, amount, mtCommissionRuleItem, 0);
                 }
                 }
             }
             }
 
 

+ 5 - 2
fuint-application/src/main/java/com/fuint/common/service/impl/CommissionRuleServiceImpl.java

@@ -256,8 +256,11 @@ public class CommissionRuleServiceImpl extends ServiceImpl<MtCommissionRuleMappe
                 mtCommissionRuleItemMapper.deleteByRuleId(commissionRule.getId(), new Date());
                 mtCommissionRuleItemMapper.deleteByRuleId(commissionRule.getId(), new Date());
             }
             }
         }
         }
-        String storeIds = StringUtil.join(commissionRule.getStoreIdList().toArray(), ",");
-        mtCommissionRule.setStoreIds(storeIds);
+        String storeIds = "";
+        if (commissionRule.getStoreIdList() != null && commissionRule.getStoreIdList().size() > 0) {
+            storeIds = StringUtil.join(commissionRule.getStoreIdList().toArray(), ",");
+            mtCommissionRule.setStoreIds(storeIds);
+        }
 
 
         // 更新或插入
         // 更新或插入
         Date date = new Date();
         Date date = new Date();

+ 1 - 1
fuint-application/src/main/java/com/fuint/module/schedule/CommissionJob.java

@@ -54,7 +54,7 @@ public class CommissionJob {
     /**
     /**
      * 订单完成后n天可产生佣金
      * 订单完成后n天可产生佣金
      * */
      * */
-    private int OVER_DAY = 7;
+    private int OVER_DAY = 0;
 
 
     @Scheduled(cron = "${commission.job.time}")
     @Scheduled(cron = "${commission.job.time}")
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)