소스 검색

返利调整

fanzherong_v 1 개월 전
부모
커밋
fef547db82

+ 41 - 3
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/rechargerecord/service/impl/BizRechargeRecordServiceImpl.java

@@ -37,10 +37,13 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.api.SaBaseLoginUserApi;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.biz.modular.rechargeplanconfig.entity.BizRechargePlanConfig;
 import vip.xiaonuo.biz.modular.rechargeplanconfig.mapper.BizRechargePlanConfigMapper;
 import vip.xiaonuo.biz.modular.rechargerecord.param.*;
+import vip.xiaonuo.biz.modular.recommendrecord.entity.BizRecommendRecord;
+import vip.xiaonuo.biz.modular.recommendrecord.service.BizRecommendRecordService;
 import vip.xiaonuo.biz.modular.user.entity.BizUser;
 import vip.xiaonuo.biz.modular.user.mapper.BizUserMapper;
 import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
@@ -60,6 +63,7 @@ import java.math.RoundingMode;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 充值记录表Service接口实现类
@@ -81,6 +85,10 @@ public class BizRechargeRecordServiceImpl extends ServiceImpl<BizRechargeRecordM
     private BizRechargePlanConfigMapper bizRechargePlanConfigMapper;
     @Resource
     private BizUserMapper bizUserMapper;
+    @Resource
+    private BizRecommendRecordService bizRecommendRecordService;
+    @Resource(name = "loginUserApi")
+    private SaBaseLoginUserApi loginUserApi;
 
 
     @Override
@@ -176,9 +184,39 @@ public class BizRechargeRecordServiceImpl extends ServiceImpl<BizRechargeRecordM
 
             //计算返点金额
             if (ObjectUtil.isNotEmpty(bizUser.getReferralUser())) {
-                BigDecimal rebate = bizRechargePlanConfig.getRebateRatio().divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
-                BigDecimal rebateAmount = bizRechargeRecordAddParam.getRechargeAmount().multiply(rebate);
-                bizRechargeRecord.setRebateAmount(rebateAmount);
+                //查询推荐人信息
+                List<cn.hutool.json.JSONObject> roleList = loginUserApi.getRoleListByUserId(bizUser.getReferralUser());
+                List<String> roleCodeList = roleList.stream().map(jsonObject -> jsonObject.getStr("code")).collect(Collectors.toList());
+                log.info("推荐人角色编码集合:"+roleCodeList);
+                if(ObjectUtil.isNotEmpty(roleCodeList)){
+                    if(StringUtils.equals(roleCodeList.get(0),"YK8PsRXAdf")){
+                        //店员角色
+                        //查询当日推荐人推荐人数
+                        String format = DateUtil.format(DateUtil.date(), "yyyy-MM-dd");
+                        long count = bizRecommendRecordService.count(new QueryWrapper<BizRecommendRecord>().lambda().
+                                eq(BizRecommendRecord::getRecommendUserId, bizUser.getReferralUser()).
+                                between(BizRecommendRecord::getCreateTime, format + " 00:00:00", format + " 23:59:59"));
+                        if(count>=10){
+                            BigDecimal rebate = bizRechargePlanConfig.getRebateRatio().divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+                            BigDecimal rebateAmount = bizRechargeRecordAddParam.getRechargeAmount().multiply(rebate);
+                            bizRechargeRecord.setRebateAmount(rebateAmount);
+                        }else{
+                            if(count == 0){
+                                BigDecimal rebate = new BigDecimal(1).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+                                BigDecimal rebateAmount = bizRechargeRecordAddParam.getRechargeAmount().multiply(rebate);
+                                bizRechargeRecord.setRebateAmount(rebateAmount);
+                            }else{
+                                BigDecimal rebate = new BigDecimal(count).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+                                BigDecimal rebateAmount = bizRechargeRecordAddParam.getRechargeAmount().multiply(rebate);
+                                bizRechargeRecord.setRebateAmount(rebateAmount);
+                            }
+                        }
+                    }else{
+                        BigDecimal rebate = bizRechargePlanConfig.getRebateRatio().divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+                        BigDecimal rebateAmount = bizRechargeRecordAddParam.getRechargeAmount().multiply(rebate);
+                        bizRechargeRecord.setRebateAmount(rebateAmount);
+                    }
+                }
             }
         }
         String openId = commonWxUtil.getOpenId(bizRechargeRecordAddParam.getCode(), wxPayConfig.getGetOpenIdUrl(), wxPayConfig.getAppId(), wxPayConfig.getAppSecret());