fix
Hentua
2023-04-23 4f65db3a1766fea81630d31a648c1c14b2d21c24
fix
6 files modified
68 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 6 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java 12 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java 35 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberMapper.xml 11 ●●●●● patch | view | raw | blame | history
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>