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