Compare commits
	
		
			3 Commits
		
	
	
		
			564fb2bf12
			...
			fe382acca8
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | fe382acca8 | |
|  | 9f8b77867c | |
|  | ec0006a40c | 
|  | @ -76,11 +76,11 @@ public class CuMemberBonusController extends BaseController { | |||
|      */ | ||||
|     @AccessPermissions("totalBonus") | ||||
|     @PostMapping("/query-bonus-total") | ||||
|     @Log(module = EOperationModule.BONUS_TOTAL,business = EOperationBusiness.BONUS_TOTAL , method = EOperationMethod.SELECT) | ||||
|     @Log(module = EOperationModule.BONUS_TOTAL, business = EOperationBusiness.BONUS_TOTAL, method = EOperationMethod.SELECT) | ||||
|     @ColumnAuthority(perms = "totalBonus") | ||||
|     public TableDataInfo listBonusTotal(@RequestBody BonusParam bonusParam){ | ||||
|         List<Integer> pkVertex=new ArrayList<>(); | ||||
|         if(StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())){ | ||||
|     public TableDataInfo listBonusTotal(@RequestBody BonusParam bonusParam) { | ||||
|         List<Integer> pkVertex = new ArrayList<>(); | ||||
|         if (StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())) { | ||||
|             pkVertex = Arrays.stream(bonusParam.getPkBdVertexStr().split(",")) | ||||
|                     .map(Integer::parseInt) | ||||
|                     .collect(Collectors.toList()); | ||||
|  | @ -99,10 +99,10 @@ public class CuMemberBonusController extends BaseController { | |||
|      * 分页查询会员某个时间段内的奖金汇总 | ||||
|      */ | ||||
|     @PostMapping("/export-bonus-total") | ||||
|     @Log(module = EOperationModule.BONUS_TOTAL,business = EOperationBusiness.BONUS_TOTAL , method = EOperationMethod.EXPORT) | ||||
|     public void exportBonusTotal(HttpServletResponse response, BonusParam bonusParam){ | ||||
|         List<Integer> pkVertex=new ArrayList<>(); | ||||
|         if(StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())){ | ||||
|     @Log(module = EOperationModule.BONUS_TOTAL, business = EOperationBusiness.BONUS_TOTAL, method = EOperationMethod.EXPORT) | ||||
|     public void exportBonusTotal(HttpServletResponse response, BonusParam bonusParam) { | ||||
|         List<Integer> pkVertex = new ArrayList<>(); | ||||
|         if (StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())) { | ||||
|             pkVertex = Arrays.stream(bonusParam.getPkBdVertexStr().split(",")) | ||||
|                     .map(Integer::parseInt) | ||||
|                     .collect(Collectors.toList()); | ||||
|  | @ -121,7 +121,7 @@ public class CuMemberBonusController extends BaseController { | |||
|         List<BonusTotalVO> totalVoList = new ArrayList<>(); | ||||
|         cuMemberBonusList.forEach(cuMemberBonus -> { | ||||
|             BonusTotalVO bonusTotalVO = BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class); | ||||
|             for(String key : CuMemberBonusVO.INCOME_ARRAY){ | ||||
|             for (String key : CuMemberBonusVO.INCOME_ARRAY) { | ||||
|                 ReflectUtils.invokeSetter(bonusTotalVO, key + BonusFieldConstants.INCOME_SUFFIX, ComputeUtil.computeMultiply(ReflectUtils.invokeGetter(cuMemberBonus, key), cuMemberBonus.getOutExchangeRate())); | ||||
|             } | ||||
|             totalVoList.add(bonusTotalVO); | ||||
|  | @ -135,9 +135,9 @@ public class CuMemberBonusController extends BaseController { | |||
|     @AccessPermissions("BonusDetail") | ||||
|     @PostMapping("/query-bonus-detail") | ||||
|     @Log(module = EOperationModule.BONUS_DETAIL, method = EOperationMethod.SELECT) | ||||
|     public TableDataInfo listBonus(@RequestBody BonusParam bonusParam){ | ||||
|         List<Integer> pkVertex=new ArrayList<>(); | ||||
|         if(StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())){ | ||||
|     public TableDataInfo listBonus(@RequestBody BonusParam bonusParam) { | ||||
|         List<Integer> pkVertex = new ArrayList<>(); | ||||
|         if (StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())) { | ||||
|             pkVertex = Arrays.stream(bonusParam.getPkBdVertexStr().split(",")) | ||||
|                     .map(Integer::parseInt) | ||||
|                     .collect(Collectors.toList()); | ||||
|  | @ -145,16 +145,16 @@ public class CuMemberBonusController extends BaseController { | |||
|         bonusParam.setPkVertexList(pkVertex); | ||||
|         bonusParam.setPkCountry(SecurityUtils.getPkCountry()); | ||||
|         //获取管理员权限《角色地区范围、 体系列表、团队列表) | ||||
|         Date date=DateUtils.currentDate(); | ||||
|         if(bonusParam.getStartDate()==null||bonusParam.getEndDate()==null){ | ||||
|         Date date = DateUtils.currentDate(); | ||||
|         if (null == bonusParam.getStartDate() || null == bonusParam.getEndDate()) { | ||||
|             bonusParam.setStartDate(DateUtils.currentMonthFirstDate()); | ||||
|             bonusParam.setEndDate(DateUtils.beforeDate(1, ChronoUnit.DAYS,date)); | ||||
|             bonusParam.setEndDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, date)); | ||||
|         } | ||||
|         packageBonusParam(bonusParam); | ||||
|         startPage(); | ||||
|         List<CuMemberBonusExt> cuMemberBonusExtList = cuMemberBonusService.queryMemberBonusVoByConditionForServer(bonusParam); | ||||
|         CuMemberBonusExt cmb =cuMemberBonusService.queryMemberBonusByConditionForServerSum(bonusParam); | ||||
|         if(cmb!=null){ | ||||
|         CuMemberBonusExt cmb = cuMemberBonusService.queryMemberBonusByConditionForServerSum(bonusParam); | ||||
|         if (cmb != null) { | ||||
|             cmb.setMemberCode("合计"); | ||||
|             cuMemberBonusExtList.add(cmb); | ||||
|         } | ||||
|  | @ -169,9 +169,9 @@ public class CuMemberBonusController extends BaseController { | |||
|      */ | ||||
|     @PostMapping("/export-bonus-detail") | ||||
|     @Log(module = EOperationModule.BONUS_DETAIL, method = EOperationMethod.SELECT) | ||||
|     public void exportBonusDetail(HttpServletResponse response, BonusParam bonusParam){ | ||||
|         List<Integer> pkVertex=new ArrayList<>(); | ||||
|         if(StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())){ | ||||
|     public void exportBonusDetail(HttpServletResponse response, BonusParam bonusParam) { | ||||
|         List<Integer> pkVertex = new ArrayList<>(); | ||||
|         if (StringUtils.isNotEmpty(bonusParam.getPkBdVertexStr())) { | ||||
|             pkVertex = Arrays.stream(bonusParam.getPkBdVertexStr().split(",")) | ||||
|                     .map(Integer::parseInt) | ||||
|                     .collect(Collectors.toList()); | ||||
|  | @ -182,20 +182,20 @@ public class CuMemberBonusController extends BaseController { | |||
|         List<CuMemberBonusExt> cuMemberBonusExtList = cuMemberBonusService.queryMemberBonusVoByConditionForServer(bonusParam); | ||||
|         CuMemberBonusExt cuMemberBonusExt = cuMemberBonusService.initCuMemberBonus(); | ||||
|         cuMemberBonusExt.setMemberCode("小计:"); | ||||
|         if(CollectionUtil.isNotEmpty(cuMemberBonusExtList)) { | ||||
|         if (CollectionUtil.isNotEmpty(cuMemberBonusExtList)) { | ||||
|             cuMemberBonusExt.setOutExchangeRate(cuMemberBonusExtList.get(0).getOutExchangeRate()); | ||||
|             for (CuMemberBonusExt memberBonusExt : cuMemberBonusExtList) { | ||||
|                 cuMemberBonusService.calculateBonusTotal(cuMemberBonusExt, memberBonusExt); | ||||
|             } | ||||
|         } | ||||
|         cuMemberBonusExtList.add(cuMemberBonusExt); | ||||
|         List<CuMemberBonusVO> cuMemberBonusVoList =  getBonusDetail(cuMemberBonusExtList); | ||||
|         List<CuMemberBonusVO> cuMemberBonusVoList = getBonusDetail(cuMemberBonusExtList); | ||||
|         Map<String, Integer> bonusDetail = menuColumnServiceApi.queryMenuColumn("BonusDetail", SecurityUtils.getUserId()).getData(); | ||||
|         ExcelUtil<CuMemberBonusVO> util = new ExcelUtil<>(CuMemberBonusVO.class,bonusDetail); | ||||
|         ExcelUtil<CuMemberBonusVO> util = new ExcelUtil<>(CuMemberBonusVO.class, bonusDetail); | ||||
|         util.exportExcel(response, cuMemberBonusVoList, "奖金明细导出"); | ||||
|     } | ||||
| 
 | ||||
|     private List<CuMemberBonusVO>  getBonusDetail(List<CuMemberBonusExt> cuMemberBonusExtList) { | ||||
|     private List<CuMemberBonusVO> getBonusDetail(List<CuMemberBonusExt> cuMemberBonusExtList) { | ||||
|         List<CuMemberBonusVO> cuMemberBonusVoList = new ArrayList<>(cuMemberBonusExtList.size()); | ||||
|         for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) { | ||||
|             CuMemberBonusVO cuMemberBonusVO = BeanUtil.copyProperties(cuMemberBonusExt, CuMemberBonusVO.class); | ||||
|  | @ -203,7 +203,7 @@ public class CuMemberBonusController extends BaseController { | |||
|             cuMemberBonusVO.setMemberCode(cuMemberBonusExt.getMemberCode()); | ||||
|             cuMemberBonusVO.setMemberName(cuMemberBonusExt.getMemberName()); | ||||
| 
 | ||||
|             for(String key :CuMemberBonusVO.INCOME_ARRAY){ | ||||
|             for (String key : CuMemberBonusVO.INCOME_ARRAY) { | ||||
|                 ReflectUtils.invokeSetter(cuMemberBonusVO, key + BonusFieldConstants.INCOME_SUFFIX, ComputeUtil.computeMultiply(ReflectUtils.invokeGetter(cuMemberBonusExt, key), cuMemberBonusExt.getOutExchangeRate())); | ||||
|             } | ||||
|             cuMemberBonusVoList.add(cuMemberBonusVO); | ||||
|  | @ -217,7 +217,7 @@ public class CuMemberBonusController extends BaseController { | |||
|     @AccessPermissions("sourceBonus") | ||||
|     @PostMapping("/query-bonus-source") | ||||
|     @Log(module = EOperationModule.BONUS_SOURCE, business = EOperationBusiness.BONUS_SOURCE, method = EOperationMethod.SELECT) | ||||
|     public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam){ | ||||
|     public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) { | ||||
|         bonusParam.setPkCountry(SecurityUtils.getPkCountry()); | ||||
|         packageBonusParam(bonusParam); | ||||
|         startPage(); | ||||
|  | @ -230,7 +230,7 @@ public class CuMemberBonusController extends BaseController { | |||
|      */ | ||||
|     @PostMapping("/export-bonus-source") | ||||
|     @Log(module = EOperationModule.BONUS_SOURCE, business = EOperationBusiness.BONUS_SOURCE, method = EOperationMethod.EXPORT) | ||||
|     public void exportBonusSource(HttpServletResponse response, BonusParam bonusParam){ | ||||
|     public void exportBonusSource(HttpServletResponse response, BonusParam bonusParam) { | ||||
|         bonusParam.setPkCountry(SecurityUtils.getPkCountry()); | ||||
|         packageBonusParam(bonusParam); | ||||
|         TableDataInfo tableDataInfo = cuMemberBonusService.queryMemberBonusDetailSerVoByCondition(bonusParam); | ||||
|  | @ -239,20 +239,20 @@ public class CuMemberBonusController extends BaseController { | |||
|         Map<String, String> transactionMap = transactionCommonService.exportEnumTransaction(EOrderType.values(), EBonusIncomeStatus.values()); | ||||
|         Map<Integer, String> transactionLongMap = transactionCommonService.exportEnumTransactionByDB(EnumsPrefixConstants.KEY_GRADE, EnumsPrefixConstants.KEY_AWARD); | ||||
|         for (MemberBonusDetailSerVO memberBonusDetailSerVO : memberBonusDetailSerVOList) { | ||||
|             if(transactionMap.containsKey(EnumsPrefixConstants.ORDER_TYPE + memberBonusDetailSerVO.getOrderType().toString())) { | ||||
|             if (transactionMap.containsKey(EnumsPrefixConstants.ORDER_TYPE + memberBonusDetailSerVO.getOrderType().toString())) { | ||||
|                 memberBonusDetailSerVO.setOrderTypeVal(transactionMap.get(EnumsPrefixConstants.ORDER_TYPE + memberBonusDetailSerVO.getOrderType())); | ||||
|             } | ||||
|             if(transactionMap.containsKey(EnumsPrefixConstants.BONUS_INCOME_STATUS + memberBonusDetailSerVO.getIncomeStatus())){ | ||||
|             if (transactionMap.containsKey(EnumsPrefixConstants.BONUS_INCOME_STATUS + memberBonusDetailSerVO.getIncomeStatus())) { | ||||
|                 memberBonusDetailSerVO.setIncomeStatusVal(transactionMap.get(EnumsPrefixConstants.BONUS_INCOME_STATUS + memberBonusDetailSerVO.getIncomeStatus())); | ||||
|             } | ||||
|             if(transactionLongMap.containsKey(memberBonusDetailSerVO.getPkSettleGrade())){ | ||||
|             if (transactionLongMap.containsKey(memberBonusDetailSerVO.getPkSettleGrade())) { | ||||
|                 memberBonusDetailSerVO.setPkSettleGradeVal(transactionLongMap.get(memberBonusDetailSerVO.getPkSettleGrade())); | ||||
|             } | ||||
|             if(transactionLongMap.containsKey(memberBonusDetailSerVO.getPkAwards())){ | ||||
|             if (transactionLongMap.containsKey(memberBonusDetailSerVO.getPkAwards())) { | ||||
|                 memberBonusDetailSerVO.setPkAwardsVal(transactionLongMap.get(memberBonusDetailSerVO.getPkAwards())); | ||||
|             } | ||||
|         } | ||||
|         ExcelUtil<MemberBonusDetailSerVO> util = new ExcelUtil<>(MemberBonusDetailSerVO.class,menuColumnServiceApi.queryMenuColumn("sourceBonus", SecurityUtils.getUserId()).getData()); | ||||
|         ExcelUtil<MemberBonusDetailSerVO> util = new ExcelUtil<>(MemberBonusDetailSerVO.class, menuColumnServiceApi.queryMenuColumn("sourceBonus", SecurityUtils.getUserId()).getData()); | ||||
|         util.exportExcel(response, memberBonusDetailSerVOList, "奖金来源导出"); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -45,11 +45,11 @@ import java.util.*; | |||
| public abstract class BonusSettleHandle { | ||||
| 
 | ||||
|     @DubboReference | ||||
|     protected ISaOrderServiceApi saOrderServiceApi; | ||||
|     ISaOrderServiceApi saOrderServiceApi; | ||||
|     @DubboReference | ||||
|     protected IBonusItemsServiceApi bonusItemsServiceApi; | ||||
|     IBonusItemsServiceApi bonusItemsServiceApi; | ||||
|     @DubboReference | ||||
|     private ICurrencyServiceApi currencyServiceApi; | ||||
|     ICurrencyServiceApi currencyServiceApi; | ||||
| 
 | ||||
|     protected ICuMemberTreeService cuMemberTreeService; | ||||
| 
 | ||||
|  | @ -655,33 +655,12 @@ public abstract class BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 获得 直推级差收益的备注 | ||||
|      * | ||||
|      * @param saOrderExt           订单编号 | ||||
|      * @param cuMemberBonusRange   报单服务费 | ||||
|      * @param sourceMemberRangeExt 提供奖金的人 | ||||
|      * @param targetMemberRangeExt 获得奖金的人 | ||||
|      * @Description: 获得 报单服务费收益的备注 | ||||
|      * @return: String | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/11/17 11:22 | ||||
|      */ | ||||
|     protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt, | ||||
|                                CuMemberRangeExt targetMemberRangeExt) { | ||||
|         String remark = String.format(BonusMsgConstants.RANGE, saOrderExt.getOrderCode(), | ||||
|                 sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), | ||||
|                 targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), | ||||
|                 cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getRangeAwardsValue(), targetMemberRangeExt.getRangeAwardsValue()); | ||||
|         cuMemberBonusRange.setRemark(remark); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param saOrderExt           订单编号 | ||||
|      * @param cuMemberBonusRange   报单服务费 | ||||
|      * @param sourceMemberRangeExt 提供奖金的人 | ||||
|      * @param targetMemberRangeExt 获得奖金的人 | ||||
|      * @Description: 获得 报单服务费收益的备注 | ||||
|      * @return: String | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/11/17 11:22 | ||||
|      */ | ||||
|     protected void rangeRetailRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, | ||||
|                                      CuMemberRetailRangeExt targetMemberRangeExt) { | ||||
|  | @ -710,32 +689,13 @@ public abstract class BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 获得 报单服务费收益的备注 | ||||
|      * 获得 平级收益的备注 | ||||
|      * | ||||
|      * @param saOrderExt           订单编号 | ||||
|      * @param cuMemberBonusRange   报单服务费 | ||||
|      * @param sourceMemberRangeExt 提供奖金的人 | ||||
|      * @param targetMemberRangeExt 获得奖金的人 | ||||
|      */ | ||||
|     protected void oriRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt, | ||||
|                                   CuMemberRangeExt targetMemberRangeExt) { | ||||
|         String remark = String.format(BonusMsgConstants.ORI_RANGE, saOrderExt.getOrderCode(), | ||||
|                 sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), | ||||
|                 targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), | ||||
|                 cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getRangeAwardsValue()); | ||||
|         cuMemberBonusRange.setRemark(remark); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param saOrderExt           订单编号 | ||||
|      * @param cuMemberBonusRange   报单服务费 | ||||
|      * @param sourceMemberRangeExt 提供奖金的人 | ||||
|      * @param targetMemberRangeExt 获得奖金的人 | ||||
|      * @Description: 获得 报单服务费收益的备注 | ||||
|      * @return: String | ||||
|      * @Author: sui q | ||||
|      * @Date: 2022/11/17 11:22 | ||||
|      */ | ||||
|     protected void oriRetailRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt, | ||||
|                                         CuMemberRetailRangeExt targetMemberRangeExt) { | ||||
|         String remark = String.format(BonusMsgConstants.ORI_RANGE, saOrderExt.getOrderCode(), | ||||
|  |  | |||
|  | @ -77,8 +77,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 会员结算map(key:会员ID,value:结算扩展) | ||||
|         Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); | ||||
| 
 | ||||
|         // 购买升级等级map(key:等级值,value:等级对象) | ||||
|         Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>(); | ||||
|         // 团队升级等级map(key:等级值,value:等级对象) | ||||
|         Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>(); | ||||
|         // 等级map(key:等级值,value:等级对象) | ||||
|  | @ -86,9 +84,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 等级列表 | ||||
|         List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList(); | ||||
|         for (BdGrade bdGrade : retaiGradeList) { | ||||
|             if (bdGrade.getBoxNumber() > 0) { | ||||
|                 retaiBuyGradeMap.put(bdGrade.getGradeValue(), bdGrade); | ||||
|             } | ||||
|             if (bdGrade.getBoxTotal() > 0) { | ||||
|                 retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade); | ||||
|             } | ||||
|  | @ -102,28 +97,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
| 
 | ||||
|         for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { | ||||
|             if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { | ||||
|                 // 会员结算map不存在这个会员,则为新会员没处理过,需要处理 | ||||
|                 cuMemberRetailRangeExt.setBuyNum(0); | ||||
|                 // TODO new 目前一次性补差升级,不需要校验是不是当天了 | ||||
|                 cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue()); | ||||
| //                if (cuMemberRetailRangeExt.getPayTime() != null && DateUtils.compareDateEqual(DateUtils.parseStringToDate(settleDate), cuMemberRetailRangeExt.getPayTime())) { | ||||
| //                    cuMemberRetailRangeExt.setSameDate(EYesNo.YES.getIntValue()); | ||||
| //                } else { | ||||
| //                    cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue()); | ||||
| //                } | ||||
|                 for (Integer gradeValue : retaiBuyGradeMap.keySet()) { | ||||
|                     BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue); | ||||
|                     if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) { | ||||
|                         // TODO new 一次性补差,需要下个等级的盒数 - 当前等级盒数??? | ||||
|                         cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber()); | ||||
| //                        if (cuMemberRetailRangeExt.getSameDate().equals(EYesNo.YES.getIntValue())) { | ||||
| //                            cuMemberRetailRangeExt.setBuyNum(cuMemberRetailRangeExt.getNewBoxNum()); | ||||
| //                        } else { | ||||
| //                            cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber()); | ||||
| //                        } | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|                 memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); | ||||
|             } | ||||
|         } | ||||
|  | @ -159,7 +132,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         // 计算团队业绩、盒数,计算等级、奖衔 | ||||
|         cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeList)); | ||||
| 
 | ||||
|         // TODO new 奖金处理 | ||||
|         // 奖金处理 | ||||
|         List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(); | ||||
|         if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() | ||||
|                 || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType() | ||||
|  | @ -171,11 +144,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                     // 计算直推级差收益 + 平级收益 | ||||
|                     cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, currentPeriod, saOrderItems, saOrderExt)); | ||||
| 
 | ||||
|                     if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() | ||||
|                             || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { | ||||
|                         // 注册、升级,计算是否激活 | ||||
|                         sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue()); | ||||
|                     } | ||||
|                     // 注册、升级 并且有盒数商品,算激活 | ||||
|                     sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | @ -396,6 +366,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 日结: | ||||
|      * 计算新零售团队的奖金,极差、平级、福利、福利分红、区域 | ||||
|      */ | ||||
|     void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO, | ||||
|  | @ -444,6 +415,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|             Map<Integer, BdGrade> retaiBuyGradeMap = new TreeMap<>(); | ||||
|             // 团队升级等级map(key:等级值,value:等级对象) | ||||
|             Map<Integer, BdGrade> retailTeamGradeMap = new TreeMap<>(); | ||||
|             // 等级map(key:等级值,value:等级对象) | ||||
|             Map<Integer, BdGrade> gradeMap = new HashMap<>(); | ||||
|             // 等级map(key:等级ID,value:等级对象) | ||||
|             Map<Integer, BdGrade> gradeIdMap = new HashMap<>(); | ||||
|  | @ -470,21 +442,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                     cuMemberRetailRangeExt.setBuyNum(0); | ||||
|                     // TODO new 目前一次性补差升级,不需要校验是不是当天了 | ||||
|                     cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue()); | ||||
| //                    if (cuMemberRetailRangeExt.getPayTime() != null && DateUtils.compareDateEqual(DateUtils.parseStringToDate(settleDate), cuMemberRetailRangeExt.getPayTime())) { | ||||
| //                        cuMemberRetailRangeExt.setSameDate(EYesNo.YES.getIntValue()); | ||||
| //                    } else { | ||||
| //                        cuMemberRetailRangeExt.setSameDate(EYesNo.NO.getIntValue()); | ||||
| //                    } | ||||
|                     for (Integer gradeValue : retaiBuyGradeMap.keySet()) { | ||||
|                         BdGrade bdGrade = retaiBuyGradeMap.get(gradeValue); | ||||
|                         if (bdGrade.getBoxNumber() > 0 && cuMemberRetailRangeExt.getGradeValue().equals(gradeValue)) { | ||||
|                             // TODO new 一次性补差,需要下个等级的盒数 - 当前等级盒数??? | ||||
|                             cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber()); | ||||
| //                            if (cuMemberRetailRangeExt.getSameDate().equals(EYesNo.YES.getIntValue())) { | ||||
| //                                cuMemberRetailRangeExt.setBuyNum(cuMemberRetailRangeExt.getNewBoxNum()); | ||||
| //                            } else { | ||||
| //                                cuMemberRetailRangeExt.setBuyNum(bdGrade.getBoxNumber()); | ||||
| //                            } | ||||
|                             break; | ||||
|                         } | ||||
|                     } | ||||
|  | @ -541,8 +503,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 // 计算团队业绩、盒数,计算等级、奖衔 | ||||
|                 cuMemberAwardsList.addAll(calculateRetailRangeGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, null, boxNum, cuMemberGradeList)); | ||||
| 
 | ||||
| 
 | ||||
|                 // TODO new 奖金处理 | ||||
|                 // 计算奖金 直推级差 + 平级收益 | ||||
|                 if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() | ||||
|                         || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) | ||||
|  | @ -1308,20 +1268,20 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|         CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember()); | ||||
|         // 推荐人 | ||||
|         long pkParent = sourceMemberRangeExt.getPkParent(); | ||||
|         // 商品价格(没有乘商品数量) | ||||
| 
 | ||||
| //        // 商品价格 | ||||
| //        BigDecimal beginBuyPrice = saOrderItems.getWaresPrice(); | ||||
| //        BigDecimal comBuyPrice = saOrderItems.getWaresPrice(); | ||||
| // | ||||
| //        // 开始计算等级值 | ||||
| //        int beginGradeValue = sourceMemberRangeExt.getGradeValue(); | ||||
| //        // 直推级差收益 | ||||
| //        BigDecimal calBonusIncome = BigDecimal.ZERO; | ||||
| 
 | ||||
|         // 商品最终价格 | ||||
|         BigDecimal waresPrice = saOrderItems.getWaresPrice(); | ||||
|         // 商品数量 | ||||
|         Integer waresQuantity = saOrderItems.getWaresQuantity(); | ||||
| 
 | ||||
|         // 商品价格 | ||||
|         BigDecimal beginBuyPrice = saOrderItems.getWaresPrice(); | ||||
|         BigDecimal comBuyPrice = saOrderItems.getWaresPrice(); | ||||
| 
 | ||||
|         // 开始计算等级值 | ||||
|         int beginGradeValue = sourceMemberRangeExt.getGradeValue(); | ||||
|         // 直推级差收益 | ||||
|         BigDecimal calBonusIncome = BigDecimal.ZERO; | ||||
| 
 | ||||
|         BigDecimal waresQuantityBig = new BigDecimal(saOrderItems.getWaresQuantity()); | ||||
|         // 前一个会员等级 | ||||
|         int beforeGradeValue = 0; | ||||
|         // 前一个会员等级的平级收益人数 | ||||
|  | @ -1348,6 +1308,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|             } | ||||
|             // 当前会员等级值 | ||||
|             int calGradeValue = targetMemberRangeExt.getGradeValue(); | ||||
|             // 当前会员等级 | ||||
|             BdGrade bdGrade = gradeMap.get(calGradeValue); | ||||
| 
 | ||||
|             // 直推级差税前收益 | ||||
|             BigDecimal rangeBonusIncome = null; | ||||
|  | @ -1358,19 +1320,19 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 // 前一个会员等级为0,肯定为第一次处理,直接处理直推级差收益 | ||||
|                 if (EGrade.HAI_FAN.getValue() == calGradeValue) { | ||||
|                     // VIP,拿1份40 | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS; | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig); | ||||
|                 } else if (EGrade.YOU_KE.getValue() == calGradeValue) { | ||||
|                     // SVIP,拿2份40 | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("2")); | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("2")); | ||||
|                 } else if (EGrade.MAKER.getValue() == calGradeValue) { | ||||
|                     // 卓越,拿3份40 | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("3")); | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("3")); | ||||
|                 } else if (EGrade.VIP.getValue() == calGradeValue) { | ||||
|                     // 首席,拿4份40 | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("4")); | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("4")); | ||||
|                 } else if (EGrade.S_VIP.getValue() == calGradeValue) { | ||||
|                     // 合伙人,拿5份40 | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal("5")); | ||||
|                     rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal("5")); | ||||
|                 } | ||||
|                 // 赋值前一个会员等级 | ||||
|                 beforeGradeValue = calGradeValue; | ||||
|  | @ -1380,8 +1342,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                     // V1 没有平级收益 | ||||
|                     continue; | ||||
|                 } | ||||
|                 if (beforeSameAlgebra >= RetailConstants.SAME_ALGEBRA) { | ||||
|                 if (beforeSameAlgebra >= bdGrade.getAlgebra()) { | ||||
|                     // 平级收益已经满10代,不继续处理平级收益 | ||||
|                     if (EGrade.S_VIP.getValue() == beforeGradeValue) { | ||||
|                         // 平级处理等级为最高级V5,则结束处理 | ||||
|                         break; | ||||
|                     } | ||||
|                     continue; | ||||
|                 } | ||||
|                 // 平级收益(商品价格 * 千分之五) -- 2位小数,四舍五入 | ||||
|  | @ -1395,7 +1361,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 int tmpGradeVal = (calGradeValue - beforeGradeValue) / 10; | ||||
| 
 | ||||
|                 // 新等级的直推级差收益 | ||||
|                 rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(new BigDecimal(tmpGradeVal)); | ||||
|                 rangeBonusIncome = RetailConstants.RANGE_BONUS.multiply(waresQuantityBig).multiply(new BigDecimal(tmpGradeVal)); | ||||
|                 // 直推级差收益 = 新等级的直推级差收益 - 上一等级的平级收益 | ||||
|                 rangeBonusIncome = rangeBonusIncome.subtract(beforeSameBonus); | ||||
| 
 | ||||
|  | @ -1416,7 +1382,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue()); | ||||
|                 CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); | ||||
|                 cuMemberBonusRange.setCalValue(BigDecimal.ZERO); | ||||
|                 cuMemberBonusRange.setPretaxIncome(rangeBonusIncome.multiply(new BigDecimal(waresQuantity))); | ||||
|                 cuMemberBonusRange.setCalAchieve(waresPrice); | ||||
|                 cuMemberBonusRange.setPretaxIncome(rangeBonusIncome); | ||||
|                 cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); | ||||
|                 cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); | ||||
|                 cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); | ||||
|  | @ -1434,8 +1401,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                         targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); | ||||
|                 int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue()); | ||||
|                 CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); | ||||
|                 oriMemberBonusRange.setCalValue(BigDecimal.valueOf(2)); | ||||
|                 oriMemberBonusRange.setPretaxIncome(sameBonusIncome.multiply(new BigDecimal(waresQuantity))); | ||||
|                 oriMemberBonusRange.setCalValue(RetailConstants.SAME_RATIO); | ||||
|                 oriMemberBonusRange.setCalAchieve(waresPrice); | ||||
|                 oriMemberBonusRange.setPretaxIncome(sameBonusIncome); | ||||
|                 oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); | ||||
|                 oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); | ||||
|                 oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); | ||||
|  | @ -1448,135 +1416,127 @@ public class BonusSettleRangeHandle extends BonusSettleHandle { | |||
|                 memberBonusRangeList.add(oriMemberBonusRange); | ||||
|             } | ||||
| 
 | ||||
|             /////////////////////////////////////////////////////////////// | ||||
| 
 | ||||
| 
 | ||||
|             // 如果价格是209,代表是第一单激活,只有平级收益,只有V5有平级收益 | ||||
|             if (beginBuyPrice.equals(BigDecimal.valueOf(209))) { | ||||
|                 calGradeValue = EGrade.S_VIP.getValue(); | ||||
|                 if (beginGradeValue < EGrade.S_VIP.getValue()) { | ||||
|                     beginGradeValue = EGrade.S_VIP.getValue(); | ||||
|                 } | ||||
|             } | ||||
|             BdGrade bdGrade = gradeMap.get(calGradeValue); | ||||
|             BigDecimal buyPrice = bdGrade.getBuyPrice(); | ||||
|             boolean isRange = Boolean.FALSE; | ||||
|             // 有极差或者有平级 | ||||
|             if (ComputeUtil.compareGreaterThan(beginBuyPrice, buyPrice)) { | ||||
|                 // 计算极差 | ||||
| 
 | ||||
|                 CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), | ||||
|                         targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); | ||||
|                 int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue()); | ||||
|                 CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); | ||||
|                 cuMemberBonusRange.setCalValue(BigDecimal.ZERO); | ||||
|                 cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(beginBuyPrice, buyPrice), calBonusIncome), saOrderItems.getWaresQuantity()), BigDecimal.ONE)); | ||||
|                 cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); | ||||
|                 cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); | ||||
|                 cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); | ||||
|                 rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); | ||||
|                 BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); | ||||
|                 if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { | ||||
|                     cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); | ||||
|                     setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); | ||||
|                 } | ||||
|                 memberBonusRangeList.add(cuMemberBonusRange); | ||||
| 
 | ||||
