Browse Source

分佣提成计算逻辑

fushengqian 1 year ago
parent
commit
17162e8401

+ 6 - 3
fuint-application/src/main/java/com/fuint/common/service/CommissionLogService.java

@@ -26,25 +26,28 @@ public interface CommissionLogService extends IService<MtCommissionLog> {
     /**
      * 添加分销提成记录
      *
-     * @param  orderId
+     * @param  orderId 订单ID
      * @throws BusinessCheckException
+     * @return
      */
     void addCommissionLog(Integer orderId) throws BusinessCheckException;
 
     /**
      * 根据ID获取记录信息
      *
-     * @param  id
+     * @param  id 记录ID
      * @throws BusinessCheckException
+     * @return
      */
     CommissionLogDto queryCommissionLogById(Integer id) throws BusinessCheckException;
 
     /**
      * 根据ID删除分销提成记录
      *
-     * @param id       ID
+     * @param id 记录ID
      * @param operator 操作人
      * @throws BusinessCheckException
+     * @return
      */
     void deleteCommissionLog(Integer id, String operator) throws BusinessCheckException;
 }

+ 40 - 23
fuint-application/src/main/java/com/fuint/common/service/impl/CommissionLogServiceImpl.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fuint.common.dto.CommissionLogDto;
+import com.fuint.common.enums.CommissionTargetEnum;
+import com.fuint.common.enums.GoodsTypeEnum;
 import com.fuint.common.enums.OrderTypeEnum;
 import com.fuint.common.service.*;
 import com.fuint.framework.annoation.OperationServiceLog;
@@ -11,6 +13,7 @@ import com.fuint.framework.pagination.PaginationRequest;
 import com.fuint.framework.pagination.PaginationResponse;
 import com.fuint.repository.mapper.MtCommissionLogMapper;
 import com.fuint.common.enums.StatusEnum;
+import com.fuint.repository.mapper.MtCommissionRuleItemMapper;
 import com.fuint.repository.mapper.MtOrderGoodsMapper;
 import com.fuint.repository.model.*;
 import com.github.pagehelper.PageHelper;
@@ -41,6 +44,8 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
 
     private MtCommissionLogMapper mtCommissionLogMapper;
 
+    private MtCommissionRuleItemMapper mtCommissionRuleItemMapper;
+
     private MtOrderGoodsMapper mtOrderGoodsMapper;
 
     /**
@@ -120,7 +125,7 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
     /**
      * 新增分销提成记录
      *
-     * @param orderId
+     * @param orderId 订单ID
      * @return
      */
     @Override
@@ -137,29 +142,39 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
                 List<MtOrderGoods> goodsList = mtOrderGoodsMapper.selectByMap(params);
                 if (goodsList != null && goodsList.size() > 0) {
                     for (MtOrderGoods orderGoods : goodsList) {
-                         orderGoods.getGoodsId();
+                         Integer goodsId = orderGoods.getGoodsId();
+                         LambdaQueryWrapper<MtCommissionRuleItem> lambdaQueryWrapper = Wrappers.lambdaQuery();
+                         lambdaQueryWrapper.eq(MtCommissionRuleItem::getMerchantId, mtOrder.getMerchantId());
+                         lambdaQueryWrapper.eq(MtCommissionRuleItem::getTargetId, goodsId);
+                         lambdaQueryWrapper.eq(MtCommissionRuleItem::getType, OrderTypeEnum.GOOGS.getKey());
+                         lambdaQueryWrapper.eq(MtCommissionRuleItem::getStatus, StatusEnum.ENABLED.getKey());
+                         lambdaQueryWrapper.orderByDesc(MtCommissionRuleItem::getId);
+                         List<MtCommissionRuleItem> commissionRuleItemList = mtCommissionRuleItemMapper.selectList(lambdaQueryWrapper);
+                         if (commissionRuleItemList != null && commissionRuleItemList.size() > 0) {
+                             MtCommissionRuleItem mtCommissionRuleItem = commissionRuleItemList.get(0);
+                             MtCommissionLog mtCommissionLog = new MtCommissionLog();
+                             BigDecimal amount = orderGoods.getPrice().multiply(mtCommissionRuleItem.getGuest().divide(new BigDecimal("100")));
+                             mtCommissionLog.setType(mtOrder.getType());
+                             mtCommissionLog.setLevel(0);
+                             mtCommissionLog.setUserId(mtOrder.getUserId());
+                             mtCommissionLog.setOrderId(orderId);
+                             mtCommissionLog.setMerchantId(mtOrder.getMerchantId());
+                             mtCommissionLog.setStoreId(mtOrder.getStoreId());
+                             mtCommissionLog.setStaffId(mtOrder.getStaffId());
+                             mtCommissionLog.setAmount(amount);
+                             mtCommissionLog.setRuleId(mtCommissionRuleItem.getRuleId());
+                             mtCommissionLog.setRuleItemId(mtCommissionRuleItem.getId());
+                             mtCommissionLog.setCashId(0);
+                             mtCommissionLog.setCashTime(null);
+                             mtCommissionLog.setCreateTime(new Date());
+                             mtCommissionLog.setUpdateTime(new Date());
+                             mtCommissionLog.setStatus(StatusEnum.ENABLED.getKey());
+                             mtCommissionLog.setOperator(null);
+                             mtCommissionLogMapper.insert(mtCommissionLog);
+                         }
                     }
                 }
             }
