fix
Hentua
2023-04-24 13a83a82de868164ba4eb7d109e978d386df8ffa
fix
11 files modified
151 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java 2 ●●●●● 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/AgentServiceImpl.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java 98 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -164,4 +164,25 @@
    }
    //强制卖出 end
    /**
     * 订单分红
     * @return
     */
    //订单分红 start
    @Bean
    public DirectExchange orderBonusExchange() {
        return new DirectExchange(RabbitQueueEnum.ORDER_BONUS.getExchange());
    }
    @Bean
    public Queue orderBonusQueue() {
        return new Queue(QueueConstants.ORDER_BONUS);
    }
    @Bean
    public Binding orderBonusBind() {
        return BindingBuilder.bind(orderBonusQueue()).to(orderBonusExchange()).with(RabbitQueueEnum.ORDER_BONUS.getRoute());
    }
    //订单分红 end
}
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -33,7 +33,7 @@
        return strs;
    }
    public int getLevelCode(String Level){
    public static int getLevelCode(String Level){
        int codeOne = 0;
        for (MemberLevelEnum value : MemberLevelEnum.values()) {
            if(value.type.equals(Level)){
src/main/java/cc/mrbird/febs/mall/entity/MallSystemSetting.java
@@ -21,4 +21,6 @@
    private BigDecimal allBonus;
    private BigDecimal agentBonus;
    private Integer revision;
}
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -18,4 +18,6 @@
    void agentProfit(Integer type);
    void allInternetProfit();
    void orderBonus(Long orderId);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -101,10 +101,13 @@
        }
        MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
        int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel());
        if (Integer.parseInt(dic.getValue()) > levelCode) {
        parentMember.setChildNodeCnt(parentNode.CHILD.size());
        parentMember.setLevel(dic.getCode());
        memberMapper.updateById(parentMember);
    }
    }
    /**
     * 判断直推人数是否达标
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -374,6 +374,8 @@
                agentProducer.sendAutoLevelUpMsg(member.getId());
                //发送直推返利消息
                agentProducer.sendOrderReturn(orderInfo.getId());
                // 发送分红消息
                agentProducer.sendOrderBonus(orderInfo.getId());
                break;
            case "4":
                if (orderInfo.getOrderType() != 2) {
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -7,8 +7,11 @@
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -30,21 +33,9 @@
    private final MallMemberMapper mallMemberMapper;
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final MallOrderItemMapper mallOrderItemMapper;
    private final MallGoodsMapper mallGoodsMapper;
    private final IApiMallMemberWalletService walletService;
    private final IMallMoneyFlowService moneyFlowService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final MallMoneyFlowMapper mallMoneyFlowMapper;
    private final MallAchieveRecordMapper mallAchieveRecordMapper;
    private final RedisUtils redisUtils;
    private final MallMemberWalletMapper mallMemberWalletMapper;
    private final IAgentService iAgentService;
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final MallMqRecordMapper mallMqRecordMapper;
    private final AgentProducer agentProducer;
    private final MallScoreRecordMapper mallScoreRecordMapper;
    private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
    private final MallScoreVoucherMapper mallScoreVoucherMapper;
    private final MallSystemSettingMapper mallSystemSettingMapper;
@@ -406,4 +397,87 @@
        log.info("###全网分红执行--end--###");
    }
    @Override
    public void orderBonus(Long orderId) {
        log.info("###订单分红消息开始执行###");
        MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(orderId);
        if (orderInfo.getOrderType() == 2) {
            log.info("积分订单无返利");
            return;
        }
        List<MallOrderItem> items = mallOrderInfoMapper.getMallOrderItemByOrderId(orderId);
        if (CollUtil.isEmpty(items)) {
            return;
        }
        DataDictionaryCustom allInternetBonusDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.ALL_INTERNET_BONUS.getType(), DataDictionaryEnum.ALL_INTERNET_BONUS.getCode());
        DataDictionaryCustom agentBonusDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_ALL_BONUS.getType(), DataDictionaryEnum.AGENT_ALL_BONUS.getCode());
        DataDictionaryCustom partnerBonusDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PARNER_ALL_BONUS.getType(), DataDictionaryEnum.PARNER_ALL_BONUS.getCode());
        String id = RandomUtil.randomNumbers(16);
        // 全网分红
        BigDecimal totalBonus = BigDecimal.ZERO;
        // 代理/股东分红
        BigDecimal agentTotalBonus = BigDecimal.ZERO;
        BigDecimal hundred = new BigDecimal(100);
        for (MallOrderItem item : items) {
            // 减去成本后算收益
            BigDecimal amount = item.getPrice().subtract(item.getCostPrice()).multiply(BigDecimal.valueOf(item.getCnt()));
            if (amount.compareTo(BigDecimal.ZERO) < 1) {
                continue;
            }
            if (item.getIsNormal() == 2) {
                BigDecimal bonus = amount.multiply(BigDecimal.valueOf(item.getNormalBonus()).divide(hundred, 2, RoundingMode.HALF_UP));
                log.info("{}-普通商品分红:{}, 明细ID:{}", id, bonus, item.getId());
                totalBonus = totalBonus.add(bonus);
            } else {
                BigDecimal bonus = amount.multiply(new BigDecimal(allInternetBonusDic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
                log.info("{}-套餐全网分红:{}, 明细ID:{}", id,  bonus, item.getId());
                totalBonus = totalBonus.add(bonus);
                BigDecimal agentBonus = amount.multiply(new BigDecimal(agentBonusDic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
                log.info("{}-套餐代理分红:{}, 明细ID:{}", id,  agentBonus, item.getId());
                BigDecimal partnerBonus = amount.multiply(new BigDecimal(partnerBonusDic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
                log.info("{}-套餐股东分红:{}, 明细ID:{}", id,  partnerBonus, item.getId());
                agentTotalBonus = agentTotalBonus.add(agentBonus).add(partnerBonus);
            }
        }
        boolean flag = false;
        int index = 0;
        while (!flag) {
            MallSystemSetting setting = mallSystemSettingMapper.selectById(1L);
            if (setting == null) {
                return;
            }
            setting.setAllBonus(setting.getAllBonus().add(totalBonus));
            setting.setAgentBonus(setting.getAgentBonus().add(agentTotalBonus));
            setting.setRevision(setting.getRevision() + 1);
            LambdaQueryWrapper<MallSystemSetting> update = new LambdaQueryWrapper<>();
            update.eq(MallSystemSetting::getId, setting.getId())
                    .eq(MallSystemSetting::getRevision, setting.getRevision());
            int i = mallSystemSettingMapper.update(setting, update);
            if (i > 0 || index > 2) {
                flag = true;
            }
            index++;
        }
        log.info("###订单分红消息结束执行###");
    }
}
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -10,6 +10,7 @@
    public static final String AGENT_AUTO_LEVEL_UP = "meye_queue_agent_auto_level_up";
    public static final String AGENT_RETURN_MONEY = "meye_queue_agent_return_money";
    public static final String ORDER_RETURN_MONEY = "meye_queue_order_return_money";
    public static final String ORDER_BONUS = "meye_queue_order_bonus";
    /**
     * 补贴金额 ,
     *      分享补贴,星级补贴
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -58,4 +58,14 @@
        }
    }
    @RabbitListener(queues = QueueConstants.ORDER_BONUS)
    public void calOrderBonus(String orderId) {
        log.info("收到订单分红消息:{}", orderId);
        try {
            memberProfitService.orderBonus(Long.parseLong(orderId));
        } catch (Exception e) {
            log.error("订单分红消息异常:", e);
        }
    }
}
src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -24,6 +24,10 @@
            "meye_route_key_order_return_money",
            "meye_queue_order_return_money"),
    ORDER_BONUS("meye_exchange_order_bonus",
            "meye_route_key_order_bonus",
            "meye_queue_order_bonus"),
    PERK_MONEY("meye_exchange_perk_money",
            "meye_route_key_perk_money",
            "meye_queue_perk_money"),
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -86,4 +86,10 @@
        log.info("发送强制卖出消息,价格:{}",value);
        rabbitTemplate.convertAndSend(RabbitQueueEnum.FORCE_VOUCHER_SALE.getExchange(), RabbitQueueEnum.FORCE_VOUCHER_SALE.getRoute(),value);
    }
    public void sendOrderBonus(Long orderId) {
        log.info("发送订单分红消息:{}", orderId);
        rabbitTemplate.convertAndSend(RabbitQueueEnum.ORDER_BONUS.getExchange(), RabbitQueueEnum.ORDER_BONUS.getRoute(), orderId);
    }
}