|                 beginBuyPrice = buyPrice; | ||||
|                 comBuyPrice = buyPrice; | ||||
|                 beginGradeValue = calGradeValue; | ||||
|                 sourceMemberRangeExt = targetMemberRangeExt; | ||||
|                 calBonusIncome = BigDecimal.ZERO; | ||||
|             } else { | ||||
|                 isRange = Boolean.TRUE; | ||||
|                 pkParent = targetMemberRangeExt.getPkMember(); | ||||
|             } | ||||
|             if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) { | ||||
|                 if (isRange) { | ||||
|                     pkParent = targetMemberRangeExt.getPkParent(); | ||||
|                 } | ||||
|                 continue; | ||||
|             } | ||||
|             if (bdGrade.getAlgebra() > 0) { | ||||
|                 Long lastPkParent = pkParent; | ||||
|                 for (int j = 0; j < bdGrade.getAlgebra(); j++) { | ||||
|                     targetMemberRangeExt = memberRangeExtMap.get(lastPkParent); | ||||
|                     if (targetMemberRangeExt == null) { | ||||
|                         if (memberRangeExtMap.get(pkParent) == null) { | ||||
|                             break; | ||||
|                         } | ||||
|                         pkParent = memberRangeExtMap.get(pkParent).getPkParent(); | ||||
|                         break; | ||||
|                     } | ||||
|                     calGradeValue = targetMemberRangeExt.getGradeValue(); | ||||
|                     BigDecimal sameBuyPrice = gradeMap.get(calGradeValue).getBuyPrice(); | ||||
|                     // 有平级 | ||||
| //                    if (calGradeValue < beginGradeValue) { | ||||
|                     if (ComputeUtil.compareGreaterThan(sameBuyPrice, comBuyPrice)) { | ||||
|                         lastPkParent = targetMemberRangeExt.getPkParent(); | ||||
|                         pkParent = targetMemberRangeExt.getPkParent(); | ||||
|                         j--; | ||||
|                         continue; | ||||
|                     } | ||||
|                     if (ComputeUtil.compareGreaterThan(beginBuyPrice, sameBuyPrice)) { | ||||
|                         pkParent = lastPkParent; | ||||
|                         break; | ||||
| //            // 如果价格是209,代表是第一单激活,只有平级收益,只有V5有平级收益 | ||||
| //            if (beginBuyPrice.equals(BigDecimal.valueOf(209))) { | ||||
| //                calGradeValue = EGrade.S_VIP.getValue(); | ||||
| //                if (beginGradeValue < EGrade.S_VIP.getValue()) { | ||||
| //                    beginGradeValue = EGrade.S_VIP.getValue(); | ||||
| //                } | ||||
| //            } | ||||
| //            BdGrade bdGrade = gradeMap.get(calGradeValue); | ||||
| //            BigDecimal buyPrice = bdGrade.getBuyPrice(); | ||||
| //            boolean isRange = Boolean.FALSE; | ||||
| //            // 有极差或者有平级 | ||||
| //            if (ComputeUtil.compareGreaterThan(beginBuyPrice, buyPrice)) { | ||||
| //                // 计算极差 | ||||
| //                CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), | ||||
| //                        targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); | ||||
| //                int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue()); | ||||
| //                CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); | ||||
| //                cuMemberBonusRange.setCalValue(BigDecimal.ZERO); | ||||
| //                cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(beginBuyPrice, buyPrice), calBonusIncome), saOrderItems.getWaresQuantity()), BigDecimal.ONE)); | ||||
| //                cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); | ||||
| //                cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); | ||||
| //                cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); | ||||
| //                rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); | ||||
| //                BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); | ||||
| //                if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) { | ||||
| //                    cuMemberBonus.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome())); | ||||
| //                    setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange); | ||||
| //                } | ||||
| //                memberBonusRangeList.add(cuMemberBonusRange); | ||||
| // | ||||
| //                beginBuyPrice = buyPrice; | ||||
| //                comBuyPrice = buyPrice; | ||||
| //                beginGradeValue = calGradeValue; | ||||
| //                sourceMemberRangeExt = targetMemberRangeExt; | ||||
| //                calBonusIncome = BigDecimal.ZERO; | ||||
| //            } else { | ||||
| //                isRange = Boolean.TRUE; | ||||
| //                pkParent = targetMemberRangeExt.getPkMember(); | ||||
| //            } | ||||
| //            if (saOrderExt.getOrderType().equals(EOrderType.RETAIL_CONSUME.getValue())) { | ||||
| //                if (isRange) { | ||||
| //                    pkParent = targetMemberRangeExt.getPkParent(); | ||||
| //                } | ||||
| //                continue; | ||||
| //            } | ||||
| //            if (bdGrade.getAlgebra() > 0) { | ||||
| //                Long lastPkParent = pkParent; | ||||
| //                for (int j = 0; j < bdGrade.getAlgebra(); j++) { | ||||
| //                    targetMemberRangeExt = memberRangeExtMap.get(lastPkParent); | ||||
| //                    if (targetMemberRangeExt == null) { | ||||
| //                        if (memberRangeExtMap.get(pkParent) == null) { | ||||
| //                            break; | ||||
| //                        } | ||||
| //                        pkParent = memberRangeExtMap.get(pkParent).getPkParent(); | ||||
| //                        break; | ||||
| //                    } | ||||
| //                    calGradeValue = targetMemberRangeExt.getGradeValue(); | ||||
| //                    BigDecimal sameBuyPrice = gradeMap.get(calGradeValue).getBuyPrice(); | ||||
| //                    // 有平级 | ||||
| //                    if (ComputeUtil.compareGreaterThan(sameBuyPrice, comBuyPrice)) { | ||||
| //                        lastPkParent = targetMemberRangeExt.getPkParent(); | ||||
| //                        pkParent = targetMemberRangeExt.getPkParent(); | ||||
| //                        j--; | ||||
| //                        continue; | ||||
|                     } | ||||
|                     lastPkParent = targetMemberRangeExt.getPkParent(); | ||||
|                     if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() || | ||||
|                             ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || | ||||
|                             targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() || | ||||
|                             EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) { | ||||
|                         j--; | ||||
|                         continue; | ||||
|                     } | ||||
|                     BigDecimal bonusIncome = BigDecimal.ZERO; | ||||
|                     if (j == 0) { | ||||
|                         bonusIncome = bdGrade.getFirstAlgebra(); | ||||
|                     } else if (j == 1) { | ||||
|                         bonusIncome = bdGrade.getSecondAlgebra(); | ||||
|                     } else if (j == 2) { | ||||
|                         bonusIncome = bdGrade.getThirdAlgebra(); | ||||
|                     } | ||||
|                     if (ComputeUtil.compareEqual(beginBuyPrice, sameBuyPrice)) { | ||||
|                         CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), | ||||
|                                 targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); | ||||
|                         int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue()); | ||||
|                         CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); | ||||
|                         oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10)); | ||||
|                         oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(bonusIncome, saOrderItems.getWaresQuantity()), BigDecimal.ONE)); | ||||
|                         oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); | ||||
|                         oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); | ||||
|                         oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); | ||||
|                         oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); | ||||
|                         BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); | ||||
|                         if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) { | ||||
|                             cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome())); | ||||
|                             setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange); | ||||
|                         } | ||||
|                         memberBonusRangeList.add(oriMemberBonusRange); | ||||
|                         calBonusIncome = ComputeUtil.computeAdd(calBonusIncome, bonusIncome); | ||||
|                         pkParent = lastPkParent; | ||||
|                     } else { | ||||
|                         j--; | ||||
|                     } | ||||
|                     if (j == bdGrade.getAlgebra() - 1) { | ||||
|                         beginGradeValue += 1; | ||||
|                         comBuyPrice = ComputeUtil.computeSubtract(comBuyPrice, BigDecimal.ONE); | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|             } else { | ||||
|                 if (isRange) { | ||||
|                     pkParent = targetMemberRangeExt.getPkParent(); | ||||
|                 } | ||||
|             } | ||||
|             if (beginGradeValue > EGrade.S_VIP.getValue()) { | ||||
|                 break; | ||||
|             } | ||||
| //                    } | ||||
| //                    if (ComputeUtil.compareGreaterThan(beginBuyPrice, sameBuyPrice)) { | ||||
| //                        pkParent = lastPkParent; | ||||
| //                        break; | ||||
| //                    } | ||||
| //                    lastPkParent = targetMemberRangeExt.getPkParent(); | ||||
| //                    if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() || | ||||
| //                            ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || | ||||
| //                            targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue() || | ||||
| //                            EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) { | ||||
| //                        j--; | ||||
| //                        continue; | ||||
| //                    } | ||||
| //                    BigDecimal bonusIncome = BigDecimal.ZERO; | ||||
| //                    if (j == 0) { | ||||
| //                        bonusIncome = bdGrade.getFirstAlgebra(); | ||||
| //                    } else if (j == 1) { | ||||
| //                        bonusIncome = bdGrade.getSecondAlgebra(); | ||||
| //                    } else if (j == 2) { | ||||
| //                        bonusIncome = bdGrade.getThirdAlgebra(); | ||||
| //                    } | ||||
| //                    if (ComputeUtil.compareEqual(beginBuyPrice, sameBuyPrice)) { | ||||
| //                        CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(), | ||||
| //                                targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate()); | ||||
| //                        int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue()); | ||||
| //                        CuMemberBonusRange oriMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems); | ||||
| //                        oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10)); | ||||
| //                        oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeDivide(ComputeUtil.computeMultiply(bonusIncome, saOrderItems.getWaresQuantity()), BigDecimal.ONE)); | ||||
| //                        oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade()); | ||||
| //                        oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade()); | ||||
| //                        oriMemberBonusRange.setPkOrderItems(saOrderItems.getPkId()); | ||||
| //                        oriRetailRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt); | ||||
| //                        BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate()); | ||||
| //                        if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) { | ||||
| //                            cuMemberBonus.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailSameLevelIncome(), oriMemberBonusRange.getPretaxIncome())); | ||||
| //                            setRetailTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange); | ||||
| //                        } | ||||
| //                        memberBonusRangeList.add(oriMemberBonusRange); | ||||
| //                        calBonusIncome = ComputeUtil.computeAdd(calBonusIncome, bonusIncome); | ||||
| //                        pkParent = lastPkParent; | ||||
| //                    } else { | ||||
| //                        j--; | ||||
| //                    } | ||||
| //                    if (j == bdGrade.getAlgebra() - 1) { | ||||
| //                        beginGradeValue += 1; | ||||
| //                        comBuyPrice = ComputeUtil.computeSubtract(comBuyPrice, BigDecimal.ONE); | ||||
| //                        break; | ||||
| //                    } | ||||
| //                } | ||||
| //            } else { | ||||
| //                if (isRange) { | ||||
| //                    pkParent = targetMemberRangeExt.getPkParent(); | ||||
| //                } | ||||
| //            } | ||||
| //            if (beginGradeValue > EGrade.S_VIP.getValue()) { | ||||
| //                break; | ||||
| //            } | ||||
|         } | ||||
|         return memberBonusRangeList; | ||||
|     } | ||||
|  |  | |||
|  | @ -9,27 +9,11 @@ import java.math.BigDecimal; | |||
| import java.util.Date; | ||||
| 
 | ||||