-            if (mtOrder != null) {
-                MtCommissionLog mtCommissionLog = new MtCommissionLog();
-                mtCommissionLog.setType(mtOrder.getType());
-                mtCommissionLog.setLevel(0);
-                mtCommissionLog.setUserId(0);
-                mtCommissionLog.setOrderId(orderId);
-                mtCommissionLog.setMerchantId(mtOrder.getMerchantId());
-                mtCommissionLog.setStoreId(mtOrder.getStoreId());
-                mtCommissionLog.setStaffId(mtOrder.getStaffId());
-                mtCommissionLog.setAmount(new BigDecimal("0"));
-                mtCommissionLog.setRuleId(0);
-                mtCommissionLog.setCashId(0);
-                mtCommissionLog.setCashTime(null);
-                mtCommissionLog.setCreateTime(new Date());
-                mtCommissionLog.setUpdateTime(new Date());
-                mtCommissionLog.setStatus(StatusEnum.ENABLED.getKey());
-                mtCommissionLog.setOperator(null);
-                mtCommissionLogMapper.insert(mtCommissionLog);
-            }
         } else {
             logger.error("分销提成记录订单不能ID为空...");
         }
@@ -168,7 +183,8 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
     /**
      * 根据ID获取记录信息
      *
-     * @param id
+     * @param id 分佣提成记录ID
+     * @return
      */
     @Override
     public CommissionLogDto queryCommissionLogById(Integer id) {
@@ -183,8 +199,9 @@ public class CommissionLogServiceImpl extends ServiceImpl<MtCommissionLogMapper,
     /**
      * 根据ID删除
      *
-     * @param id
+     * @param id 分佣提成记录ID
      * @param operator 操作人
+     * @return
      */
     @Override
     @Transactional

+ 28 - 25
fuint-application/src/main/java/com/fuint/common/service/impl/CouponServiceImpl.java

@@ -667,32 +667,35 @@ public class CouponServiceImpl extends ServiceImpl<MtCouponMapper, MtCoupon> imp
         sendLogService.addSendLog(sendLogDto);
 
         if (sendMessage) {
-            // 发送手机短信
-            if (StringUtil.isNotEmpty(mobile)) {
-                List<String> mobileList = new ArrayList<>();
-                mobileList.add(mobile);
-                Integer totalNum = 0;
-                BigDecimal totalMoney = new BigDecimal("0.0");
-                List<MtCoupon> couponList = queryCouponListByGroupId(couponInfo.getGroupId());
-                for (MtCoupon coupon : couponList) {
-                    totalNum = totalNum + (coupon.getSendNum() * num);
-                    totalMoney = totalMoney.add((coupon.getAmount().multiply(new BigDecimal(num).multiply(new BigDecimal(coupon.getSendNum())))));
+            try {
+                // 发送手机短信
+                if (StringUtil.isNotEmpty(mobile)) {
+                    List<String> mobileList = new ArrayList<>();
+                    mobileList.add(mobile);
+                    Integer totalNum = 0;
+                    BigDecimal totalMoney = new BigDecimal("0.0");
+                    List<MtCoupon> couponList = queryCouponListByGroupId(couponInfo.getGroupId());
+                    for (MtCoupon coupon : couponList) {
+                        totalNum = totalNum + (coupon.getSendNum() * num);
+                        totalMoney = totalMoney.add((coupon.getAmount().multiply(new BigDecimal(num).multiply(new BigDecimal(coupon.getSendNum())))));
+                    }
+                    Map<String, String> params = new HashMap<>();
+                    params.put("totalNum", totalNum + "");
+                    params.put("totalMoney", totalMoney + "");
+                    sendSmsService.sendSms(couponInfo.getMerchantId(), "received-coupon", mobileList, params);
                 }
-                Map<String, String> params = new HashMap<>();
-                params.put("totalNum", totalNum + "");
-                params.put("totalMoney", totalMoney + "");
-                sendSmsService.sendSms(couponInfo.getMerchantId(), "received-coupon", mobileList, params);
-            }
-
-            // 发送小程序订阅消息
-            if (userInfo != null && couponInfo != null && couponInfo.getAmount().compareTo(new BigDecimal("0")) > 0) {
-                Date nowTime = new Date();
-                Date sendTime = new Date(nowTime.getTime());
-                Map<String, Object> params = new HashMap<>();
-                params.put("name", couponInfo.getName());
-                params.put("amount", couponInfo.getAmount());
-                params.put("tips", "您的卡券已到账,请查收~");
-                weixinService.sendSubscribeMessage(userInfo.getMerchantId(), userInfo.getId(), userInfo.getOpenId(), WxMessageEnum.COUPON_ARRIVAL.getKey(), "pages/user/index", params, sendTime);
+                // 发送小程序订阅消息
+                if (userInfo != null && couponInfo != null && couponInfo.getAmount().compareTo(new BigDecimal("0")) > 0) {
+                    Date nowTime = new Date();
+                    Date sendTime = new Date(nowTime.getTime());
+                    Map<String, Object> params = new HashMap<>();
+                    params.put("name", couponInfo.getName());
+                    params.put("amount", couponInfo.getAmount());
+                    params.put("tips", "您的卡券已到账,请查收~");
+                    weixinService.sendSubscribeMessage(userInfo.getMerchantId(), userInfo.getId(), userInfo.getOpenId(), WxMessageEnum.COUPON_ARRIVAL.getKey(), "pages/user/index", params, sendTime);
+                }
+            } catch (Exception e) {
+                // empty
             }
         }
     }

+ 3 - 0
fuint-repository/src/main/java/com/fuint/repository/model/MtCommissionLog.java

@@ -56,6 +56,9 @@ public class MtCommissionLog implements Serializable {
     @ApiModelProperty("规则ID")
     private Integer ruleId;
 
+    @ApiModelProperty("规则项ID")
+    private Integer ruleItemId;
+
     @ApiModelProperty("备注")
     private String description;
 

+ 1 - 1
fuint-repository/src/main/resources/mapper/MtOrderMapper.xml

@@ -66,6 +66,6 @@
     </select>
 
     <select id="getTobeCommissionOrderList" resultType="com.fuint.repository.model.MtOrder">
-        SELECT t.* FROM `mt_order` t WHERE t.PAY_TIME &lt;= #{dateTime} AND t.ID NOT IN(SELECT ID FROM `mt_commission_log` c WHERE c.STATUS != 'D') LIMIT 20
+        SELECT t.* FROM `mt_order` t WHERE t.PAY_TIME &lt;= #{dateTime} AND t.ID NOT IN(SELECT ID FROM `mt_commission_log` c WHERE c.STATUS != 'D') ORDER BY t.ID DESC LIMIT 10
     </select>
 </mapper>