From cba62804323d5337fafdb87332c6fe4f4e1fcd63 Mon Sep 17 00:00:00 2001 From: xiang Date: Sun, 27 Jul 2025 14:11:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8A=A8=E6=80=81=E8=B0=83=E5=BA=A6?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../fwd/entity/param/FwdOrderTaskParam.java | 12 +++++++ .../fwd/schedule/FwdImportantMsgJob.java | 9 +++--- .../xservice/fwd/schedule/TicketGrabTask.java | 32 +++++++++---------- .../src/main/resources/application-local.yml | 14 +++++++- 5 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java diff --git a/pom.xml b/pom.xml index 6009ed6..6ebf149 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.xiang xservice-schedule-starter - 1.0-snapshot + 1.1-snapshot diff --git a/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java b/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java new file mode 100644 index 0000000..8975931 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/fwd/entity/param/FwdOrderTaskParam.java @@ -0,0 +1,12 @@ +package com.xiang.xservice.fwd.entity.param; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FwdOrderTaskParam { + private Long projectId; +} diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java index 70606ce..9fc56ef 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java +++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/FwdImportantMsgJob.java @@ -1,9 +1,9 @@ package com.xiang.xservice.fwd.schedule; import com.alibaba.fastjson2.JSONObject; -import com.google.common.collect.Lists; import com.xiang.xservice.basic.utils.DateUtils; import com.xiang.xservice.basic.xservice.dingTalk.service.DingTalkService; +import com.xiang.xservice.fwd.entity.param.FwdOrderTaskParam; import com.xiang.xservice.fwd.entity.pojo.FPerformConfig; import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper; @@ -11,6 +11,7 @@ import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper; import com.xiang.xservice.fwd.mapper.FwdPerformProjectInfoMapper; import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; import com.xiang.xservice.fwd.service.IPerformService; +import com.xiang.xservice.schedule.entity.TaskConfig; import com.xiang.xservice.schedule.service.IDynamicTaskSchedulerService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,7 +24,6 @@ import org.springframework.web.bind.annotation.RestController; import java.time.LocalDate; import java.util.List; -import java.util.UUID; import java.util.stream.Collectors; /** @@ -77,8 +77,9 @@ public class FwdImportantMsgJob { StringBuilder msg = new StringBuilder("今日" + now + "演唱会门票预售信息:\n"); for (FPerformProjectInfo data : saleTodayData) { msg.append("演唱会名称:").append(data.getProjectName()).append("预售时间:").append(DateUtils.getDateTimeStr(data.getPreSaleTime())).append("\n"); - String taskId = UUID.randomUUID().toString(); - dynamicTaskSchedulerService.schedule(taskId, data.getPreSaleTime(), new TicketGrabTask(fwdUserConfigMapper, fwdAudienceConfigMapper, performConfigMapper, iPerformService)); + dynamicTaskSchedulerService.schedule( + new TaskConfig(System.currentTimeMillis(), data.getProjectName(), data.getPreSaleTime()), + new TicketGrabTask(fwdUserConfigMapper, fwdAudienceConfigMapper, iPerformService, new FwdOrderTaskParam(data.getProjectId()))); } msg.append("请注意进行数据库配置的更改!"); dingTalkService.sendChatMessage(chatId, msg.toString()); diff --git a/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java index da894f4..f478e7d 100644 --- a/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java +++ b/script/src/main/java/com/xiang/xservice/fwd/schedule/TicketGrabTask.java @@ -1,48 +1,46 @@ package com.xiang.xservice.fwd.schedule; +import com.alibaba.fastjson.JSON; +import com.xiang.xservice.fwd.entity.param.FwdOrderTaskParam; import com.xiang.xservice.fwd.entity.pojo.FAudienceConfig; -import com.xiang.xservice.fwd.entity.pojo.FPerformConfig; -import com.xiang.xservice.fwd.entity.pojo.FPerformProjectInfo; import com.xiang.xservice.fwd.entity.pojo.FUserConfig; import com.xiang.xservice.fwd.mapper.FwdAudienceConfigMapper; -import com.xiang.xservice.fwd.mapper.FwdPerformConfigMapper; import com.xiang.xservice.fwd.mapper.FwdUserConfigMapper; import com.xiang.xservice.fwd.service.IPerformService; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.stereotype.Component; import java.util.List; import java.util.stream.Collectors; @Slf4j -@Component -@RequiredArgsConstructor public class TicketGrabTask implements Runnable { private final FwdUserConfigMapper userConfigMapper; private final FwdAudienceConfigMapper audienceConfigMapper; - private final FwdPerformConfigMapper performConfigMapper; private final IPerformService performService; + private final FwdOrderTaskParam param; + + public TicketGrabTask(FwdUserConfigMapper userConfigMapper, FwdAudienceConfigMapper audienceConfigMapper, IPerformService performService, FwdOrderTaskParam param) { + this.userConfigMapper = userConfigMapper; + this.audienceConfigMapper = audienceConfigMapper; + this.performService = performService; + this.param = param; + } @Override public void run() { + log.info("【TicketGrabTask】 run start. 获取到参数:{}", JSON.toJSONString(param)); List availableUser = userConfigMapper.getAvailableUser(); if (CollectionUtils.isEmpty(availableUser)) { return; } for (FUserConfig userConfig : availableUser) { List audiences = audienceConfigMapper.getAudienceByUserId(userConfig.getId()); - List availablePerform = performConfigMapper.getAvailablePerform(); - if (CollectionUtils.isNotEmpty(availablePerform)) { - for (FPerformConfig performConfig : availablePerform) { - try { - performService.createProjectOrder(performConfig.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList())); - } catch (Exception e) { - log.error("创建订单失败", e); - } - } + try { + performService.createProjectOrder(param.getProjectId(), audiences.stream().map(FAudienceConfig::getFrequentId).collect(Collectors.toList())); + } catch (Exception e) { + log.error("创建订单失败", e); } } } diff --git a/script/src/main/resources/application-local.yml b/script/src/main/resources/application-local.yml index f679f23..535cc9a 100644 --- a/script/src/main/resources/application-local.yml +++ b/script/src/main/resources/application-local.yml @@ -3,4 +3,16 @@ spring: url: jdbc:mysql://120.27.153.87:3306/xservice-script-test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root password: 123456 - driver-class-name: com.mysql.cj.jdbc.Driver \ No newline at end of file + driver-class-name: com.mysql.cj.jdbc.Driver + redis: + host: r-bp1dqqbzlfw04fldp3pd.redis.rds.aliyuncs.com + port: 6379 + password: Admin@123 # 如果无密码可以省略 + database: 0 + timeout: 5000 + lettuce: + pool: + max-active: 8 + max-idle: 8 + min-idle: 0 + max-wait: 1000 \ No newline at end of file