浏览代码

商家端定时任务修改

liangpeile 1 年之前
父节点
当前提交
535e7980c7

+ 81 - 31
crmeb-admin/src/main/java/com/zbkj/admin/task/sms/DynamicScheduledTask.java

@@ -17,6 +17,7 @@ package com.zbkj.admin.task.sms;
  * ░     ░ ░      ░  ░
  * ░
  */
+
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zbkj.admin.task.order.OrderReceiptTask;
 import com.zbkj.common.model.merchant.MerchantSmsTiming;
@@ -31,44 +32,71 @@ import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.ScheduledFuture;
 
 @Component
 public class DynamicScheduledTask {
-    private static final Logger logger = LoggerFactory.getLogger( OrderReceiptTask.class);
+    private static final Logger logger = LoggerFactory.getLogger(OrderReceiptTask.class);
     @Autowired
     private OnePassSmsService onePassSmsService;
     @Autowired
     private MerchantSmsTimingService merchantSmsTimingService;
 
     private final TaskScheduler taskScheduler;
-//    private ScheduledFuture<?> job1;
+    //    private ScheduledFuture<?> job1;
     private List<ScheduledFuture<?>> jobs = new ArrayList<>();
 
     public DynamicScheduledTask(TaskScheduler taskScheduler) {
         this.taskScheduler = taskScheduler;
     }
 
-    @PostConstruct
+    //    @PostConstruct
     public void scheduleRunnableWithCronTrigger() {
         //启动执行的
         LambdaQueryWrapper<MerchantSmsTiming> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq( MerchantSmsTiming::getIsStatus, 1 );
-        List<MerchantSmsTiming> list = merchantSmsTimingService.list( queryWrapper );
-        logger.info("每月 每日发送短信  任务准备执行------------个数:"+list.size());
-        if (list.size()!=0){
+        queryWrapper.eq(MerchantSmsTiming::getIsStatus, 1);
+        List<MerchantSmsTiming> list = merchantSmsTimingService.list(queryWrapper);
+        logger.info("每月 每日发送短信  任务准备执行------------个数:" + list.size());
+        if (list.size() != 0) {
             for (int i = 0; i < list.size(); i++) {
                 String cronExpression = "";
-                if (list.get( i ).getMtMy()==1){
-                    cronExpression ="0 0 "+list.get( i ).getSjXs()+" * * ?";
-                }else {
-                    cronExpression ="0 0 "+list.get( i ).getSjXs()+" "+list.get( i ).getSjDay()+" * ?";
+//                String sendTime = list.get(i).getSendTime();
+                String sendTime = "2023-01-02 03:04";
+                String year = sendTime.substring(0, 4);
+                String month = sendTime.substring(5, 7);
+                String day = sendTime.substring(8, 10);
+                String hour = sendTime.substring(11, 13);
+                String minute = sendTime.substring(14, 16);
+                //单次发送
+                if (list.get(i).getSendType() == 1) {
+                    cronExpression = "0 " + minute + "" + hour + "" + day + "" + month + " ? " + year;
+                    System.out.println(cronExpression);
+                //循环发送
+                } else {
+                    //每天
+                    if (list.get(i).getIsCirculate() == 1) {
+                        cronExpression = "0 " + minute + "" + hour + "" + "*" + "" + "*" + " ? " + year;
+
+                        //每月
+                    } else {
+                        //每月最后一天
+                        if (list.get(i).getIsLastDay()==1){
+                            cronExpression = "0 " + minute + "" + hour + "" + "L" + "" + "*" + " ? " + year;
+                        }else{
+                            cronExpression = "0 " + minute + "" + hour + "" + "*" + "" + month+ " ? " + year;
+                        }
+
+                    }
+
+//                    cronExpression = "0 0 " + list.get(i).getSjXs() + " " + list.get(i).getSjDay() + " * ?";
                 }
-                String tempId =list.get( i ).getTempId();
-                String phone =list.get( i ).getPhone();
-                Integer mid =list.get( i ).getMerId();
-                ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone,tempId,mid),
+                String tempId = list.get(i).getTempId();
+                String phone = list.get(i).getPhone();
+                Integer mid = list.get(i).getMerId();
+                ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone, tempId, mid),
                         new CronTrigger(cronExpression));
                 jobs.add(job);
             }
@@ -76,24 +104,45 @@ public class DynamicScheduledTask {
         logger.info("每月 每日发送短信  任务准备执行------------结束");
     }
 
-//    新增或者修改时调用
+    //    新增或者修改时调用
     public void addTask() {
         LambdaQueryWrapper<MerchantSmsTiming> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq( MerchantSmsTiming::getIsStatus, 1 );
-        List<MerchantSmsTiming> list = merchantSmsTimingService.list( queryWrapper );
-        logger.info("手动每月 每日发送短信  任务准备执行------------个数:"+list.size());
-        if (list.size()!=0){
+        queryWrapper.eq(MerchantSmsTiming::getIsStatus, 1);
+        List<MerchantSmsTiming> list = merchantSmsTimingService.list(queryWrapper);
+        logger.info("手动每月 每日发送短信  任务准备执行------------个数:" + list.size());
+        if (list.size() != 0) {
             for (int i = 0; i < list.size(); i++) {
                 String cronExpression = "";
-                if (list.get( i ).getMtMy()==1){
-                    cronExpression ="0 0 "+list.get( i ).getSjXs()+" * * ?";
-                }else {
-                    cronExpression ="0 0 "+list.get( i ).getSjXs()+" "+list.get( i ).getSjDay()+" * ?";
+//                String sendTime = list.get(i).getSendTime();
+                String sendTime = "2024-01-02 03:04";
+                String year = sendTime.substring(0, 4);
+                String month = sendTime.substring(5, 7);
+                String day = sendTime.substring(8, 10);
+                String hour = sendTime.substring(11, 13);
+                String minute = sendTime.substring(14, 16);
+                //单次发送
+                if (list.get(i).getSendType() == 1) {
+                    cronExpression = "0 " + minute + " " + hour + " " + day + " " + month + " ? ";
+                    //循环发送
+                } else {
+                    //每天
+                    if (list.get(i).getIsCirculate() == 1) {
+                        cronExpression = "0 " + minute + " " + hour + " " + "*" + " " + "*" + " ? ";
+                        //每月
+                    } else {
+                        //每月最后一天
+                        if (list.get(i).getIsLastDay()==1){
+                            cronExpression = "0 " + "0" + " " + "0" + " " + "1" + " " + "*" + " ? ";
+                        }else{
+                            cronExpression = "0 " + minute + " " + hour + " " + "*" + " " + month+ " ? ";
+                        }
+                    }
                 }
-                String tempId =list.get( i ).getTempId();
-                String phone =list.get( i ).getPhone();
-                Integer mid =list.get( i ).getMerId();
-                ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone,tempId,mid),
+                String tempId = list.get(i).getTempId();
+                String phone = list.get(i).getPhone();
+                Integer mid = list.get(i).getMerId();
+
+                ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(phone, tempId, mid),
                         new CronTrigger(cronExpression));
                 jobs.add(job);
             }
@@ -102,13 +151,14 @@ public class DynamicScheduledTask {
 //        ScheduledFuture<?> job = taskScheduler.schedule(() -> runTask(param), new CronTrigger(cronExpression));
 //        jobs.add(job);
     }
-    public void runTask(String phone,String tempId,Integer mid) {
+
+    public void runTask(String phone, String tempId, Integer mid) {
         // 你的任务代码在这里
-        onePassSmsService.sendSSM2(phone, Integer.valueOf( tempId ),mid );
+        onePassSmsService.sendSSM2(phone, Integer.valueOf(tempId), mid);
     }
 
 //    public void updateCronExpression(String newCronExpression) {
 //        job1.cancel(true);
 //        job1 = taskScheduler.schedule(this::runTask, new CronTrigger(newCronExpression));
 //    }
-}
+}

+ 16 - 0
crmeb-common/src/main/java/com/zbkj/common/model/merchant/MerchantSmsTiming.java

@@ -53,5 +53,21 @@ public class MerchantSmsTiming implements Serializable {
     @ApiModelProperty(value = "添加时间")
     private Date createTime;
 
+    @ApiModelProperty(value = "发送次数:1单次  2循环")
+    private Integer sendType;
+
+    @ApiModelProperty(value = "循环发送:1每天  2每月")
+    private Integer isCirculate;
+
+    @ApiModelProperty(value = "发送时间")
+    private String sendTime;
+
+    @ApiModelProperty(value = "是否最后一天 1是 2不是")
+    private Integer isLastDay;
+
+
+
+
+
 
 }