KKSU
2024-12-31 e081193a764667cb091390b034795ee05a36b4fb
feat(rabbitmq): 新增节点升级消息功能

- 在 AgentConsumer 中添加 nodeUpMsg 方法处理节点升级消息
- 在 AgentProducer 中添加 sendNodeUpMsg 方法发送节点升级消息
- 在 AgentServiceImpl 和 ApiMallMemberServiceImpl 中调用 sendNodeUpMsg 方法
- 新增 RUN_VIP_NODE_UP 相关的交换机、队列和路由配置
10 files modified
65 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 5 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java 1 ●●●● 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/constants/RouteKeyConstants.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -77,4 +77,23 @@
    }
    // end
    // start
    @Bean
    public DirectExchange nodeUpExchange() {
        return new DirectExchange(RabbitQueueEnum.RUN_VIP_NODE_UP.getExchange());
    }
    @Bean
    public Queue nodeUpQueue() {
        return new Queue(RabbitQueueEnum.RUN_VIP_NODE_UP.getQueue());
    }
    @Bean
    public Binding nodeUpBind() {
        return BindingBuilder.bind(nodeUpQueue()).to(nodeUpExchange()).with(RabbitQueueEnum.RUN_VIP_NODE_UP.getRoute());
    }
    // end
}
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -13,4 +13,6 @@
    void sendMemberChargeFailMsg(ApiMemberChargeFailDto apiMemberChargeFailDto);
    void buyVipSuccessMsg(Long chargeId);
    void nodeUpMsg(Long memberId);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -15,6 +15,7 @@
import cc.mrbird.febs.mall.service.IAgentService;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -46,6 +47,7 @@
    private final RunVipMapper runVipMapper;
    private final IApiMallMemberWalletService walletService;
    private final IApiMallMemberService mallMemberService;
    private final AgentProducer agentProducer;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -282,6 +284,12 @@
        Long memberId = mallCharge.getMemberId();
        String vipCode = mallCharge.getVipCode();
        mallMemberMapper.updateVipLevelTimeAndLevel(memberId,DateUtil.date(),vipCode);
        agentProducer.sendNodeUpMsg(memberId);
    }
    @Override
    public void nodeUpMsg(Long memberId) {
        DataDictionaryCustom directCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                RunVipDataDictionaryEnum.NODE_DIRECT_CNT.getType(),
                RunVipDataDictionaryEnum.NODE_DIRECT_CNT.getCode());
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -16,6 +16,7 @@
import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.MD5;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo;
import cc.mrbird.febs.vip.entity.MallVipConfig;
import cc.mrbird.febs.vip.mapper.MallVipConfigMapper;
@@ -70,7 +71,6 @@
    private final MallShopApplyMapper mallShopApplyMapper;
    private final MallRegisterAppealMapper mallRegisterAppealMapper;
    private final MallTeamLeaderMapper mallTeamLeaderMapper;
    private final SpringContextHolder springContextHolder;
    private final MallAgentRecordMapper mallAgentRecordMapper;
    private final IMallMoneyFlowService mallMoneyFlowService;
    private final IMallMemberCollectionService mallMemberCollectionService;
@@ -88,6 +88,7 @@
    private final MallStoreItemMapper mallStoreItemMapper;
    private final MallStoreMemberMapper mallStoreMemberMapper;
    private final MallMemberWithdrawMapper mallMemberWithdrawMapper;
    private final AgentProducer agentProducer;
    @Value("${spring.profiles.active}")
@@ -201,6 +202,8 @@
        wallet.setBalance(BigDecimal.ZERO);
        wallet.setMemberId(mallMember.getId());
        mallMemberWalletMapper.insert(wallet);
        agentProducer.sendNodeUpMsg(mallMember.getId());
        return new FebsResponse().success().message("注册成功");
    }
src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java
@@ -9,4 +9,5 @@
    public static final String RUN_VIP_OPERATION_CHARGE_FAIL_TTL = "exchange_run_vip_operation_charge_fail_tll";
    public static final String RUN_VIP_OPERATION_CHARGE_FAIL = "exchange_run_vip_operation_charge_fail";
    public static final String RUN_VIP_OPERATION_CHARGE = "exchange_run_vip_operation_charge";
    public static final String RUN_VIP_NODE_UP = "exchange_run_vip_node_up";
}
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -6,6 +6,7 @@
 **/
public class QueueConstants {
    public static final String RUN_VIP_NODE_UP = "queue_run_vip_node_up";
    public static final String RUN_VIP_OPERATION_CHARGE = "queue_run_vip_operation_charge";
    public static final String RUN_VIP_OPERATION_CHARGE_FAIL = "queue_run_vip_operation_charge_fail";
    public static final String RUN_VIP_OPERATION_CHARGE_FAIL_TTL = "queue_run_vip_operation_charge_fail_tll";
src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java
@@ -5,6 +5,7 @@
 * @date 2021-09-25
 **/
public class RouteKeyConstants {
    public static final String RUN_VIP_NODE_UP = "route_key_run_vip_node_up";
    public static final String RUN_VIP_OPERATION_CHARGE = "route_key_run_vip_operation_charge";
    public static final String RUN_VIP_OPERATION_CHARGE_FAIL = "route_key_run_vip_operation_charge_fail";
    public static final String RUN_VIP_OPERATION_CHARGE_FAIL_TTL = "route_key_run_vip_operation_charge_fail_tll";
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -47,4 +47,17 @@
    }
    /**
     * 购买成功
     */
    @RabbitListener(queues = QueueConstants.RUN_VIP_NODE_UP)
    public void nodeUpMsg(Long memberId) {
        try {
            agentService.nodeUpMsg(memberId);
        } catch (Exception e) {
            log.error("消费节点升级异常", e);
        }
    }
}
src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -9,6 +9,13 @@
public enum RabbitQueueEnum {
    /**
     * 节点升级
     */
   RUN_VIP_NODE_UP(ExchangeConstants.RUN_VIP_NODE_UP,
            RouteKeyConstants.RUN_VIP_NODE_UP,
            QueueConstants.RUN_VIP_NODE_UP),
    /**
     * 购买成功消息
     */
   RUN_VIP_OPERATION_CHARGE(ExchangeConstants.RUN_VIP_OPERATION_CHARGE,
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -67,4 +67,12 @@
                RabbitQueueEnum.RUN_VIP_OPERATION_CHARGE.getRoute(),
                id);
    }
    public void sendNodeUpMsg(Long memberId) {
        log.info("发送节点升级消息:{}",memberId);
        rabbitTemplate.convertAndSend(
                RabbitQueueEnum.RUN_VIP_NODE_UP.getExchange(),
                RabbitQueueEnum.RUN_VIP_NODE_UP.getRoute(),
                memberId);
    }
}