| /** | ||||
|  * @description: 奖金明细表 | ||||
|  * @author: sui q | ||||
|  * @time: 2023/5/20 15:31 | ||||
|  * @classname: CuMemberBonusVO | ||||
|  * @package_name: com.hzs.member.bonus.vo | ||||
|  * version 1.0.0 | ||||
|  * 奖金明细表 | ||||
|  */ | ||||
| @Data | ||||
| public class CuMemberBonusVO implements Serializable { | ||||
| 
 | ||||
| //    /** | ||||
| //     * 需要转换人民币的 | ||||
| //     */ | ||||
| //    public static final String[] INCOME_ARRAY = new String[]{ | ||||
| //            "directIncome", "expandIncome", "expandNoCapping", "expandCapping", | ||||
| //            "coachIncome", "shareIncome", "serviceIncome", "cloudDirectIncome", | ||||
| //            "cloudPurIncome", "cloudRepurIncome", "repurPushIncome", "repurRangeIncome", "repurExpandIncome", | ||||
| //            "repurCoupon", "repurCouponShare", "backPoints", "serviceSpend", | ||||
| //            "globalPoints", "carAwardPoints", "storeIncome", "hiFunIncome", | ||||
| //            "makerDirectIncome", "makerShareIncome", "makerRealSubtotal", "purRealSubtotal", | ||||
| //            "cloudRealSubtotal", "repurRealSubtotal", "repurCouponSubtotal", "realIncomeTotal"}; | ||||
|     /** | ||||
|      * 主键 | ||||
|      */ | ||||
|  | @ -102,185 +86,60 @@ public class CuMemberBonusVO implements Serializable { | |||
|      */ | ||||
|     private Integer grantStatus; | ||||
| 
 | ||||
| //    /** | ||||
| //     * 直推收益 | ||||
| //     */ | ||||
| //    @Excel(name = "直推收益", scale = 2) | ||||
| //    private BigDecimal directIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 直推收益 | ||||
| //     */ | ||||
| //    @Excel(name = "直推收益($)", scale = 2) | ||||
| //    private BigDecimal directIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展收益 | ||||
| //     */ | ||||
| //    @Excel(name = "拓展收益", scale = 2) | ||||
| //    private BigDecimal expandIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展收益 | ||||
| //     */ | ||||
| //    @Excel(name = "拓展收益($)", scale = 2) | ||||
| //    private BigDecimal expandIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展无封 (拓展收益按等级正常比例结算,并 拓展收益按等级正常比例结算 无封顶) | ||||
| //     */ | ||||
| //    private BigDecimal expandNoCapping; | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展封顶 (拓展收益按等级正常比例结算,不按4-N结算,根据配置的封顶值限制最大收益) | ||||
| //     */ | ||||
| //    private BigDecimal expandCapping; | ||||
| // | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展无封 (拓展收益按等级正常比例结算,并 拓展收益按等级正常比例结算 无封顶) | ||||
| //     */ | ||||
| //    private BigDecimal expandNoCappingOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 拓展封顶 (拓展收益按等级正常比例结算,不按4-N结算,根据配置的封顶值限制最大收益) | ||||
| //     */ | ||||
| //    private BigDecimal expandCappingOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 辅导收益 | ||||
| //     */ | ||||
| //    @Excel(name = "辅导收益", scale = 2) | ||||
| //    private BigDecimal coachIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 辅导收益 | ||||
| //     */ | ||||
| //    @Excel(name = "辅导收益($)", scale = 2) | ||||
| //    private BigDecimal coachIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 分红收益 | ||||
| //     */ | ||||
| //    @Excel(name = "分红收益", scale = 2) | ||||
| //    private BigDecimal shareIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 分红收益 | ||||
| //     */ | ||||
| //    @Excel(name = "分红收益($)", scale = 2) | ||||
| //    private BigDecimal shareIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 报单收益 | ||||
| //     */ | ||||
| //    @Excel(name = "报单收益", scale = 2) | ||||
| //    private BigDecimal serviceIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 报单收益 | ||||
| //     */ | ||||
| //    @Excel(name = "服务收益($)", scale = 2) | ||||
| //    private BigDecimal serviceIncome; | ||||
| // | ||||
| // | ||||
| //    /** | ||||
| //     * 云代直推收益 | ||||
| //     */ | ||||
| //    @Excel(name = "云代直推收益", scale = 2) | ||||
| //    private BigDecimal cloudDirectIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代直推收益 | ||||
| //     */ | ||||
| //    @Excel(name = "云代直推收益($)", scale = 2) | ||||
| //    private BigDecimal cloudDirectIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代首购收益 | ||||
| //     */ | ||||
| //    @Excel(name = "云代首购收益", scale = 2) | ||||
| //    private BigDecimal cloudPurIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代首购收益 | ||||
| //     */ | ||||
| //    @Excel(name = "云代首购收益($)", scale = 2) | ||||
| //    private BigDecimal cloudPurIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代复购收益 | ||||
| //     */ | ||||
| //    @Excel(name = "云代复购收益", scale = 2) | ||||
| //    private BigDecimal cloudRepurIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代复购收益 | ||||
| //     */ | ||||
| //    @Excel(name = "云代复购收益($)", scale = 2) | ||||
| //    private BigDecimal cloudRepurIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购级差收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购推荐收益", scale = 2) | ||||
| //    private BigDecimal repurPushIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购级差收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购推荐收益", scale = 2) | ||||
| //    private BigDecimal repurPushIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购级差收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购级差收益", scale = 2) | ||||
| //    private BigDecimal repurRangeIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购级差收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购级差收益($)", scale = 2) | ||||
| //    private BigDecimal repurRangeIncome; | ||||
| // | ||||
| // | ||||
| //    /** | ||||
| //     * 复购拓展收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购拓展收益", scale = 2) | ||||
| //    private BigDecimal repurExpandIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购拓展收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购拓展收益($)", scale = 2) | ||||
| //    private BigDecimal repurExpandIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购卷 | ||||
| //     */ | ||||
| //    @Excel(name = "复购卷", scale = 2) | ||||
| //    private BigDecimal repurCouponOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购卷 | ||||
| //     */ | ||||
| //    @Excel(name = "复购卷($)", scale = 2) | ||||
| //    private BigDecimal repurCoupon; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购券均分收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购券均分", scale = 2) | ||||
| //    private BigDecimal repurCouponShareOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购券均分收益 | ||||
| //     */ | ||||
| //    @Excel(name = "复购券均分($)", scale = 2) | ||||
| //    private BigDecimal repurCouponShare; | ||||
| // | ||||
|     /** | ||||
|      * 需要转换人民币的 | ||||
|      */ | ||||
|     public static final String[] INCOME_ARRAY = new String[]{ | ||||
|             "backPoints", "retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome", | ||||
|             "retailBenefitRangeIncome", "retailBenefitAvgIncome", | ||||
|             "retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal"}; | ||||
| 
 | ||||
| 
 | ||||
|     private BigDecimal retailRangeIncome; | ||||
|     /** | ||||
|      * 直推收益 | ||||
|      */ | ||||
|     @Excel(name = "直推收益", scale = 2) | ||||
|     private BigDecimal retailRangeIncomeOri; | ||||
| 
 | ||||
|     private BigDecimal retailSameLevelIncome; | ||||
|     /** | ||||
|      * 平级收益 | ||||
|      */ | ||||
|     @Excel(name = "平级收益", scale = 2) | ||||
|     private BigDecimal retailSameLevelIncomeOri; | ||||
| 
 | ||||
|     private BigDecimal retailAreaIncome; | ||||
|     /** | ||||
|      * 区域分红 | ||||
|      */ | ||||
|     @Excel(name = "区域分红", scale = 2) | ||||
|     private BigDecimal retailAreaIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售福利极差收益 | ||||
|      */ | ||||
|     private BigDecimal retailBenefitRangeIncome; | ||||
| 
 | ||||
|     @Excel(name = " 福利极差收益", scale = 2) | ||||
|     private BigDecimal retailBenefitRangeIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售福利平均收益 | ||||
|      */ | ||||
|     private BigDecimal retailBenefitAvgIncome; | ||||
| 
 | ||||
|     @Excel(name = " 福利平均收益", scale = 2) | ||||
|     private BigDecimal retailBenefitAvgIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售福利加权收益 | ||||
|      */ | ||||
|     private BigDecimal retailBenefitIncome; | ||||
| 
 | ||||
|     @Excel(name = " 福利加权收益", scale = 2) | ||||
|     private BigDecimal retailBenefitIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 商城重消 | ||||
|      */ | ||||
|  | @ -290,184 +149,11 @@ public class CuMemberBonusVO implements Serializable { | |||
|     /** | ||||
|      * 商城重消 | ||||
|      */ | ||||
|     @Excel(name = "商城重消($)", scale = 2) | ||||
|     private BigDecimal backPoints; | ||||
| // | ||||
| //    /** | ||||
| //     * 平台服务费 | ||||
| //     */ | ||||
| //    @Excel(name = "平台服务费", scale = 2) | ||||
| //    private BigDecimal serviceSpendOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 平台服务费 | ||||
| //     */ | ||||
| //    @Excel(name = "平台服务费($)", scale = 2) | ||||
| //    private BigDecimal serviceSpend; | ||||
| // | ||||
| //    /** | ||||
| //     * 环球积分 | ||||
| //     */ | ||||
| //    @Excel(name = "直推极差", scale = 2) | ||||
| //    private BigDecimal globalPointsOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 环球积分 | ||||
| //     */ | ||||
| //    @Excel(name = "直推极差($)", scale = 2) | ||||
| //    private BigDecimal globalPoints; | ||||
| // | ||||
| //    /** | ||||
| //     * 车奖积分 | ||||
| //     */ | ||||
| //    @Excel(name = "车奖积分", scale = 2) | ||||
| //    private BigDecimal carAwardPointsOri; | ||||
| // | ||||
| // | ||||
| //    /** | ||||
| //     * 车奖积分 | ||||
| //     */ | ||||
| //    @Excel(name = "车奖积分($)", scale = 2) | ||||
| //    private BigDecimal carAwardPoints; | ||||
| // | ||||
| //    /** | ||||
| //     * 店铺收益 | ||||
| //     */ | ||||
| //    @Excel(name = "店铺收益", scale = 2) | ||||
| //    private BigDecimal storeIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 店铺收益 | ||||
| //     */ | ||||
| //    @Excel(name = "店铺收益($)", scale = 2) | ||||
| //    private BigDecimal storeIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 嗨粉推荐收益 | ||||
| //     */ | ||||
| //    @Excel(name = "嗨粉推荐收益", scale = 2) | ||||
| //    private BigDecimal hiFunIncomeOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 嗨粉推荐收益 | ||||
| //     */ | ||||
| //    @Excel(name = "嗨粉推荐收益($)", scale = 2) | ||||
| //    private BigDecimal hiFunIncome; | ||||
| // | ||||
| //    /** | ||||
| //     * 首购实发小计 | ||||
| //     */ | ||||
| //    @Excel(name = "首购实发小计", scale = 2) | ||||
| //    private BigDecimal purRealSubtotalOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 首购实发小计 | ||||
| //     */ | ||||
| //    @Excel(name = "首购实发小计($)", scale = 2) | ||||
| //    private BigDecimal purRealSubtotal; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代实发小计 | ||||
| //     */ | ||||
| //    @Excel(name = "云代实发小计", scale = 2) | ||||
| //    private BigDecimal cloudRealSubtotalOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 云代实发小计 | ||||
| //     */ | ||||
| //    @Excel(name = "云代实发小计($)", scale = 2) | ||||
| //    private BigDecimal cloudRealSubtotal; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购实发小计 | ||||
| //     */ | ||||
| //    @Excel(name = "复购实发小计", scale = 2) | ||||
| //    private BigDecimal repurRealSubtotalOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购实发小计 | ||||
| //     */ | ||||
| //    @Excel(name = "复购实发小计($)", scale = 2) | ||||
| //    private BigDecimal repurRealSubtotal; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购券小计 | ||||
| //     */ | ||||
| //    @Excel(name = "复购券实发小计", scale = 2) | ||||
| //    private BigDecimal repurCouponSubtotalOri; | ||||
| // | ||||
| //    /** | ||||
| //     * 复购券小计 | ||||
| //     */ | ||||
| //    @Excel(name = "复购券实发小计($)", scale = 2) | ||||
| //    private BigDecimal repurCouponSubtotal; | ||||
| 
 | ||||
|     /** | ||||
|      * 需要转换人民币的 | ||||
|      */ | ||||
|     public static final String[] INCOME_ARRAY = new String[]{ | ||||
|             "backPoints","retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome", | ||||
|             "retailBenefitRangeIncome","retailBenefitAvgIncome", | ||||
|             "retailBenefitIncome","retailRealSubtotal","realIncomeTotal"}; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售极差收益 | ||||
|      */ | ||||
|     @Excel(name = "新零售极差收益($)", scale = 2) | ||||
|     private BigDecimal retailRangeIncome; | ||||
| 
 | ||||
|     @Excel(name = " 新零售极差收益", scale = 2) | ||||
|     private BigDecimal retailRangeIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售平级收益 | ||||
|      */ | ||||
|     @Excel(name = "平级收益($)", scale = 2) | ||||
|     private BigDecimal retailSameLevelIncome; | ||||
| 
 | ||||
|     @Excel(name = " 平级收益", scale = 2) | ||||
|     private BigDecimal retailSameLevelIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售区域收益 | ||||
|      */ | ||||
|     @Excel(name = "区域收益($)", scale = 2) | ||||
|     private BigDecimal retailAreaIncome; | ||||
| 
 | ||||
|     @Excel(name = " 区域收益", scale = 2) | ||||
|     private BigDecimal retailAreaIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售福利极差收益 | ||||
|      */ | ||||
|     @Excel(name = "福利极差收益($)", scale = 2) | ||||
|     private BigDecimal retailBenefitRangeIncome; | ||||
| 
 | ||||
|     @Excel(name = " 福利极差收益", scale = 2) | ||||
|     private BigDecimal retailBenefitRangeIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售福利平均收益 | ||||
|      */ | ||||
|     @Excel(name = "福利平均收益($)", scale = 2) | ||||
|     private BigDecimal retailBenefitAvgIncome; | ||||
| 
 | ||||
|     @Excel(name = " 福利平均收益", scale = 2) | ||||
|     private BigDecimal retailBenefitAvgIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售福利加权收益 | ||||
|      */ | ||||
|     @Excel(name = "福利加权收益($)", scale = 2) | ||||
|     private BigDecimal retailBenefitIncome; | ||||
| 
 | ||||
|     @Excel(name = " 福利加权收益", scale = 2) | ||||
|     private BigDecimal retailBenefitIncomeOri; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售收益小计 | ||||
|      */ | ||||
|     @Excel(name = "收益小计($)", scale = 2) | ||||
|     private BigDecimal retailRealSubtotal; | ||||
| 
 | ||||
|     @Excel(name = " 收益小计", scale = 2) | ||||
|  | @ -479,10 +165,8 @@ public class CuMemberBonusVO implements Serializable { | |||
|     @Excel(name = "实发收益总计", scale = 2) | ||||
|     private BigDecimal realIncomeTotalOri; | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 实发收益总计 | ||||
|      */ | ||||
|     @Excel(name = "实发收益总计($)", scale = 2) | ||||
|     private BigDecimal realIncomeTotal; | ||||
| } | ||||
|  |  | |||
|  | @ -111,28 +111,29 @@ | |||
|         merge into ${rangeTableName} a | ||||
|         using ( | ||||
|         <foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union"> | ||||
|             select #{item.pkMember} pk_member,#{item.pkAwards} pk_awards,#{item.pkGrade} pk_grade, | ||||
|             #{item.consumeBoxNum} consume_box_num,#{item.newBoxNum} new_bosx_num,#{item.pkShareAwards} pk_share_awards, | ||||
|             #{item.teamBoxNum} team_box_num,#{item.monthBoxNum} month_box_num,#{item.teamNewBoxNum} team_new_box_num, | ||||
|             #{item.consumePv} consume_pv,#{item.monthConsumePv} month_consume_pv, | ||||
|             #{item.newConsumePv} new_consume_pv,#{item.teamConsumeAmount} team_consume_amount, | ||||
|             #{item.teamMonthAmount} team_month_amount,#{item.teamMonthPv} team_month_pv, | ||||
|             #{item.teamNewPv} team_new_pv,#{item.teamNewAmount} team_new_amount, | ||||
|             #{item.teamConsumePv} team_consume_pv,#{item.newBoxNum} new_box_num, | ||||
|             #{item.recommendNum} recommend_num,#{item.teamNum} team_num,#{item.enableStatus} enable_status | ||||
|             select #{item.pkMember} pk_member, #{item.pkAwards} pk_awards, #{item.pkGrade} pk_grade, | ||||
|             #{item.consumeBoxNum} consume_box_num, #{item.newBoxNum} new_bosx_num, #{item.pkShareAwards} pk_share_awards, | ||||
|             #{item.teamBoxNum} team_box_num, #{item.monthBoxNum} month_box_num, #{item.teamNewBoxNum} team_new_box_num, | ||||
|             #{item.consumePv} consume_pv, #{item.monthConsumePv} month_consume_pv, | ||||
|             #{item.newConsumePv} new_consume_pv, #{item.teamConsumeAmount} team_consume_amount, | ||||
|             #{item.teamMonthAmount} team_month_amount, #{item.teamMonthPv} team_month_pv, | ||||
|             #{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount, | ||||
|             #{item.teamConsumePv} team_consume_pv, #{item.newBoxNum} new_box_num, | ||||
|             #{item.recommendNum} recommend_num, #{item.teamNum} team_num, | ||||
|             #{item.enableStatus} enable_status | ||||
|             from dual | ||||
|         </foreach> | ||||
|         ) b | ||||
|         on (a.pk_member=b.pk_member) | ||||
|         when matched then | ||||
|         update set a.pk_awards=b.pk_awards,a.pk_grade=b.pk_grade,a.pk_share_awards=b.pk_share_awards, | ||||
|         a.consume_box_num=b.consume_box_num,a.new_box_num=b.new_box_num,a.team_box_num=b.team_box_num, | ||||
|         a.month_box_num=b.month_box_num,a.team_new_box_num=b.team_new_box_num, | ||||
|         a.consume_pv=b.consume_pv,a.month_consume_pv=b.month_consume_pv,a.new_consume_pv=b.new_consume_pv, | ||||
|         a.team_consume_amount=b.team_consume_amount,a.team_consume_pv=b.team_consume_pv, | ||||
|         a.team_month_amount=b.team_month_amount,a.team_month_pv=b.team_month_pv, | ||||
|         a.team_new_amount=b.team_new_amount,a.team_new_pv=b.team_new_pv, | ||||
|         a.recommend_num=b.recommend_num,a.team_num=b.team_num,a.enable_status=b.enable_status | ||||
|         update set a.pk_awards = b.pk_awards, a.pk_grade = b.pk_grade, a.pk_share_awards = b.pk_share_awards, | ||||
|         a.consume_box_num = b.consume_box_num, a.new_box_num = b.new_box_num, a.team_box_num = b.team_box_num, | ||||
|         a.month_box_num = b.month_box_num, a.team_new_box_num = b.team_new_box_num, | ||||
|         a.consume_pv = b.consume_pv, a.month_consume_pv = b.month_consume_pv, a.new_consume_pv = b.new_consume_pv, | ||||
|         a.team_consume_amount = b.team_consume_amount, a.team_consume_pv = b.team_consume_pv, | ||||
|         a.team_month_amount = b.team_month_amount, a.team_month_pv = b.team_month_pv, | ||||
|         a.team_new_amount = b.team_new_amount, a.team_new_pv = b.team_new_pv, | ||||
|         a.recommend_num = b.recommend_num, a.team_num = b.team_num, a.enable_status = b.enable_status | ||||
|     </update> | ||||
| 
 | ||||
|     <!-- 当前网体更新极差秒接表 --> | ||||
|  | @ -190,18 +191,18 @@ | |||
|         using ( | ||||
|         <foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union"> | ||||
|             select #{item.pkMember} pk_member, #{item.pkGrade} pk_grade, #{item.pkAwards} pk_awards, | ||||
|             #{item.newConsumePv} new_consume_pv, #{item.teamNewAmount} team_new_amount, | ||||
|             #{item.teamNewPv} team_new_pv, #{item.teamNewBoxNum} team_new_box_num, | ||||
|             #{item.newBoxNum} new_box_num, #{item.enableStatus} enable_status | ||||
|             #{item.newBoxNum} new_box_num, #{item.newConsumePv} new_consume_pv, | ||||
|             #{item.teamNewBoxNum} team_new_box_num, #{item.teamNewPv} team_new_pv, | ||||
|             #{item.teamNewAmount} team_new_amount, #{item.enableStatus} enable_status | ||||
|             from dual | ||||
|         </foreach> | ||||
|         ) b | ||||
|         on (a.pk_member = b.pk_member) | ||||
|         when matched then | ||||
|         update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards, | ||||
|         a.new_consume_pv = b.new_consume_pv, a.team_new_amount = b.team_new_amount, | ||||
|         a.team_new_pv = b.team_new_pv, a.team_new_box_num = b.team_new_box_num, | ||||
|         a.new_box_num = b.new_box_num, a.enable_status = b.enable_status | ||||
|         a.new_box_num = b.new_box_num, a.new_consume_pv = b.new_consume_pv, | ||||
|         a.team_new_box_num = b.team_new_box_num,a.team_new_pv = b.team_new_pv, | ||||
|         a.team_new_amount = b.team_new_amount,a.enable_status = b.enable_status | ||||
|     </update> | ||||
| 
 | ||||
|     <update id="mergeMemberRetailGradeByMember"> | ||||
|  |  | |||
|  | @ -298,8 +298,11 @@ | |||
|         </if> | ||||
|         order by cp.settle_date desc | ||||
|     </select> | ||||
| 
 | ||||
|     <select id="queryMemberBonusByConditionForServer" resultMap="CuMemberBonus"> | ||||
|         select cm.member_code,cm.member_name,cm.pk_settle_grade,cm.pk_awards,bv.vertex_name,ct.team_name, | ||||
|         select cm.member_code, cm.member_name, | ||||
|         cm.pk_settle_grade, cm.pk_awards, | ||||
|         bv.vertex_name, ct.team_name, | ||||
|         cb.period,cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping, | ||||
|         cb.expand_capping,cb.coach_income,cb.share_income,cb.service_income,cb.back_points,cb.service_spend, | ||||
|         cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal, | ||||
|  | @ -311,9 +314,7 @@ | |||
|         cb.retail_benefit_range_income,cb.retail_benefit_avg_income, | ||||
|         cb.retail_benefit_income,cb.retail_real_subtotal, | ||||
|         cb.real_income_total, | ||||
|         cm.pk_vertex, | ||||
|         cm.service_code, | ||||
|         cm.nick_name | ||||
|         cm.pk_vertex, cm.service_code, cm.nick_name | ||||
|         from cu_member_bonus cb | ||||
|         inner join cu_member cm | ||||
|         on cb.pk_member = cm.pk_id | ||||
|  | @ -325,7 +326,7 @@ | |||
|         on ct.pk_id = cm.pk_team_code | ||||
|         left join bd_currency bc | ||||
|         on bc.pk_country = cb.pk_country | ||||
|         where cb.del_flag=0 and cm.del_flag=0 | ||||
|         where cb.del_flag = 0 and cm.del_flag = 0 | ||||
|         and cp.del_flag=0 | ||||
|         <if test="bonusParam.pkCountry != null"> | ||||
|             and cm.pk_settle_country = #{bonusParam.pkCountry} | ||||
|  |  | |||
|  | @ -5,14 +5,13 @@ import com.hzs.common.core.web.controller.BaseController; | |||
| import com.hzs.common.core.web.domain.AjaxResult; | ||||
| import com.hzs.common.core.web.page.TableDataInfo; | ||||
| import com.hzs.common.security.utils.SecurityUtils; | ||||
| 
 | ||||
| import com.hzs.retail.member.service.ICuMemberRetailAchieveService; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  | @ -44,7 +43,13 @@ public class ApiRetailHomePageController extends BaseController { | |||
|         Long pkMember = SecurityUtils.getUserId(); | ||||
|         Integer pkCountry = SecurityUtils.getPkCountry(); | ||||
|         Integer systemType = SecurityUtils.getSystemType(); | ||||
|         return AjaxResult.success(retailAchieveService.selectMemberSmallBox(pkMember, pkCountry, systemType)); | ||||
|         CuMemberRetailDataStatisticsResultVO result = retailAchieveService.getRetailDataStatisticsDetail(pkMember, pkCountry, systemType); | ||||
|         CuMemberRetailAchieveVO vo = CuMemberRetailAchieveVO.builder() | ||||
|                 .totalBox(result.getTotalBoxNum()) | ||||
|                 .smallAreaBox(result.getSmallRangeTotalBoxNum()) | ||||
|                 .build(); | ||||
|         return AjaxResult.success(vo); | ||||
| //        return AjaxResult.success(retailAchieveService.selectMemberSmallBox(pkMember, pkCountry, systemType)); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ package com.hzs.retail.member.mapper; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||||
| import com.hzs.common.domain.member.achieve.CuMemberRetailRange; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; | ||||
| import org.apache.ibatis.annotations.Param; | ||||
| 
 | ||||
| import java.util.List; | ||||
|  | @ -166,6 +167,13 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang | |||
|      */ | ||||
|     List<CuMemberRetailAchieveVO> selectMemberSumAchieve(CuMemberRetailAchieveVO cuMemberAchieveVO); | ||||
| 
 | ||||
|     /** | ||||
|      * 获取会员结算明细 | ||||
|      * @param cuMemberAchieveVO | ||||
|      * @return | ||||
|      */ | ||||
|     List<CuMemberRetailDataStatisticsDetailVO> getRetailDataStatisticsDetail(CuMemberRetailAchieveVO cuMemberAchieveVO); | ||||
| 
 | ||||
|     /** | ||||
|      * 查询当天自己新增盒数 | ||||
|      * | ||||
|  |  | |||
|  | @ -3,8 +3,11 @@ package com.hzs.retail.member.service; | |||
| import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import com.hzs.common.domain.member.achieve.CuMemberRetailRange; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; | ||||
| 
 | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRange> { | ||||
| 
 | ||||
|  | @ -100,4 +103,12 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa | |||
|      */ | ||||
|     List<CuMemberRetailAchieveVO> selectMemberSmallBoxList(CuMemberRetailAchieveVO param); | ||||
| 
 | ||||
|     /** | ||||
|      * 获取会员结算明细 | ||||
|      * @param pkMember | ||||
|      * @param pkCountry | ||||
|      * @param systemType | ||||
|      * @return | ||||
|      */ | ||||
|     CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType); | ||||
| } | ||||
|  |  | |||
|  | @ -1,19 +1,26 @@ | |||
| package com.hzs.retail.member.service.impl; | ||||
| 
 | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| import com.hzs.common.core.constant.TableNameConstants; | ||||
| import com.hzs.common.core.enums.EGrade; | ||||
| import com.hzs.common.core.enums.EYesNo; | ||||
| import com.hzs.common.core.utils.DateUtils; | ||||
| import com.hzs.common.domain.member.achieve.CuMemberRetailRange; | ||||
| import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; | ||||
| import com.hzs.common.domain.member.base.CuMember; | ||||
| import com.hzs.common.security.utils.SecurityUtils; | ||||
| import com.hzs.member.account.service.ICuMemberBaseService; | ||||
| import com.hzs.member.achieve.service.ICuMemberSettlePeriodService; | ||||
| import com.hzs.member.base.service.ICuMemberService; | ||||
| import com.hzs.retail.member.mapper.CuMemberRetailRangeMapper; | ||||
| import com.hzs.retail.member.service.ICuMemberRetailAchieveService; | ||||
| import com.hzs.retail.member.utils.DataStatisticsUtil; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; | ||||
| import com.hzs.system.config.IGradeServiceApi; | ||||
| import com.hzs.system.config.dto.GradeDTO; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
|  | @ -388,9 +395,9 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         String memberRetailTable = getTableName(); | ||||
|         String memberSecondTable = getDayTableName(); | ||||
|         //查询直推会员 | ||||
| //        List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
|         List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
|         // 2025年6月11日 取伞下 + 自己的ID | ||||
|         List<Long> pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType); | ||||
| //        List<Long> pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType); | ||||
|         //根据国家查汇率 | ||||
|         BigDecimal rate = iCuMemberBaseService.getCurrency(pkCountry).getInExchangeRate(); | ||||
|         //查询自己业绩 | ||||
|  | @ -486,8 +493,12 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|      * @return String | ||||
|      */ | ||||
|     private String getAchieveAndBoxTableName(String date) { | ||||
|         int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId(); | ||||
|         return TableNameConstants.CU_MEMBER_AMOUNT_BOX + period; | ||||
|         CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date); | ||||
|         if(ObjectUtil.isNotEmpty(cuMemberSettlePeriod)){ | ||||
|             int period = cuMemberSettlePeriod.getPkId(); | ||||
|             return TableNameConstants.CU_MEMBER_AMOUNT_BOX + period; | ||||
|         } | ||||
|         return ""; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  | @ -546,6 +557,25 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         return new ArrayList<>(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType) { | ||||
|         Long userId = SecurityUtils.getUserId(); | ||||
|         String memberRetailTable = getTableName(); | ||||
|         String memberSecondTable = getDayTableName(); | ||||
|         //查询直推会员 | ||||
|         List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
|         pkMemberList.add(userId); | ||||
|         CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder() | ||||
|                 .memberRetailTable(memberRetailTable) | ||||
|                 .memberRetailSTable(memberSecondTable) | ||||
|                 .pkMemberList(pkMemberList).systemType(systemType).build(); | ||||
|         List<CuMemberRetailDataStatisticsDetailVO> statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO); | ||||
|         CuMemberRetailDataStatisticsResultVO result = DataStatisticsUtil.getCalcMap(statisticsDetailVOList, userId); | ||||
|         log.info("statisticsDetailVOList: {}", JSONUtil.toJsonStr(statisticsDetailVOList)); | ||||
|         log.info("calcMap -> {}", JSONUtil.toJsonStr(result)); | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询会员是否激活 | ||||
|      * | ||||
|  |  | |||
|  | @ -0,0 +1,156 @@ | |||
| package com.hzs.retail.member.utils; | ||||
| 
 | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; | ||||
| import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; | ||||
| 
 | ||||
| import java.math.BigDecimal; | ||||
| import java.util.*; | ||||
| 
 | ||||
| /** | ||||
|  * 用户统计数据工具 | ||||
|  * 主要用户统计用户的业绩/盒数/明细等 | ||||
|  * 主要处理的类为 | ||||
|  * @link com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO | ||||
|  */ | ||||
| public class DataStatisticsUtil { | ||||
|     private static final Long SELF_VIRTUAL_ID = -1000L; | ||||
|     private static final Long BIG_RANGE_VIRTUAL_ID = -2000L; | ||||
|     private static final Long SMALL_RANGE_VIRTUAL_ID = -3000L; | ||||
|     private static final String SELF_VIRTUAL_NAME = "个人消费虚拟分支"; | ||||
|     private static final String BIG_RANGE_VIRTUAL_NAME = "注水大区虚拟分支"; | ||||
|     private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支"; | ||||
| 
 | ||||
|     public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         calcDetailVOTotalField(detailVOList); | ||||
|         addVirtualBranch(detailVOList, pkId); | ||||
|         CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId); | ||||
|         CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(detailVOList, pkId); | ||||
|         return CuMemberRetailDataStatisticsResultVO.builder() | ||||
|                 .totalBoxNum(total.getTotalBoxNum()) | ||||
|                 .totalPv(total.getTotalPv()) | ||||
|                 .bigRangeTotalBoxNum(bigRange.getTotalBoxNum()) | ||||
|                 .bigRangeTotalPv(bigRange.getTotalPv()) | ||||
|                 .smallRangeTotalBoxNum(total.getTotalBoxNum() - bigRange.getTotalBoxNum()) | ||||
|                 .smallRangeTotalPv(total.getTotalPv().subtract(bigRange.getTotalPv())) | ||||
|                 .build(); | ||||
|     } | ||||
|     /** | ||||
|      * 计算集合内数据总数 | ||||
|      * @param detailVOList | ||||
|      */ | ||||
|     public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){ | ||||
|         detailVOList.parallelStream().forEach(detailVO -> { | ||||
|             detailVO.setTotalBoxNum( | ||||
|                     detailVO.getConsumeBoxNum()         // 个人累计消费盒数(日结) | ||||
|                      + detailVO.getNewBoxNum()          // 个人新增盒数(日结) | ||||
|                      + detailVO.getTeamBoxNum()         // 团队累计消费盒数(日结) | ||||
|                      + detailVO.getTeamNewBoxNum()      // 团队新增盒数(日结) | ||||
|                      + detailVO.getSNewBoxNum()         // 个人新增消费盒数(秒结) | ||||
|                      + detailVO.getSTeamNewBoxNum()     // 团队新增盒数(秒结) | ||||
| //                     - detailVO.getBigBoxNum()          // 个人注水大区盒数(日结) | ||||
| //                     - detailVO.getSmallBoxNum()        // 个人注水小区盒数(日结) | ||||
|             ); | ||||
|             detailVO.setTotalPv(detailVO.getConsumePv() | ||||
|                     .add(detailVO.getNewConsumePv()) | ||||
|                     .add(detailVO.getTeamConsumePv()) | ||||
|                     .add(detailVO.getTeamNewPv()) | ||||
|                     .add(detailVO.getSNewConsumePv()) | ||||
|                     .add(detailVO.getSTeamNewPv()) | ||||
|             ); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 增加虚拟分支 主要为 | ||||
|      * 1.自己的消费总数 | ||||
|      * 2.注水的大小区 | ||||
|      * | ||||
|      * @param detailVOList | ||||
|      */ | ||||
|     public static void addVirtualBranch(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         CuMemberRetailDataStatisticsDetailVO detailVO = getDetailVOByPKID(detailVOList, pkId); | ||||
|         if(ObjectUtil.isNotEmpty(detailVO)){ | ||||
|             CuMemberRetailDataStatisticsDetailVO selfVirtualDetailVO = getCuMemberRetailDataStatisticsDetailVO(detailVO); | ||||
|             detailVOList.add(selfVirtualDetailVO); | ||||
|             if(detailVO.getBigBoxNum() >0 || detailVO.getSmallBoxNum() > 0){ | ||||
|                 CuMemberRetailDataStatisticsDetailVO bigRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder() | ||||
|                         .pkId(BIG_RANGE_VIRTUAL_ID) | ||||
|                         .memberCode(BIG_RANGE_VIRTUAL_NAME) | ||||
|                         .totalBoxNum(detailVO.getBigBoxNum()) | ||||
|                         .totalPv(BigDecimal.ZERO) | ||||
|                         .build(); | ||||
|                 CuMemberRetailDataStatisticsDetailVO smallRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder() | ||||
|                         .pkId(SMALL_RANGE_VIRTUAL_ID) | ||||
|                         .memberCode(SMALL_RANGE_VIRTUAL_NAME) | ||||
|                         .totalBoxNum(detailVO.getBigBoxNum()) | ||||
|                         .totalPv(BigDecimal.ZERO) | ||||
|                         .build(); | ||||
|                 detailVOList.add(bigRangeVirtualDetailVO); | ||||
|                 detailVOList.add(smallRangeVirtualDetailVO); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private static CuMemberRetailDataStatisticsDetailVO getCuMemberRetailDataStatisticsDetailVO(CuMemberRetailDataStatisticsDetailVO detailVO) { | ||||
|         return CuMemberRetailDataStatisticsDetailVO.builder() | ||||
|                 .pkId(SELF_VIRTUAL_ID) | ||||
|                 .memberCode(SELF_VIRTUAL_NAME) | ||||
|                 .totalBoxNum( | ||||
|                         detailVO.getConsumeBoxNum() | ||||
|                         + detailVO.getNewBoxNum() | ||||
|                         + detailVO.getSNewBoxNum() | ||||
|                 ) | ||||
|                 .totalPv( | ||||
|                         detailVO.getConsumePv() | ||||
|                                 .add(detailVO.getNewConsumePv()) | ||||
|                                 .add(detailVO.getSNewConsumePv()) | ||||
|                 ) | ||||
|                 .build(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 移除总数Top1 | ||||
|      * @param detailVOList | ||||
|      */ | ||||
|     public static List<CuMemberRetailDataStatisticsDetailVO> getSmallRangeList(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){ | ||||
|         List<CuMemberRetailDataStatisticsDetailVO> result = new ArrayList<>(); | ||||
|         Integer maxTotalBoxNum = getMaxTotalBoxNum(detailVOList); | ||||
|         if (maxTotalBoxNum == null) { | ||||
|             return new ArrayList<>(detailVOList); | ||||
|         } | ||||
|         boolean removed = false; | ||||
|         for (CuMemberRetailDataStatisticsDetailVO vo : detailVOList) { | ||||
|             if (!removed && Objects.equals(vo.getTotalBoxNum(), maxTotalBoxNum)) { | ||||
|                 removed = true; | ||||
|             } else { | ||||
|                 result.add(vo); | ||||
|             } | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 根据ID获取对应数据 | ||||
|      * @param detailVOList | ||||
|      * @return | ||||
|      */ | ||||
|     public static CuMemberRetailDataStatisticsDetailVO getDetailVOByPKID(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         return detailVOList.stream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null); | ||||
|     } | ||||
| 
 | ||||
|     private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) { | ||||
|         return detailVOList.stream() | ||||
|                 .map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum) | ||||
|                 .filter(Objects::nonNull) | ||||
|                 .max(Integer::compare) | ||||
|                 .orElse(null); | ||||
|     } | ||||
|     private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){ | ||||
|         return detailVOList.stream() | ||||
|                 .filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId)) | ||||
|                 .max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)) | ||||
|                 .orElse(null); | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,104 @@ | |||
| package com.hzs.retail.member.vo; | ||||
| 
 | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| 
 | ||||
| import java.io.Serializable; | ||||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * 会员数据统计 | ||||
|  */ | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class CuMemberRetailDataStatisticsDetailVO implements Serializable { | ||||
| 
 | ||||
|     private static final long serialVersionUID = 4225390345989552207L; | ||||
| 
 | ||||
|     /** | ||||
|      * 用户主键 | ||||
|      */ | ||||
|     private Long pkId; | ||||
|     /** | ||||
|      * 用户编号 | ||||
|      */ | ||||
|     private String memberCode; | ||||
| 
 | ||||
|     /** | ||||
|      * 日结表-个人累计消费pv | ||||
|      */ | ||||
|     private BigDecimal consumePv; | ||||
|     /** | ||||
|      * 日结表-个人当日新消费PV | ||||
|      */ | ||||
|     private BigDecimal newConsumePv; | ||||
|     /** | ||||
|      * 日结表-个人伞下累计消费pv | ||||
|      */ | ||||
|     private BigDecimal teamConsumePv; | ||||
|     /** | ||||
|      * 日结表-个人伞下新消费pv | ||||
|      */ | ||||
|     private BigDecimal teamNewPv; | ||||
| 
 | ||||
|     /** | ||||
|      * 日结表-个人累计消费盒数 | ||||
|      */ | ||||
|     private Integer consumeBoxNum; | ||||
|     /** | ||||
|      * 日结表-个人当日新消费盒数 | ||||
|      */ | ||||
|     private Integer newBoxNum; | ||||
|     /** | ||||
|      * 日结表-个人伞下累计消费盒数 | ||||
|      */ | ||||
|     private Integer teamBoxNum; | ||||
|     /** | ||||
|      * 日结表-个人伞下新消费盒数 | ||||
|      */ | ||||
|     private Integer teamNewBoxNum; | ||||
| 
 | ||||
|     /** | ||||
|      * 秒结表-个人新消费盒数 | ||||
|      */ | ||||
|     private Integer sNewBoxNum; | ||||
|     /** | ||||
|      * 秒结表-团队新消费盒数 | ||||
|      */ | ||||
|     private Integer sTeamNewBoxNum; | ||||
|     /** | ||||
|      * 秒结表-个人新消费pv | ||||
|      */ | ||||
|     private BigDecimal sNewConsumePv; | ||||
|     /** | ||||
|      * 秒结表-团队新消费pv | ||||
|      */ | ||||
|     private BigDecimal sTeamNewPv; | ||||
| 
 | ||||
|     private Integer sTeamBoxNum; | ||||
| 
 | ||||
|     /** | ||||
|      * 个人总业绩 | ||||
|      */ | ||||
|     private BigDecimal totalPv; | ||||
|     /** | ||||
|      * 个人总盒数 | ||||
|      */ | ||||
|     private Integer totalBoxNum; | ||||
| 
 | ||||
|     /** | ||||
|      * 注水大区 | ||||
|      */ | ||||
|     private Integer bigBoxNum; | ||||
|     /** | ||||
|      * 注水小区 | ||||
|      */ | ||||
|     private Integer smallBoxNum; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  | @ -0,0 +1,58 @@ | |||
| package com.hzs.retail.member.vo; | ||||
| 
 | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
| 
 | ||||
| import java.io.Serializable; | ||||
| import java.math.BigDecimal; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * 会员数据统计 | ||||
|  */ | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class CuMemberRetailDataStatisticsResultVO implements Serializable { | ||||
| 
 | ||||
|     private static final long serialVersionUID = 747472786422852424L; | ||||
| 
 | ||||
|     /** | ||||
|      * 用户主键 | ||||
|      */ | ||||
|     private Long pkId; | ||||
|     /** | ||||
|      * 用户编号 | ||||
|      */ | ||||
|     private String memberCode; | ||||
| 
 | ||||
|     /** | ||||
|      *  总盒数 | ||||
|      */ | ||||
|     private Integer totalBoxNum; | ||||
|     /** | ||||
|      * 大区盒数 | ||||
|      */ | ||||
|     private Integer bigRangeTotalBoxNum; | ||||
|     /** | ||||
|      * 小区盒数 | ||||
|      */ | ||||
|     private Integer smallRangeTotalBoxNum; | ||||
| 
 | ||||
|     /** | ||||
|      * 总业绩 | ||||
|      */ | ||||
|     private BigDecimal totalPv; | ||||
|     /** | ||||
|      * 大区业绩 | ||||
|      */ | ||||
|     private BigDecimal bigRangeTotalPv; | ||||
|     /** | ||||
|      * 小区业绩 | ||||
|      */ | ||||
|     private BigDecimal smallRangeTotalPv; | ||||
| } | ||||
| 
 | ||||
|  | @ -836,4 +836,39 @@ | |||
|         connect by prior cm.pk_id = cm.pk_parent | ||||
|         order by level | ||||
|     </select> | ||||
|     <select id="getRetailDataStatisticsDetail" | ||||
|             resultType="com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO"> | ||||
|         SELECT | ||||
|             cu.pk_id, | ||||
|             cu.MEMBER_CODE, | ||||
|             NVL( mr.CONSUME_PV, 0 ) consumePv, | ||||
|             NVL( mr.NEW_CONSUME_PV, 0 ) newConsumePv, | ||||
|             NVL( mr.TEAM_CONSUME_PV, 0 ) teamConsumePv, | ||||
|             NVL( mr.TEAM_NEW_PV, 0 ) teamNewPv, | ||||
| 
 | ||||
|             NVL( mr.CONSUME_BOX_NUM, 0 ) consumeBoxNum, | ||||
|             NVL( mr.NEW_BOX_NUM, 0 ) newBoxNum, | ||||
|             NVL( mr.TEAM_BOX_NUM, 0 ) teamBoxNum, | ||||
|             NVL( mr.TEAM_NEW_BOX_NUM, 0 ) teamNewBoxNum, | ||||
|             NVL( mr.BIG_BOX_NUM, 0 ) bigBoxNum, | ||||
|             NVL( mr.SMALL_BOX_NUM, 0 ) smallBoxNum, | ||||
| 
 | ||||
| 
 | ||||
|             NVL( mrs.NEW_BOX_NUM, 0 ) sNewBoxNum, | ||||
|             NVL( mrs.TEAM_NEW_BOX_NUM, 0 ) sTeamNewBoxNum, | ||||
|             NVL( mrs.NEW_CONSUME_PV, 0 ) sNewConsumePv, | ||||
|             NVL( mrs.TEAM_NEW_PV, 0 ) sTeamNewPv | ||||
|         FROM | ||||
|             cu_member cu | ||||
|                 left join ${memberRetailTable} mr on cu.PK_ID = mr.PK_MEMBER and mr.CATEGORY = 0 | ||||
|                 left JOIN ${memberRetailSTable} mrs on cu.PK_ID = mrs.PK_MEMBER | ||||
|         <where> | ||||
|             <if test="pkMemberList != null and pkMemberList.size > 0"> | ||||
|                 cu.pk_id in | ||||
|                 <foreach collection="pkMemberList" item="pkMember" separator="," open="(" close=")"> | ||||
|                     #{pkMember} | ||||
|                 </foreach> | ||||
|             </if> | ||||
|         </where> | ||||
|     </select> | ||||
| </mapper> | ||||
|  |  | |||
|  | @ -1,13 +1,11 @@ | |||
| package com.hzs.system.config.controller.manage; | ||||
| 
 | ||||
| 
 | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | ||||
| import com.hzs.common.core.annotation.Log; | ||||
| import com.hzs.common.core.constant.CacheConstants; | ||||
| import com.hzs.common.core.constant.msg.ConfigMsgConstants; | ||||
| import com.hzs.common.core.domain.R; | ||||
| import com.hzs.common.core.enums.*; | ||||
| import com.hzs.common.core.service.RedisService; | ||||
| import com.hzs.common.core.utils.StringUtils; | ||||
|  | @ -19,10 +17,8 @@ import com.hzs.common.domain.system.config.BdBonusItems; | |||
| import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; | ||||
| import com.hzs.common.security.utils.SecurityUtils; | ||||
| import com.hzs.common.util.TransactionUtils; | ||||
| import com.hzs.system.base.ITransactionServiceApi; | ||||
| import com.hzs.system.config.service.IBdBonusItemsService; | ||||
| import com.hzs.system.config.vo.ApiBdBonusItemsVO; | ||||
| import org.apache.dubbo.config.annotation.DubboReference; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| 
 | ||||
|  | @ -32,12 +28,7 @@ import java.util.Date; | |||
| import java.util.List; | ||||
| 
 | ||||
| /** | ||||
|  * <p> | ||||
|  * 奖项配置 前端控制器 | ||||
|  * </p> | ||||
|  * | ||||
|  * @author zhangjing | ||||
|  * @since 2022-11-09 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/manage/bd-bonus-items") | ||||
|  | @ -45,79 +36,63 @@ public class BdBonusItemsController extends BaseController { | |||
| 
 | ||||
|     @Autowired | ||||
|     private IBdBonusItemsService bonusItemsService; | ||||
|     @DubboReference | ||||
|     private ITransactionServiceApi iTransactionServiceApi; | ||||
|     @Autowired | ||||
|     private RedisService redisService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     public void setRedisService(RedisService redisService) { | ||||
|         this.redisService = redisService; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 查询奖项配置列表 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2022/8/30 10:20 | ||||
|      * @param: [bonusItems] | ||||
|      * @return: com.hzs.common.core.web.page.TableDataInfo | ||||
|      * 查询奖项配置列表 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT) | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(BdBonusItems bonusItems) { | ||||
|         startPage(); | ||||
|         QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper(); | ||||
|         queryWrapper.eq("PK_COUNTRY", SecurityUtils.getPkCountry()); | ||||
|         if(StringUtils.isNotNull(bonusItems.getBonusName())){ | ||||
|             queryWrapper.eq("BONUS_NAME",bonusItems.getBonusName()); | ||||
|         } | ||||
|         queryWrapper.orderByAsc("PK_ID"); | ||||
|         List<BdBonusItemsExt> listExt = new ArrayList<>(); | ||||
| 
 | ||||
|         startPage(); | ||||
|         LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>(); | ||||
|         queryWrapper.eq(BdBonusItems::getPkCountry, SecurityUtils.getPkCountry()); | ||||
|         if (StringUtils.isNotNull(bonusItems.getBonusName())) { | ||||
|             queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName()); | ||||
|         } | ||||
|         queryWrapper.orderByAsc(BdBonusItems::getPkId); | ||||
|         List<BdBonusItems> list = bonusItemsService.list(queryWrapper); | ||||
|         list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class))); | ||||
| 
 | ||||
|         TableDataInfo tableDataInfo = getDataTable(list); | ||||
|         tableDataInfo.setRows(listExt); | ||||
|         return tableDataInfo; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 导出 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2023/4/4 9:56 | ||||
|      * @param: [response, bonusItems] | ||||
|      * @return: void | ||||
|      * 导出 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.EXPORT) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.EXPORT) | ||||
|     @PostMapping("/export") | ||||
|     public void export(HttpServletResponse response, BdBonusItems bonusItems) { | ||||
|         QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper(); | ||||
|         queryWrapper.eq("PK_COUNTRY", SecurityUtils.getPkCountry()); | ||||
|         if(StringUtils.isNotNull(bonusItems.getBonusName())){ | ||||
|             queryWrapper.eq("BONUS_NAME",bonusItems.getBonusName()); | ||||
|         LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>(); | ||||
|         queryWrapper.eq(BdBonusItems::getPkCountry, SecurityUtils.getPkCountry()); | ||||
|         if (StringUtils.isNotNull(bonusItems.getBonusName())) { | ||||
|             queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName()); | ||||
|         } | ||||
|         queryWrapper.orderByAsc("PK_ID"); | ||||
|         queryWrapper.orderByAsc(BdBonusItems::getPkId); | ||||
|         List<BdBonusItemsExt> listExt = new ArrayList<>(); | ||||
|         List<BdBonusItems> list = bonusItemsService.list(queryWrapper); | ||||
|         list.forEach(item -> listExt.add(BeanUtil.copyProperties(item, BdBonusItemsExt.class))); | ||||
|         ExcelUtil<BdBonusItemsExt> util = new ExcelUtil<>(BdBonusItemsExt.class); | ||||
|         util.exportExcel(response, listExt, "奖项配置"); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 查询奖项配置列表(下拉选) | ||||
|      * @author: zhang jing | ||||
|      * @date: 2022/8/30 10:20 | ||||
|      * @param: [bonusItems] | ||||
|      * @return: com.hzs.common.core.web.page.TableDataInfo | ||||
|      * 查询奖项配置列表(下拉选) | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT) | ||||
|     @GetMapping("/listNoPage") | ||||
|     public TableDataInfo listNoPage(BdBonusItems bonusItems) { | ||||
|         QueryWrapper<BdBonusItems> queryWrapper = new QueryWrapper(); | ||||
|         queryWrapper.eq("PK_COUNTRY", SecurityUtils.getPkCountry()); | ||||
|         if(StringUtils.isNotNull(bonusItems.getBonusName())){ | ||||
|             queryWrapper.eq("BONUS_NAME",bonusItems.getBonusName()); | ||||
|         LambdaQueryWrapper<BdBonusItems> queryWrapper = new LambdaQueryWrapper<>(); | ||||
|         queryWrapper.eq(BdBonusItems::getPkCountry, SecurityUtils.getPkCountry()); | ||||
|         if (StringUtils.isNotNull(bonusItems.getBonusName())) { | ||||
|             queryWrapper.eq(BdBonusItems::getBonusName, bonusItems.getBonusName()); | ||||
|         } | ||||
|         queryWrapper.orderByAsc("PK_ID"); | ||||
|         queryWrapper.orderByAsc(BdBonusItems::getPkId); | ||||
|         List<ApiBdBonusItemsVO> listVO = new ArrayList<>(); | ||||
|         List<BdBonusItems> list = bonusItemsService.list(queryWrapper); | ||||
|         list.forEach(item -> listVO.add(BeanUtil.copyProperties(item, ApiBdBonusItemsVO.class))); | ||||
|  | @ -125,112 +100,71 @@ public class BdBonusItemsController extends BaseController { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 生成奖项 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2022/10/22 9:54 | ||||
|      * @param: [grade] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 生成奖项 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.INSERT) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.INSERT) | ||||
|     @PostMapping("/generate") | ||||
|     public AjaxResult generate(@RequestBody BdBonusItems bonusItems) { | ||||
|         return AjaxResult.success(bonusItemsService.generate(bonusItems)); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 修改奖项配置 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2022/8/30 10:21 | ||||
|      * @param: [bonusItems] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 修改奖项配置 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.UPDATE) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.UPDATE) | ||||
|     @PostMapping("/update") | ||||
|     public AjaxResult update(@RequestBody BdBonusItems bonusItems) { | ||||
|         Integer pkCountry=SecurityUtils.getPkCountry(); | ||||
|         if(StringUtils.isEmpty(bonusItems.getBonusName())){ | ||||
|         Integer pkCountry = SecurityUtils.getPkCountry(); | ||||
|         if (StringUtils.isEmpty(bonusItems.getBonusName())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.BONUS_NAME_NOT_NULL)); | ||||
|         } | ||||
|         if(StringUtils.isNull(bonusItems.getEnableState())){ | ||||
|         if (StringUtils.isNull(bonusItems.getEnableState())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.ENABLE_STATE_NOT_NULL)); | ||||
|         } | ||||
|         if(StringUtils.isNull(bonusItems.getSettleType())){ | ||||
|         if (StringUtils.isNull(bonusItems.getSettleType())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.SETTLE_TYPE_NOT_NULL)); | ||||
|         } | ||||
|         if(StringUtils.isNull(bonusItems.getPublishTime())){ | ||||
|         if (StringUtils.isNull(bonusItems.getPublishTime())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.PUBLISH_TIME_NOT_NULL)); | ||||
|         } | ||||
|         if(StringUtils.isNull(bonusItems.getPublishDate())){ | ||||
|         if (StringUtils.isNull(bonusItems.getPublishDate())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.PUBLISH_DATE_NOT_NULL)); | ||||
|         } | ||||
|         if(StringUtils.isNull(bonusItems.getGrantDate())){ | ||||
|         if (StringUtils.isNull(bonusItems.getGrantDate())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.GRANT_DATE_NOT_NULL)); | ||||
|         } | ||||
|         if(StringUtils.isNull(bonusItems.getWithdrawalDate())){ | ||||
|         if (StringUtils.isNull(bonusItems.getWithdrawalDate())) { | ||||
|             return AjaxResult.error(TransactionUtils.getContent(ConfigMsgConstants.WITHDRAWAL_DATE_NOT_NULL)); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         //字段翻译保存到数据库 | ||||
|         if(null!=bonusItems.getPkTransaction()){ | ||||
|             R<Boolean> b = iTransactionServiceApi.updateTransaction(pkCountry, | ||||
|                     bonusItems.getBonusName(),bonusItems.getPkTransaction(), true); | ||||
|         }else{ | ||||
|             //字段翻译保存到数据库 | ||||
|             R<Integer> pkTransaction= iTransactionServiceApi.createTransaction(pkCountry, ETransactionKey.BD_BONUS_ITEMS, | ||||
|                     bonusItems.getBonusName(), EYesNo.YES, EYesNo.NO); | ||||
|             bonusItems.setPkTransaction(pkTransaction.getData()); | ||||
|         } | ||||
|         bonusItems.setPkModified(SecurityUtils.getUserId()); | ||||
|         bonusItems.setModifiedTime(new Date()); | ||||
|         redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + pkCountry); | ||||
|         return toAjax(bonusItemsService.updateById(bonusItems)); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 查询单条奖项配置 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2022/8/30 10:21 | ||||
|      * @param: [pkId] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 查询单条奖项配置 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.SELECT) | ||||
|     @GetMapping("/getOne/{pkId}") | ||||
|     public AjaxResult getOne(@PathVariable Long pkId) { | ||||
|         BdBonusItems bonusItems = bonusItemsService.getById(pkId); | ||||
|         BdBonusItemsExt bonusItemsExt=BeanUtil.copyProperties(bonusItems, BdBonusItemsExt.class); | ||||
|         BdBonusItemsExt bonusItemsExt = BeanUtil.copyProperties(bonusItems, BdBonusItemsExt.class); | ||||
|         return AjaxResult.success(bonusItemsExt); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * @description: 删除奖项配置 | ||||
|      * @author: zhang jing | ||||
|      * @date: 2022/8/30 10:21 | ||||
|      * @param: [pkId] | ||||
|      * @return: com.hzs.common.core.web.domain.AjaxResult | ||||
|      * 删除奖项配置 | ||||
|      **/ | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business=EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.DELETE) | ||||
|     @Log(module = EOperationModule.BONUS_CONFIG, business = EOperationBusiness.BONUS_ITEMS, method = EOperationMethod.DELETE) | ||||
|     @DeleteMapping("/{pkId}") | ||||
|     public AjaxResult delete(@PathVariable Long pkId) { | ||||
|         UpdateWrapper<BdBonusItems> updateWrapper = new UpdateWrapper<>(); | ||||
|         updateWrapper.eq("PK_ID", pkId); | ||||
|         updateWrapper.set("DEL_FLAG", EDelFlag.DELETE.getValue()); | ||||
|         updateWrapper.set("PK_MODIFIED", SecurityUtils.getUserId()); | ||||
|         updateWrapper.set("MODIFIED_TIME", new Date()); | ||||
|         LambdaUpdateWrapper<BdBonusItems> updateWrapper = new LambdaUpdateWrapper<>(); | ||||
|         updateWrapper.eq(BdBonusItems::getPkId, pkId); | ||||
|         updateWrapper.set(BdBonusItems::getDelFlag, EDelFlag.DELETE.getValue()); | ||||
|         updateWrapper.set(BdBonusItems::getPkModified, SecurityUtils.getUserId()); | ||||
|         updateWrapper.set(BdBonusItems::getModifiedTime, new Date()); | ||||
|         redisService.deleteObject(CacheConstants.BD_BONUS_ITEMS + SecurityUtils.getPkCountry()); | ||||
|         //删除翻译 | ||||
|         BdBonusItems bdBonusItems=bonusItemsService.getById(pkId); | ||||
|         List<Long> pkIdList=new ArrayList<>(); | ||||
|         if(null!=bdBonusItems.getPkTransaction()){ | ||||
|             pkIdList.add(bdBonusItems.getPkTransaction().longValue()); | ||||
|             R<Boolean> b=iTransactionServiceApi.removeTransactionByPkId(pkIdList); | ||||
|         } | ||||
|         return toAjax(bonusItemsService.update(updateWrapper)); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -17,15 +17,6 @@ public class RetailConstants { | |||
|      * 直推平级收益比例(每代拿商品价格的千分之五) | ||||
|      */ | ||||
|     public static final BigDecimal SAME_RATIO = new BigDecimal("0.005"); | ||||
|     /** | ||||
|      * 直推平缓收益代数(每级都是10代) | ||||
|      */ | ||||
|     public static final Integer SAME_ALGEBRA = 10; | ||||
| 
 | ||||
|     /** | ||||
|      * 区域分红,每盒2元 | ||||
|      */ | ||||
|     public static final BigDecimal AREA_BOX_BONUS = new BigDecimal("2"); | ||||
| 
 | ||||
|     /** | ||||
|      * 盒数产品列表 | ||||
|  |  | |||
|  | @ -52,7 +52,10 @@ public class BonusMsgConstants { | |||
| 
 | ||||
|     public static String RETAIL_BENEFIT_AVG_INCOME = "获得%f月福利平均收益,结算月%s。"; | ||||
| 
 | ||||
|     public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域收益,区域收益%f,收益县%s。"; | ||||
|     /** | ||||
|      * 区域分红说明 | ||||
|      */ | ||||
|     public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域分红,区域分红%f,收益县%s。"; | ||||
| 
 | ||||
|     public static String RETAIL_BENEFIT_INCOME = "获得%f月福利加权收益,结算月%s。"; | ||||
| 
 | ||||
|  | @ -110,10 +113,16 @@ public class BonusMsgConstants { | |||
| //    public static String SHARE_RANGE = "MSG_BONUS_017"; | ||||
|     public static String SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。"; | ||||
| 
 | ||||
|     public static String RANGE = "订单编号%s,%s为%s贡献了极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。"; | ||||
| 
 | ||||
|     public static String RETAIL_RANGE = "订单编号%s,%s为%s贡献了福利极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。"; | ||||
| 
 | ||||
|     /** | ||||
|      * 直推级差收益说明 | ||||
|      */ | ||||
|     public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。"; | ||||
| 
 | ||||
|     /** | ||||
|      * 平级收益 | ||||
|      */ | ||||
|     public static String ORI_RANGE = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,等级名称%s。"; | ||||
| 
 | ||||
|     public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购极差收益,收益%f。"; | ||||
|  |  | |||
|  | @ -5,18 +5,14 @@ import lombok.AllArgsConstructor; | |||
| import lombok.Getter; | ||||
| 
 | ||||
| /** | ||||
|  * @Description: 奖金收益状态  奖金明细表 | ||||
|  * @Author: sui q | ||||
|  * @Time: 2022/11/10 16:03 | ||||
|  * @Classname: EBonusIncomeStatus | ||||
|  * @PackageName: com.hzs.common.core.enums | ||||
|  * 奖金收益状态  奖金明细表 | ||||
|  */ | ||||
| @AllArgsConstructor | ||||
| @Getter | ||||
| public enum EBonusIncomeStatus { | ||||
| 
 | ||||
|     /** | ||||
|      *正常 | ||||
|      * 正常 | ||||
|      */ | ||||
|     NORMAL(0, "正常", 0, EnumsPrefixConstants.BONUS_INCOME_STATUS + "0"), | ||||
| 
 | ||||
|  |  | |||
|  | @ -224,7 +224,7 @@ public class CuMemberBonus extends BaseEntity { | |||
|     private BigDecimal makerRealSubtotal; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售极差收益 | ||||
|      * 新零售直推收益 | ||||
|      */ | ||||
|     @TableField("RETAIL_RANGE_INCOME") | ||||
|     private BigDecimal retailRangeIncome; | ||||
|  | @ -236,7 +236,7 @@ public class CuMemberBonus extends BaseEntity { | |||
|     private BigDecimal retailSameLevelIncome; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售区域收益 | ||||
|      * 新零售区域分红 | ||||
|      */ | ||||
|     @TableField("RETAIL_AREA_INCOME") | ||||
|     private BigDecimal retailAreaIncome; | ||||
|  |  | |||
|  | @ -381,7 +381,7 @@ public class CuBonusVertexStatis extends BaseEntity { | |||
|     private BigDecimal retailConsumePv; | ||||
| 
 | ||||
|     /** | ||||
|      * 新零售极差收益 | ||||
|      * 新零售直推收益 | ||||
|      */ | ||||
|     @TableField("RETAIL_RANGE_INCOME") | ||||
|     private BigDecimal retailRangeIncome; | ||||
|  |  | |||
|  | @ -6,12 +6,7 @@ import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | ||||
| 
 | ||||
| /** | ||||
|  * <p> | ||||
|  * 奖项配置 | ||||
|  * </p> | ||||
|  * | ||||
|  * @author zhangjing | ||||
|  * @since 2022-11-09 | ||||
|  */ | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
|  | @ -22,28 +17,25 @@ public class BdBonusItemsExt extends BdBonusItems { | |||
|     /** | ||||
|      * 结算周期 | ||||
|      */ | ||||
|     @Excel(name = "结算周期",sort=2) | ||||
|     @Excel(name = "结算周期", sort = 2) | ||||
|     private String settleTypeVal; | ||||
| 
 | ||||
|     /** | ||||
|      * 公布日期 | ||||
|      */ | ||||
|     @Excel(name = "公布日期",sort=4) | ||||
|     @Excel(name = "公布日期", sort = 4) | ||||
|     private String publishDateVal; | ||||
| 
 | ||||
|     /** | ||||
|      * 发布日期 | ||||
|      */ | ||||
|     @Excel(name = "公布日期",sort=5) | ||||
|     @Excel(name = "公布日期", sort = 5) | ||||
|     private String grantDateVal; | ||||
| 
 | ||||
|     /** | ||||
|      * 可提现日期 | ||||
|      */ | ||||
|     @Excel(name = "可提现日期",sort=6) | ||||
|     @Excel(name = "可提现日期", sort = 6) | ||||
|     private String withdrawalDateVal; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue