src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -86,7 +86,11 @@ INTERNET_LEVEL_BONUS("INTERNET_LEVEL_BONUS", ""), ALL_INTERNET_BONUS("MEIYE_BONUS_TYPE", "ALL_BONUS"), ALL_INTERNET_BONUS_RELEASE("MEIYE_BONUS_TYPE", "BONUS_RELEASE"); ALL_INTERNET_BONUS_RELEASE("MEIYE_BONUS_TYPE", "BONUS_RELEASE"), AGENT_ALL_BONUS("MEIYE_BONUS_TYPE", "AGENT_ALL_BONUS"), PARNER_ALL_BONUS("MEIYE_BONUS_TYPE", "PARNER_ALL_BONUS"), AGENT_BONUS_RELEASE("MEIYE_BONUS_TYPE", "AGENT_BONUS_RELEASE"); private String type; private String code; src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -105,4 +105,6 @@ List<MallMember> selectParentMemberList(@Param("list") List<String> inviteIds, @Param("refererId") String refererId, @Param("limit") Integer limit); List<MallMember> selectMemberAfterLevelList(String level); List<MallMember> selectAgentOrPartnetMemberList(@Param("memberLevel") Integer memberLevel); } src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -1,5 +1,6 @@ package cc.mrbird.febs.mall.quartz; import cc.mrbird.febs.common.enumerates.AccountLevelEnums; import cc.mrbird.febs.common.enumerates.AgentLevelEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.utils.MallUtils; @@ -41,8 +42,15 @@ * 代理分红 */ @Scheduled(cron = "0 30 0 * * ?") public void profitJob() { memberProfitService.agentProfit(); public void agentProfitJob() { log.info("运行代理分红程序"); memberProfitService.agentProfit(AccountLevelEnums.VVIP.getLevel()); } @Scheduled(cron = "5 30 0 * * ?") public void partnerProfitJob() { log.info("运行股东分红程序"); memberProfitService.agentProfit(AccountLevelEnums.VVVIP.getLevel()); } /** src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -15,7 +15,7 @@ /** * 代理分红 */ void agentProfit(); void agentProfit(Integer type); void allInternetProfit(); } src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -287,8 +287,39 @@ @Override @Transactional(rollbackFor = Exception.class) public void agentProfit() { public void agentProfit(Integer type) { log.info("#####==代理分红==start==#####"); if (type == null) { return; } MallSystemSetting systemSetting = mallSystemSettingMapper.selectById(1L); if (systemSetting == null) { log.info("没有系统配置"); return; } BigDecimal hundred = BigDecimal.valueOf(100); DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_BONUS_RELEASE.getType(), DataDictionaryEnum.AGENT_BONUS_RELEASE.getCode()); if (dic == null || StrUtil.isBlank(dic.getValue()) || Integer.parseInt(dic.getValue()) == 0) { log.info("不进行全网分红"); return; } // 全网分红 BigDecimal waitToBonus = systemSetting.getAllBonus().multiply(new BigDecimal(dic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP)); // 代理 List<MallMember> mallMembers = mallMemberMapper.selectAgentOrPartnetMemberList(type); if (CollUtil.isEmpty(mallMembers) || waitToBonus.compareTo(BigDecimal.ZERO) < 1) { log.info("待分红金额不足或会员不足"); return; } BigDecimal perBonus = waitToBonus.divide(new BigDecimal(mallMembers.size()), 2, RoundingMode.HALF_UP); mallMembers.forEach(item -> { changeScoreAndCommission(item.getId(), perBonus, type.equals(AccountLevelEnums.VVIP.getLevel()) ? MoneyFlowTypeEnum.AGENT_BONUS.getValue() : MoneyFlowTypeEnum.PARTNER_BONUS.getValue(), null); }); log.info("#####==代理分红==end==#####"); } @@ -370,7 +401,7 @@ BigDecimal perBonus = levelBonus.divide(BigDecimal.valueOf(memberList.size()), 2, RoundingMode.HALF_UP); memberList.forEach(item -> { changeScoreAndCommission(item.getId(), perBonus, 2, null); changeScoreAndCommission(item.getId(), perBonus, MoneyFlowTypeEnum.ALL_INTERNET_BONUS.getValue(), null); }); } src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -480,4 +480,15 @@ GROUP BY m.id </select> <select id="selectAgentOrPartnetMemberList" resultType="cc.mrbird.febs.mall.entity.MallMember"> select * from mall_membebr a where 1=1 <if test="level == 2"> a.account_level in (2, 3) </if> <if test="level == 3"> a.account_level = 3 </if> </select> </mapper>