From e59e26244b2a07b9d8360551cbab75c6fd8a1248 Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期五, 31 五月 2024 15:15:21 +0800
Subject: [PATCH] 修改循环注入
---
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java | 29 +++++++++++++++++------------
1 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
index b07f229..fe612a3 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
@@ -1,11 +1,12 @@
package com.ruoyi.goods.service.async;
+import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.goods.domain.GoodsGroupPurchase;
-import com.ruoyi.goods.domain.GoodsSeckill;
import com.ruoyi.system.api.constants.DelayTaskEnum;
import com.ruoyi.system.api.domain.DelayTask;
+import com.ruoyi.system.api.domain.GoodsSeckill;
import com.ruoyi.system.api.feignClient.SysUserClient;
import java.time.Duration;
import java.time.LocalDateTime;
@@ -13,13 +14,14 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
/**
* @author mitao
* @date 2024/5/24
*/
-@Component
+@Service
@Slf4j
@RequiredArgsConstructor
public class AsyncMethodService {
@@ -28,6 +30,7 @@
private final SysUserClient sysUserClient;
@Async
+ @Transactional(rollbackFor = Exception.class)
public void seckillScheduleTask(GoodsSeckill goodsSeckill) {
LocalDateTime startTime = goodsSeckill.getStartTime();
LocalDateTime endTime = goodsSeckill.getEndTime();
@@ -50,6 +53,7 @@
}
@Async
+ @Transactional(rollbackFor = Exception.class)
public void groupPurchaseScheduleTask(GoodsGroupPurchase groupPurchase) {
LocalDateTime startTime = groupPurchase.getStartTime();
LocalDateTime endTime = groupPurchase.getEndTime();
@@ -77,14 +81,15 @@
private void handleEndDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime endTime) {
String endTaskKey = delayTaskEnum.getCode() + "-" + id;
DelayTask endDelayTask = sysUserClient.getDelayTask(
- endTaskKey).getData();
+ endTaskKey, SecurityConstants.INNER).getData();
// 如果延时任务为空,创建延时任务控制活动定时开始和结束
Duration duration = Duration.between(LocalDateTime.now(), endTime);
if (StringUtils.isNull(endDelayTask)) {
createEndDelayTask(endTime, endTaskKey, duration);
} else {
if (!endDelayTask.getExecuteTime().isEqual(endTime)) {
- sysUserClient.deleteDelayTask(endTaskKey);
+ sysUserClient.deleteDelayTask(endTaskKey,
+ SecurityConstants.INNER);
redisService.deleteObject(endTaskKey);
createEndDelayTask(endTime, endTaskKey, duration);
}
@@ -103,18 +108,18 @@
endDelayTask.setCreateTime(LocalDateTime.now());
endDelayTask.setExecuteTime(endTime);
endDelayTask.setRedisKey(seckillEndTaskKey);
- sysUserClient.addDelayTask(endDelayTask);
+ sysUserClient.addDelayTask(endDelayTask, SecurityConstants.INNER);
}
private void handleStartDelayTask(Long id, DelayTaskEnum delayTaskEnum, LocalDateTime startTime,
Long timeout) {
String startTaskKey = delayTaskEnum.getCode() + "-" + id;
- //查询延时任务
- DelayTask startDelayTask = sysUserClient.getDelayTask(
- startTaskKey).getData();
redisService.setCacheObject(
startTaskKey,
startTime, timeout, TimeUnit.SECONDS);
+ //查询延时任务
+ DelayTask startDelayTask = sysUserClient.getDelayTask(
+ startTaskKey, SecurityConstants.INNER).getData();
if (StringUtils.isNull(startDelayTask)) {
startDelayTask = new DelayTask();
startDelayTask.setDelFlag(0);
@@ -122,11 +127,11 @@
startDelayTask.setExecuteTime(LocalDateTime.now().plusSeconds(timeout));
startDelayTask.setRedisKey(
startTaskKey);
- sysUserClient.addDelayTask(startDelayTask);
+ sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
} else {
if (!startDelayTask.getExecuteTime().isEqual(startTime)) {
sysUserClient.deleteDelayTask(
- startTaskKey);
+ startTaskKey, SecurityConstants.INNER);
redisService.deleteObject(
startTaskKey);
startDelayTask.setDelFlag(0);
@@ -134,7 +139,7 @@
startDelayTask.setExecuteTime(LocalDateTime.now().plusSeconds(timeout));
startDelayTask.setRedisKey(
startTaskKey);
- sysUserClient.addDelayTask(startDelayTask);
+ sysUserClient.addDelayTask(startDelayTask, SecurityConstants.INNER);
}
}
log.info(">>>>>>>>>>>>>>>>>>>>延时任务{}执行了<<<<<<<<<<<<<<<<<<<<", startTaskKey);
--
Gitblit v1.7.1