系统催款修改

This commit is contained in:
梁琦涛
2021-09-28 13:05:46 +08:00
parent 79b0b141be
commit 03ac1817f7
4 changed files with 93 additions and 26 deletions
@@ -92,18 +92,18 @@ public class HuaWeiSmsUtil {
} }
switch (codeType) { switch (codeType) {
case "1": case "1":
//中汽标协-登录检查验证码 // 中汽中心标准所-登录验证码内容
sender = "8821092414481"; sender = "8821092414481";
signature = "中汽中心标准所"; signature = "中汽中心标准所";
templateId = "9fbee7166af24bbfacc178e417345a21"; templateId = "93c8a63236734e0ca0bc89f8b2413e7f";
templateParas = "[" + randomNumber + "," + phone + "," + verificationTime + "]"; templateParas = "[" + randomNumber + "]";
break; break;
case "2": case "2":
//中汽标协-忘记密码 // 中汽中心标准所-忘记密码
sender = "8821092414481"; sender = "8821092414481";
signature = "中汽中心标准所"; signature = "中汽中心标准所";
templateId = "6f8573c5adc54df2a56a6e48556c3044"; templateId = "ac6749d4a3134c39997b4342695ddc01";
templateParas = "[" + randomNumber + "," + phone + "," + verificationTime + "]"; templateParas = "[" + randomNumber +"]";
break; break;
default: default:
throw new JeroBootException("codeType flase."); throw new JeroBootException("codeType flase.");
@@ -1,4 +1,4 @@
package com.jero.system; package com.jero.system.common;
public class SystemRemindersCommon { public class SystemRemindersCommon {
/** /**
@@ -3,19 +3,23 @@ package com.jero.system.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.mail.service.IPayMailBillService; import com.jero.common.constant.CommonConstant;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.quartz.entity.QuartzJob; import com.jero.modules.quartz.entity.QuartzJob;
import com.jero.modules.quartz.service.IQuartzJobService; import com.jero.modules.quartz.service.IQuartzJobService;
import com.jero.payment.service.IPayPaymentRecordService; import com.jero.payment.service.IPayPaymentRecordService;
import com.jero.system.SystemRemindersCommon; import com.jero.system.common.SystemRemindersCommon;
import com.jero.system.vo.SystemRemindersVO; import com.jero.system.vo.SystemRemindersVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@@ -35,12 +39,9 @@ import java.util.Objects;
public class SystemRemindersController { public class SystemRemindersController {
@Resource @Resource
private IPayPaymentRecordService payPaymentRecordService; private Scheduler scheduler;
@Resource private static final String jobName = "com.jero.quartz.job.RemindersAllJob";
private IQuartzJobService quartzJobService;
private static final String id = "1442663790058471425";
/** /**
* 系统催款 * 系统催款
@@ -54,9 +55,10 @@ public class SystemRemindersController {
// 每年 // 每年
String year = "0 0 0 ${day} ${month} ? *"; String year = "0 0 0 ${day} ${month} ? *";
// 每月 // 每月
String month = "0 0 0 ${day} * ?"; String month = "0 0 0 ${day} * ? *";
// 指定日期执行一次 // 指定日期执行一次
String day = "0 0 0 ${day} ${month} ? ${year}"; String day = "0 0 0 ${day} ${month} ? ${year}";
if(Objects.isNull(systemRemindersVO.getFrequency())){ if(Objects.isNull(systemRemindersVO.getFrequency())){
return Result.error("频率不能为空"); return Result.error("频率不能为空");
} }
@@ -64,21 +66,86 @@ public class SystemRemindersController {
return Result.error("催款时间不能为空"); return Result.error("催款时间不能为空");
} }
String cron = ""; String cron = "";
// 频率 (1:仅一此,2:每月一次,3:每年一次) // 频率 (1:仅一此,3:每月一次,2:每年一次)
if(Objects.equals(systemRemindersVO.getFrequency(),SystemRemindersCommon.FREQUENCY1)){ if(Objects.equals(systemRemindersVO.getFrequency(),SystemRemindersCommon.FREQUENCY1)){
String[] t = systemRemindersVO.getTime().split("-"); String[] t = systemRemindersVO.getTime().split("-");
Calendar now = Calendar.getInstance(); if(t.length != 3){
cron = day.replace("${day}",t[1]).replace("${month}",t[0]).replace("${year}",String.valueOf(now.get(Calendar.YEAR))); return Result.error("催款时间格式不正确");
}else if(Objects.equals(systemRemindersVO.getFrequency(),SystemRemindersCommon.FREQUENCY2)){ }
cron = month.replace("${day}",systemRemindersVO.getTime()); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String dateFirst = systemRemindersVO.getTime().replace("-","");
String dateLast = dateFormat.format(new Date());
int dateFirstIntVal = Integer.parseInt(dateFirst);
int dateLastIntVal = Integer.parseInt(dateLast);
if (dateFirstIntVal <= dateLastIntVal) {
return Result.error("催款日期必须大于当前日期");
}
cron = day.replace("${day}",String.valueOf(Integer.parseInt(t[2]))).replace("${month}",String.valueOf(Integer.parseInt(t[1]))).replace("${year}",String.valueOf(Integer.parseInt(t[0])));
}else if(Objects.equals(systemRemindersVO.getFrequency(),SystemRemindersCommon.FREQUENCY3)){ }else if(Objects.equals(systemRemindersVO.getFrequency(),SystemRemindersCommon.FREQUENCY3)){
String[] t = systemRemindersVO.getTime().split("-"); String[] t = systemRemindersVO.getTime().split("-");
cron = year.replace("${day}",t[1]).replace("${month}",t[0]); if(t.length != 1){
return Result.error("催款时间格式不正确");
}
cron = month.replace("${day}",String.valueOf(Integer.parseInt(t[0])));
}else if(Objects.equals(systemRemindersVO.getFrequency(),SystemRemindersCommon.FREQUENCY2)){
String[] t = systemRemindersVO.getTime().split("-");
if(t.length != 2){
return Result.error("催款时间格式不正确");
}
cron = year.replace("${day}",String.valueOf(Integer.parseInt(t[1]))).replace("${month}",String.valueOf(Integer.parseInt(t[0])));
} }
LambdaUpdateWrapper<QuartzJob> update = new LambdaUpdateWrapper<>(); schedulerDelete(jobName.trim());
update.eq(QuartzJob::getId,id); schedulerAdd(jobName.trim(), cron.trim(), "");
update.set(QuartzJob::getCronExpression,cron);
quartzJobService.update(update);
return Result.OK("操作成功"); return Result.OK("操作成功");
} }
/**
* 删除定时任务
*
* @param jobClassName
*/
private void schedulerDelete(String jobClassName) {
try {
scheduler.pauseTrigger(TriggerKey.triggerKey(jobClassName));
scheduler.unscheduleJob(TriggerKey.triggerKey(jobClassName));
scheduler.deleteJob(JobKey.jobKey(jobClassName));
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new JeroBootException("删除定时任务失败");
}
}
/**
* 添加定时任务
*
* @param jobClassName
* @param cronExpression
* @param parameter
*/
private void schedulerAdd(String jobClassName, String cronExpression, String parameter) {
try {
// 启动调度器
scheduler.start();
// 构建job信息
JobDetail jobDetail = JobBuilder.newJob(getClass(jobClassName).getClass()).withIdentity(jobClassName).usingJobData("parameter", parameter).build();
// 表达式调度构建器(即任务执行的时间)
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
// 按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(jobClassName).withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException e) {
throw new JeroBootException("创建定时任务失败", e);
} catch (RuntimeException e) {
throw new JeroBootException(e.getMessage(), e);
}catch (Exception e) {
throw new JeroBootException("后台找不到该类名:" + jobClassName, e);
}
}
private static Job getClass(String classname) throws Exception {
Class<?> class1 = Class.forName(classname);
return (Job) class1.newInstance();
}
} }
@@ -7,7 +7,7 @@ import java.io.Serializable;
@Data @Data
public class SystemRemindersVO implements Serializable { public class SystemRemindersVO implements Serializable {
/** /**
* 频率 (1:仅一此,2:每月一次,3:每年一次) * 频率 (1:仅一此,3:每月一次,2:每年一次)
*/ */
@ApiModelProperty(value = "频率") @ApiModelProperty(value = "频率")
private Integer frequency; private Integer frequency;