From 00bae666d8f117abe0e8f8613df428d236c92cef Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 20 Mar 2023 17:36:30 +0800 Subject: [PATCH] 后台修改 --- src/main/java/cc/mrbird/febs/mall/entity/MallMqRecord.java | 20 ++++++ src/main/resources/mapper/modules/MallMqRecordMapper.xml | 22 +++++++ src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 6 ++ src/test/java/cc/mrbird/febs/ProfitTest.java | 9 ++ src/main/java/cc/mrbird/febs/mall/mapper/MallMqRecordMapper.java | 14 ++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 10 +++ src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 28 +++++++++ src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 9 +++ src/main/resources/application-dev.yml | 6 +- src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 2 10 files changed, 121 insertions(+), 5 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMqRecord.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMqRecord.java new file mode 100644 index 0000000..f8255a7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMqRecord.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.mall.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("mall_mq_record") +public class MallMqRecord { + + private Long id; + + private Long orderId; + /** + * 1:已处理 2:未处理 + */ + private Integer state; + + private Integer retryTimes; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMqRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMqRecordMapper.java new file mode 100644 index 0000000..5a3ca69 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMqRecordMapper.java @@ -0,0 +1,14 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.MallMqRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface MallMqRecordMapper extends BaseMapper<MallMqRecord> { + + MallMqRecord selectByOrderId(@Param("orderId")long orderId); + + List<MallMqRecord> selectByStateLimitTen(@Param("state")int i); +} diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index 4beac7f..63db4b2 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -82,6 +82,15 @@ memberProfitService.teamEqualsPerkJob(null); } + /** + * 补贴消息--重试 + * 一个小时运行一次 + */ + @Scheduled(cron = "0 0 * * * ?") + public void mqPerkRetryJob() { + memberProfitService.mqPerkRetryJob(); + } + /** * 静态分红 diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java index 0512651..4d3e914 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java @@ -47,4 +47,6 @@ void offLinePerkJob(Date profitDate); void teamEqualsPerkJob(Date profitDate); + + void mqPerkRetryJob(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 9f34350..ff9da3d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -47,6 +47,7 @@ private final SqlSessionTemplate sqlSessionTemplate; private final IApiMallMemberWalletService memberWalletService; private final MallMoneyFlowMapper mallMoneyFlowMapper; + private final MallMqRecordMapper mallMqRecordMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -269,6 +270,11 @@ long end = System.currentTimeMillis(); log.info("============订单:{},时间:{}===========",mallOrderInfo.getOrderNo(),(end - start)/1000); + MallMqRecord mallMqRecord = mallMqRecordMapper.selectByOrderId(orderId); + if(ObjectUtil.isNotEmpty(mallMqRecord)){ + mallMqRecord.setState(1); + mallMqRecordMapper.updateById(mallMqRecord); + } } /** diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 658d9fd..11f0189 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -78,6 +78,7 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; private final MallMemberWalletMapper mallMemberWalletMapper; + private final MallMqRecordMapper mallMqRecordMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -343,6 +344,15 @@ orderInfo.setPayResult("1"); changeWallet(orderInfo.getId()); + /** + * 插入一条待处理记录 + * mq处理之后,更新状态 + */ + MallMqRecord mallMqRecord = new MallMqRecord(); + mallMqRecord.setOrderId(orderInfo.getId()); + mallMqRecord.setState(2); + mallMqRecord.setRetryTimes(2); + mallMqRecordMapper.insert(mallMqRecord); //发送补贴消息 agentProducer.sendPerkMoneyMsg(orderInfo.getId()); //发送代理自动升级消息 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 d032da7..810a8b8 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 @@ -12,6 +12,7 @@ import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo; +import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; @@ -56,6 +57,8 @@ private final MallMemberWalletMapper mallMemberWalletMapper; private final IAgentService iAgentService; private final IMallMoneyFlowService mallMoneyFlowService; + private final MallMqRecordMapper mallMqRecordMapper; + private final AgentProducer agentProducer; @Override @Transactional(rollbackFor = Exception.class) @@ -757,4 +760,29 @@ } } + + @Override + public void mqPerkRetryJob() { + /** + * 每次拿重试次数大于零 + * 按ID asc排序的十条数据 + */ + List<MallMqRecord> mallMqRecords = mallMqRecordMapper.selectByStateLimitTen(2); + if(CollUtil.isEmpty(mallMqRecords)){ + return; + } + for(MallMqRecord mallMqRecord : mallMqRecords){ + Integer retryTimes = mallMqRecord.getRetryTimes(); + if(retryTimes <= 0){ + continue; + } + retryTimes = retryTimes - 1; + mallMqRecord.setRetryTimes(retryTimes); + mallMqRecordMapper.updateById(mallMqRecord); + + Long orderId = mallMqRecord.getOrderId(); + agentProducer.sendPerkMoneyMsg(orderId); + } + } + } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index ebd771f..2d0cf1a 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -46,10 +46,10 @@ # 连接超时时间(毫秒) timeout: 5000 rabbitmq: - host: 121.37.162.173 + host: 47.111.90.145 port: 5672 - username: hibit - password: hibit123 + username: zj_mall + password: zj_mall123 publisher-confirm-type: correlated pay: diff --git a/src/main/resources/mapper/modules/MallMqRecordMapper.xml b/src/main/resources/mapper/modules/MallMqRecordMapper.xml new file mode 100644 index 0000000..5f928f9 --- /dev/null +++ b/src/main/resources/mapper/modules/MallMqRecordMapper.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.mall.mapper.MallMqRecordMapper"> + + <select id="selectByOrderId" resultType="cc.mrbird.febs.mall.entity.MallMqRecord"> + select a.* from mall_mq_record a where a.order_id = #{orderId} + </select> + + <select id="selectByStateLimitTen" resultType="cc.mrbird.febs.mall.entity.MallMqRecord"> + select + a.* + from + mall_mq_record a + where + a.state = #{state} + and a.retry_times > 0 + order by a.id asc + limit 10 + + </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 35ecd41..acac296 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -15,6 +15,7 @@ import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.UnipayService; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; +import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -49,10 +50,14 @@ @Autowired private MallMemberMapper memberMapper; + @Autowired + private AgentProducer agentProducer; + @Test public void dynamicProfit() { - agentService.perkMoneyConsumer(665L); - memberProfitService.teamEqualsPerkJob(null); + agentProducer.sendPerkMoneyMsg(679L); +// agentService.perkMoneyConsumer(665L); +// memberProfitService.teamEqualsPerkJob(null); // List<MallMember> mallMemberTeamPerk = new ArrayList<>(); // MallMember mallMember = memberMapper.selectById(233L); // List<String> ids = StrUtil.split(mallMember.getReferrerIds(), ','); -- Gitblit v1.9.1