From 6cb145544776200e783365c371e22f782d5e0551 Mon Sep 17 00:00:00 2001 From: Penny <2500338766@qq.com> Date: Mon, 22 May 2023 22:11:53 +0800 Subject: [PATCH] =?UTF-8?q?feature:=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bnyer/common/core/utils/DateUtils.java | 34 ++++++++++++++-- .../service/ImgMqMessageRecordService.java | 5 +++ .../img/service/UserVipRecordService.java | 5 +++ .../impl/ImgMqMessageRecordServiceImpl.java | 35 ++++++++++++++++ .../impl/UserVipServiceRecordImpl.java | 32 +++++++++++++++ .../com/bnyer/img/task/CheckVipDateTask.java | 30 ++++++++++++++ .../img/task/ImgMessageCompensationTask.java | 30 ++++++++++++++ bnyer-services/bnyer-order/pom.xml | 10 ++--- .../service/OrderMqMessageRecordService.java | 5 +++ .../impl/OrderMqMessageRecordServiceImpl.java | 40 +++++++++++++++++-- .../task/OrderMessageCompensationTask.java | 29 ++++++++++++++ bnyer-services/bnyer-pay/pom.xml | 10 ++--- .../service/PayMqMessageRecordService.java | 5 +++ .../impl/PayMqMessageRecordServiceImpl.java | 34 ++++++++++++++++ .../pay/task/PayMessageCompensationTask.java | 29 ++++++++++++++ 15 files changed, 317 insertions(+), 16 deletions(-) create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CheckVipDateTask.java create mode 100644 bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/ImgMessageCompensationTask.java create mode 100644 bnyer-services/bnyer-order/src/main/java/com/bnyer/order/task/OrderMessageCompensationTask.java create mode 100644 bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/task/PayMessageCompensationTask.java diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/DateUtils.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/DateUtils.java index bba512c..5dbea49 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/DateUtils.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/utils/DateUtils.java @@ -1,6 +1,7 @@ package com.bnyer.common.core.utils; import java.lang.management.ManagementFactory; +import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.*; @@ -311,10 +312,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils return currentDateTime.isAfter(startDateTime) && currentDateTime.isBefore(endDateTime); } + /** + * 判断指定时间是否在30分钟内 + * @param date 指定时间 + * @return - + */ + public static boolean isLessThan30Min(Date date){ + // 将当前时间转换为时间戳 + long timestamp = date.getTime(); + // 计算当前时间和目标时间的时间差 + long diff = System.currentTimeMillis() - timestamp; + // 将毫秒转换为分钟 + long minutes = diff / 1000 / 60; + if (minutes < 30) { + return true; + } else { + return false; + } + } + public static void main(String[] args) { - DateTime dateTime1 = DateUtil.parseDateTime("2023-05-18 00:00:00"); - DateTime dateTime2 = DateUtil.parseDateTime("2023-05-19 00:00:01"); - System.out.println(isRang(dateTime1, dateTime2)); +// DateTime dateTime1 = DateUtil.parseDateTime("2023-05-18 00:00:00"); +// DateTime dateTime2 = DateUtil.parseDateTime("2023-05-19 00:00:01"); +// System.out.println(isRang(dateTime1, dateTime2)); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + Date today = df.parse("2023-05-22 21:05:44"); + System.out.println(isLessThan30Min(today)); + } catch (ParseException e) { + e.printStackTrace(); + } + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ImgMqMessageRecordService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ImgMqMessageRecordService.java index 9af091e..ef9680c 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ImgMqMessageRecordService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ImgMqMessageRecordService.java @@ -57,4 +57,9 @@ public interface ImgMqMessageRecordService { */ void editMessageRecordStatus(Long id, EnumMessageStatus status,String errMsg); + /** + * 消息补偿 + */ + void imgMessageCompensation(); + } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/UserVipRecordService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/UserVipRecordService.java index fb2a098..5a2370d 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/UserVipRecordService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/UserVipRecordService.java @@ -29,4 +29,9 @@ public interface UserVipRecordService { * @return */ UserVipRecordVo queryUserVipRecord(UserVipRecordQuery query); + + /** + * 检查会员是否过期 + */ + void checkVipDateTask(); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ImgMqMessageRecordServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ImgMqMessageRecordServiceImpl.java index 94f599f..b58e97d 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ImgMqMessageRecordServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ImgMqMessageRecordServiceImpl.java @@ -1,10 +1,15 @@ package com.bnyer.img.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.domain.ImgMqMessageRecord; import com.bnyer.common.core.enums.EnumMessageStatus; +import com.bnyer.common.core.utils.DateUtils; import com.bnyer.common.rocketmq.constant.RocketMqConstant; import com.bnyer.common.rocketmq.constant.RocketMqTopic; import com.bnyer.common.rocketmq.domain.MqRecordMessage; @@ -26,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** @@ -192,4 +198,33 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService imgMqMessageRecordMapper.updateStatusByStatus(id,status,errMsg); } + @Override + public void imgMessageCompensation() { + log.info("==============img服务消费补偿任务开始!==============="); + long startTime = System.currentTimeMillis(); + //获取全表状态为process处理中的数据 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ImgMqMessageRecord::getStatus, EnumMessageStatus.PROCESS); + List imgMqMessageRecords = imgMqMessageRecordMapper.selectList(wrapper); + Date now = new Date(); + System.out.println(now); + if(CollectionUtil.isNotEmpty(imgMqMessageRecords)){ + for (ImgMqMessageRecord imgMqMessageRecord : imgMqMessageRecords) { + //判断消息是否超过30分钟,超过则改状态为INVALID废弃,否则调用发送消息方法 + if(DateUtils.isLessThan30Min(imgMqMessageRecord.getCreateTime())){ + String content = imgMqMessageRecord.getContent(); + JSONObject jsonObject = JSON.parseObject(content); + String msg = jsonObject.getString("content"); + //少于30分钟,发送消息 + sendAsyncMsg(imgMqMessageRecord.getTopic(),null,msg); + }else{ + //超过30分钟,修改状态为废弃 + imgMqMessageRecord.setStatus(EnumMessageStatus.INVALID); + imgMqMessageRecordMapper.updateById(imgMqMessageRecord); + } + } + } + log.info("==============img服务消费补偿任务完成,耗时【{}】毫秒!===============",System.currentTimeMillis() - startTime); + } + } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/UserVipServiceRecordImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/UserVipServiceRecordImpl.java index af9ce74..e345b53 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/UserVipServiceRecordImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/UserVipServiceRecordImpl.java @@ -1,6 +1,8 @@ package com.bnyer.img.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.bnyer.common.core.domain.UserVipRecord; import com.bnyer.common.core.dto.AddUserVipRecordDto; import com.bnyer.common.core.dto.PayUserVipDto; @@ -17,8 +19,11 @@ import com.bnyer.img.vo.UserVipRecordVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import java.util.Objects; @Service @@ -143,4 +148,31 @@ public class UserVipServiceRecordImpl implements UserVipRecordService { } return userVipRecordVo; } + + @Override + @Transactional(rollbackFor = Exception.class) + public void checkVipDateTask() { + log.info("==============检查会员过期任务开始!==============="); + long startTime = System.currentTimeMillis(); + //获取当前时间 +// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// String date = df.format(new Date()); + Date now = new Date(); + System.out.println(now); + //获取会员记录表未过期数据 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(UserVipRecord::getIsShow, "1"); + wrapper.eq(UserVipRecord::getStatus,"1"); + List userVipRecords = userVipRecordMapper.selectList(wrapper); + if(CollectionUtil.isNotEmpty(userVipRecords)){ + for (UserVipRecord userVipRecord : userVipRecords) { + if(now.before(userVipRecord.getStartTime()) || now.after(userVipRecord.getEndTime())){ + //修改为失效 + userVipRecord.setStatus(0); + userVipRecordMapper.updateById(userVipRecord); + } + } + } + log.info("==============检查会员过期任务完成,耗时【{}】毫秒!===============",System.currentTimeMillis() - startTime); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CheckVipDateTask.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CheckVipDateTask.java new file mode 100644 index 0000000..019b05c --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/CheckVipDateTask.java @@ -0,0 +1,30 @@ +package com.bnyer.img.task; + +import com.bnyer.img.service.TiktokCollectionService; +import com.bnyer.img.service.UserVipRecordService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 检查会员是否过期任务 + * @author chengkun + * @date 2023/5/22 18:13 + */ +@Component +@Slf4j +public class CheckVipDateTask { + + @Autowired + private UserVipRecordService userVipRecordService; + + @XxlJob("checkVipDateTask") + public ReturnT checkVipDateTask(String param) throws Exception { + userVipRecordService.checkVipDateTask(); + XxlJobHelper.log("{} 我执行了检查会员过期任务", System.currentTimeMillis()); + return ReturnT.SUCCESS; + } +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/ImgMessageCompensationTask.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/ImgMessageCompensationTask.java new file mode 100644 index 0000000..4f47e07 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/task/ImgMessageCompensationTask.java @@ -0,0 +1,30 @@ +package com.bnyer.img.task; + +import com.bnyer.img.service.ImgMqMessageRecordService; +import com.bnyer.img.service.UserVipRecordService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * img服务消息补偿任务 + * @author chengkun + * @date 2023/5/22 18:13 + */ +@Component +@Slf4j +public class ImgMessageCompensationTask { + + @Autowired + private ImgMqMessageRecordService imgMqMessageRecordService; + + @XxlJob("imgMessageCompensationTask") + public ReturnT imgMessageCompensation(String param) throws Exception { + imgMqMessageRecordService.imgMessageCompensation(); + XxlJobHelper.log("{} 我执行了img服务消息补偿任务", System.currentTimeMillis()); + return ReturnT.SUCCESS; + } +} diff --git a/bnyer-services/bnyer-order/pom.xml b/bnyer-services/bnyer-order/pom.xml index e8cab7e..cb9b70c 100644 --- a/bnyer-services/bnyer-order/pom.xml +++ b/bnyer-services/bnyer-order/pom.xml @@ -90,11 +90,11 @@ bnyer-common-rocketmq - - - - - + + com.xuxueli + xxl-job-core + 2.3.1 + diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/OrderMqMessageRecordService.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/OrderMqMessageRecordService.java index 92cf2a8..6811abe 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/OrderMqMessageRecordService.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/OrderMqMessageRecordService.java @@ -57,4 +57,9 @@ public interface OrderMqMessageRecordService { */ void editMessageRecordStatus(Long id, EnumMessageStatus status,String errMsg); + /** + * 消息补偿 + */ + void orderMessageCompensation(); + } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/OrderMqMessageRecordServiceImpl.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/OrderMqMessageRecordServiceImpl.java index 284cfd7..13141ef 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/OrderMqMessageRecordServiceImpl.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/OrderMqMessageRecordServiceImpl.java @@ -1,10 +1,14 @@ package com.bnyer.order.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.bnyer.common.core.domain.ImgMqMessageRecord; import com.bnyer.common.core.domain.OrderMqMessageRecord; import com.bnyer.common.core.enums.EnumMessageStatus; +import com.bnyer.common.core.utils.DateUtils; import com.bnyer.common.rocketmq.constant.RocketMqConstant; import com.bnyer.common.rocketmq.constant.RocketMqTopic; import com.bnyer.common.rocketmq.domain.MqRecordMessage; @@ -26,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** * @author :WXC @@ -41,12 +46,12 @@ public class OrderMqMessageRecordServiceImpl implements OrderMqMessageRecordServ @Resource private OrderMqMessageRecordMapper orderMqMessageRecordMapper; - + @Resource private Environment env; - + private String applicationName; - + @PostConstruct public void init(){ this.applicationName = env.getProperty("spring.application.name"); @@ -191,4 +196,33 @@ public class OrderMqMessageRecordServiceImpl implements OrderMqMessageRecordServ orderMqMessageRecordMapper.updateStatusByStatus(id,status,errMsg); } + @Override + public void orderMessageCompensation() { + log.info("==============order服务消费补偿任务开始!==============="); + long startTime = System.currentTimeMillis(); + //获取全表状态为process处理中的数据 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(OrderMqMessageRecord::getStatus, EnumMessageStatus.PROCESS); + List orderMqMessageRecords = orderMqMessageRecordMapper.selectList(wrapper); + Date now = new Date(); + System.out.println(now); + if(CollectionUtil.isNotEmpty(orderMqMessageRecords)){ + for (OrderMqMessageRecord orderMqMessageRecord : orderMqMessageRecords) { + //判断消息是否超过30分钟,超过则改状态为INVALID废弃,否则调用发送消息方法 + if(DateUtils.isLessThan30Min(orderMqMessageRecord.getCreateTime())){ + String content = orderMqMessageRecord.getContent(); + JSONObject jsonObject = JSON.parseObject(content); + String msg = jsonObject.getString("content"); + //少于30分钟,发送消息 + sendAsyncMsg(orderMqMessageRecord.getTopic(),null,msg); + }else{ + //超过30分钟,修改状态为废弃 + orderMqMessageRecord.setStatus(EnumMessageStatus.INVALID); + orderMqMessageRecordMapper.updateById(orderMqMessageRecord); + } + } + } + log.info("==============order服务消费补偿任务完成,耗时【{}】毫秒!===============",System.currentTimeMillis() - startTime); + } + } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/task/OrderMessageCompensationTask.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/task/OrderMessageCompensationTask.java new file mode 100644 index 0000000..ab2ef34 --- /dev/null +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/task/OrderMessageCompensationTask.java @@ -0,0 +1,29 @@ +package com.bnyer.order.task; + +import com.bnyer.order.service.OrderMqMessageRecordService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * order服务消息补偿任务 + * @author chengkun + * @date 2023/5/22 18:13 + */ +@Component +@Slf4j +public class OrderMessageCompensationTask { + + @Autowired + private OrderMqMessageRecordService orderMqMessageRecordService; + + @XxlJob("orderMessageCompensationTask") + public ReturnT orderMessageCompensation(String param) throws Exception { + orderMqMessageRecordService.orderMessageCompensation(); + XxlJobHelper.log("{} 我执行了order服务消息补偿任务", System.currentTimeMillis()); + return ReturnT.SUCCESS; + } +} diff --git a/bnyer-services/bnyer-pay/pom.xml b/bnyer-services/bnyer-pay/pom.xml index 3eec3b1..28b378d 100644 --- a/bnyer-services/bnyer-pay/pom.xml +++ b/bnyer-services/bnyer-pay/pom.xml @@ -114,11 +114,11 @@ - - - - - + + com.xuxueli + xxl-job-core + 2.3.1 + diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayMqMessageRecordService.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayMqMessageRecordService.java index c83dbc7..ff2a036 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayMqMessageRecordService.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/PayMqMessageRecordService.java @@ -57,4 +57,9 @@ public interface PayMqMessageRecordService { */ void editMessageRecordStatus(Long id, EnumMessageStatus status,String errMsg); + /** + * 消息补偿 + */ + void payMessageCompensation(); + } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayMqMessageRecordServiceImpl.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayMqMessageRecordServiceImpl.java index 75abe55..2ee2890 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayMqMessageRecordServiceImpl.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayMqMessageRecordServiceImpl.java @@ -1,10 +1,14 @@ package com.bnyer.pay.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.bnyer.common.core.domain.OrderMqMessageRecord; import com.bnyer.common.core.domain.PayMqMessageRecord; import com.bnyer.common.core.enums.EnumMessageStatus; +import com.bnyer.common.core.utils.DateUtils; import com.bnyer.common.rocketmq.constant.RocketMqConstant; import com.bnyer.common.rocketmq.constant.RocketMqTopic; import com.bnyer.common.rocketmq.domain.MqRecordMessage; @@ -26,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.Date; +import java.util.List; /** * @author :WXC @@ -192,5 +197,34 @@ public class PayMqMessageRecordServiceImpl implements PayMqMessageRecordService payMqMessageRecordMapper.updateStatusByStatus(id,status,errMsg); } + @Override + public void payMessageCompensation() { + log.info("==============pay服务消费补偿任务开始!==============="); + long startTime = System.currentTimeMillis(); + //获取全表状态为process处理中的数据 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMqMessageRecord::getStatus, EnumMessageStatus.PROCESS); + List payMqMessageRecords = payMqMessageRecordMapper.selectList(wrapper); + Date now = new Date(); + System.out.println(now); + if(CollectionUtil.isNotEmpty(payMqMessageRecords)){ + for (PayMqMessageRecord payMqMessageRecord : payMqMessageRecords) { + //判断消息是否超过30分钟,超过则改状态为INVALID废弃,否则调用发送消息方法 + if(DateUtils.isLessThan30Min(payMqMessageRecord.getCreateTime())){ + String content = payMqMessageRecord.getContent(); + JSONObject jsonObject = JSON.parseObject(content); + String msg = jsonObject.getString("content"); + //少于30分钟,发送消息 + sendAsyncMsg(payMqMessageRecord.getTopic(),null,msg); + }else{ + //超过30分钟,修改状态为废弃 + payMqMessageRecord.setStatus(EnumMessageStatus.INVALID); + payMqMessageRecordMapper.updateById(payMqMessageRecord); + } + } + } + log.info("==============pay服务消费补偿任务完成,耗时【{}】毫秒!===============",System.currentTimeMillis() - startTime); + } + } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/task/PayMessageCompensationTask.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/task/PayMessageCompensationTask.java new file mode 100644 index 0000000..6cd7eae --- /dev/null +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/task/PayMessageCompensationTask.java @@ -0,0 +1,29 @@ +package com.bnyer.pay.task; + +import com.bnyer.pay.service.PayMqMessageRecordService; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * pay服务消息补偿任务 + * @author chengkun + * @date 2023/5/22 18:13 + */ +@Component +@Slf4j +public class PayMessageCompensationTask { + + @Autowired + private PayMqMessageRecordService payMqMessageRecordService; + + @XxlJob("payMessageCompensationTask") + public ReturnT payMessageCompensation(String param) throws Exception { + payMqMessageRecordService.payMessageCompensation(); + XxlJobHelper.log("{} 我执行了pay服务消息补偿任务", System.currentTimeMillis()); + return ReturnT.SUCCESS; + } +}