From 9507ab3e93d6a38b136fca4677851fe8645c191a Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 17 Jun 2022 14:14:41 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 2 + src/test/java/cc/mrbird/febs/ProfitTest.java | 4 ++ src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 61 +++++++++++++++--------------- src/main/resources/mapper/modules/MallMemberMapper.xml | 5 ++ 4 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java index b48d370..5c4787a 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java @@ -83,4 +83,6 @@ List<MallMember> selectMemberDirectForHasLevel(@Param("inviteId") String inviteId); List<MallMember> selectDirectorsOrStoreMaster(@Param("type") Integer type); + + List<MallMember> selectMemberWithLevel(String level); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java index f087359..c2b6583 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java @@ -45,7 +45,7 @@ private final IMallMoneyFlowService moneyFlowService; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallMoneyFlowMapper mallMoneyFlowMapper; - private final IMallAchieveService mallAchieveService; + private final MallAchieveRecordMapper mallAchieveRecordMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -58,10 +58,10 @@ Date profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1); // 套餐业绩 - BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2); +// BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2); // 普通商品业绩 - BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1); - BigDecimal totalIncome = tcIncome.add(normalIncome); +// BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1); + BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate); if (totalIncome.compareTo(BigDecimal.ZERO) == 0) { return; @@ -251,42 +251,43 @@ profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1); } // 套餐业绩 - BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2); +// BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2); // 普通商品业绩 - BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1); - BigDecimal totalIncome = tcIncome.add(normalIncome); +// BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1); + BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate); DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_BONUS.getType(), DataDictionaryEnum.AGENT_BONUS.getCode()); - BigDecimal profit = totalIncome.divide(new BigDecimal(dic.getValue()), 2, RoundingMode.HALF_UP); - BigDecimal preProfit = profit.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); + BigDecimal profit = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP)); List<MallMember> agentMembers = mallMemberMapper.selectByIdAndNoLevel(null, AgentLevelEnum.FIRST_LEVEL.name()); if (CollUtil.isEmpty(agentMembers)) { return; } - for (MallMember agentMember : agentMembers) { - DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL_REQUIRE, agentMember.getLevel()); - - if (agentDic == null) { - continue; - } - + List<DataDictionaryCustom> dics = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL_REQUIRE); + for (DataDictionaryCustom agentDic : dics) { JSONObject jsonObject = JSONObject.parseObject(agentDic.getValue()); - BigDecimal profitProp = jsonObject.getBigDecimal("profitProp"); - BigDecimal income = preProfit.multiply(profitProp); + BigDecimal profitProp = jsonObject.getBigDecimal("profitProp").divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); - int reduce = walletService.reduce(income, agentMember.getId(), "score"); - if (reduce == 2) { + List<MallMember> agentMemberList = mallMemberMapper.selectMemberWithLevel(agentDic.getCode()); + if (CollUtil.isEmpty(agentMemberList)) { continue; } - walletService.add(income, agentMember.getId(), "commission"); + BigDecimal income = profit.multiply(profitProp).divide(BigDecimal.valueOf(agentMemberList.size()), 2, RoundingMode.HALF_UP); - moneyFlowService.addMoneyFlow(agentMember.getId(), income, MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue()); - moneyFlowService.addMoneyFlow(agentMember.getId(), income.negate(), MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue()); + for (MallMember agentMember : agentMemberList) { + int reduce = walletService.reduce(income, agentMember.getId(), "score"); + if (reduce == 2) { + continue; + } + + walletService.add(income, agentMember.getId(), "commission"); + + moneyFlowService.addMoneyFlow(agentMember.getId(), income, MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue()); + moneyFlowService.addMoneyFlow(agentMember.getId(), income.negate(), MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue()); + } } - log.info("#####==代理分红==end==#####"); } @@ -306,10 +307,10 @@ } // 套餐业绩 - BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 2); +// BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 2); // 普通商品业绩 - BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 1); - BigDecimal totalIncome = tcIncome.add(normalIncome); +// BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 1); + BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate); List<DataDictionaryCustom> rankAward = dataDictionaryCustomMapper.selectDicByType("RANK_AWARD"); DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANK_BONUS.getType(), DataDictionaryEnum.RANK_BONUS.getCode()); @@ -395,10 +396,10 @@ profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1); } // 套餐业绩 - BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2); +// BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2); // 普通商品业绩 - BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1); - BigDecimal totalIncome = tcIncome.add(normalIncome); +// BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1); + BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate); // 董事 DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECTOR_BONUS.getType(), DataDictionaryEnum.DIRECTOR_BONUS.getCode()); diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml index 973bf34..a70bd00 100644 --- a/src/main/resources/mapper/modules/MallMemberMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberMapper.xml @@ -395,4 +395,9 @@ </if> </where> </select> + + <select id="selectMemberWithLevel" resultType="cc.mrbird.febs.mall.entity.MallMember"> + select * from mall_member + where level=#{level} + </select> </mapper> \ No newline at end of file diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index ce90bcd..39005fd 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -35,6 +35,10 @@ public void dynamicProfit() { memberProfitService.dynamicProfit(16L); } + @Test + public void agentProfit() { + memberProfitService.agentProfit(null); + } @Test -- Gitblit v1.9.1