定时任务处理

This commit is contained in:
2024-12-30 15:32:56 +08:00
parent eca308e06f
commit 8ca14e05a1
21 changed files with 127 additions and 465 deletions

38
pom.xml
View File

@@ -137,11 +137,11 @@
<version>5.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->
<!-- <version>1.1.10</version>-->
<!-- </dependency>-->
<!-- 苹果工具类 -->
<dependency>
<groupId>com.auth0</groupId>
@@ -262,11 +262,11 @@
</exclusions>
</dependency>
<!--动态数据库切换-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.1.3</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>dynamic-datasource-spring-boot-starter</artifactId>-->
<!-- <version>4.1.3</version>-->
<!-- </dependency>-->
<dependency>
<groupId>mysql</groupId>
@@ -274,11 +274,11 @@
<version>${mysql.version}</version>
</dependency>
<!--oracle驱动-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.oracle</groupId>-->
<!-- <artifactId>ojdbc6</artifactId>-->
<!-- <version>${oracle.version}</version>-->
<!-- </dependency>-->
<!-- 用于定义sharding-jdbc 分片规则 -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
@@ -303,10 +303,10 @@
<version>${mssql.version}</version>
</dependency>
<!--postgresql驱动-->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.postgresql</groupId>-->
<!-- <artifactId>postgresql</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>

View File

@@ -1,6 +1,6 @@
package com.sqx.common.utils;
import com.alibaba.druid.util.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -81,13 +81,12 @@ public class ShardingConfig {
shardingRuleConfig.setTableRuleConfigs(addTableRuleConfigs());
// 配置是否显示sql
// Properties props = new Properties();
// props.put("sql.show", true);
Properties props = new Properties();
props.put("sql.show", showSql);
// 配置数据源
Map<String, DataSource> dataSourceMap = getShardingDataBase();
return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, null);
// return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, props);
return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, props);
}
/**
@@ -144,8 +143,6 @@ public class ShardingConfig {
masterSlaveRules.forEach((databaseName, masterSlaveRules) -> {
MasterSlaveRuleConfiguration masterSlaveRuleConfig = new MasterSlaveRuleConfiguration(databaseName,
masterSlaveRules.getMasterDataSourceName(), masterSlaveRules.getSlaveDataSourceNames());
System.out.println("写入"+masterSlaveRules.getMasterDataSourceName());
System.out.println("读出"+masterSlaveRules.getSlaveDataSourceNames());
sets.add(masterSlaveRuleConfig);
});
return sets;

View File

@@ -1,57 +0,0 @@
package com.sqx.modules.job.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import javax.sql.DataSource;
import java.util.Properties;
/**
* 定时任务配置
*
*/
@Configuration
public class ScheduleConfig {
@Bean
public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setDataSource(dataSource);
//quartz参数
Properties prop = new Properties();
prop.put("org.quartz.scheduler.instanceName", "sqxScheduler");
prop.put("org.quartz.scheduler.instanceId", "AUTO");
//线程池配置
prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
prop.put("org.quartz.threadPool.threadCount", "20");
prop.put("org.quartz.threadPool.threadPriority", "5");
//JobStore配置
prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore");
//集群配置
prop.put("org.quartz.jobStore.isClustered", "true");
prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");
prop.put("org.quartz.jobStore.misfireThreshold", "12000");
prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
//PostgreSQL数据库需要打开此注释
//prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate");
factory.setQuartzProperties(prop);
factory.setSchedulerName("sqxScheduler");
//延时启动
factory.setStartupDelay(30);
factory.setApplicationContextSchedulerContextKey("applicationContextKey");
//可选QuartzScheduler 启动时更新己存在的Job这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了
factory.setOverwriteExistingJobs(true);
//设置自动启动默认为true
factory.setAutoStartup(true);
return factory;
}
}

View File

@@ -81,34 +81,34 @@ public class ScheduleJobController {
/**
* 立即执行任务
*/
@SysLog("立即执行任务")
@RequestMapping("/run")
public Result run(@RequestBody Long[] jobIds){
scheduleJobService.run(jobIds);
return Result.success();
}
/**
* 暂停定时任务
*/
@SysLog("暂停定时任务")
@RequestMapping("/pause")
public Result pause(@RequestBody Long[] jobIds){
scheduleJobService.pause(jobIds);
return Result.success();
}
/**
* 恢复定时任务
*/
@SysLog("恢复定时任务")
@RequestMapping("/resume")
public Result resume(@RequestBody Long[] jobIds){
scheduleJobService.resume(jobIds);
return Result.success();
}
// @SysLog("立即执行任务")
// @RequestMapping("/run")
// public Result run(@RequestBody Long[] jobIds){
// scheduleJobService.run(jobIds);
//
// return Result.success();
// }
//
// /**
// * 暂停定时任务
// */
// @SysLog("暂停定时任务")
// @RequestMapping("/pause")
// public Result pause(@RequestBody Long[] jobIds){
// scheduleJobService.pause(jobIds);
//
// return Result.success();
// }
//
// /**
// * 恢复定时任务
// */
// @SysLog("恢复定时任务")
// @RequestMapping("/resume")
// public Result resume(@RequestBody Long[] jobIds){
// scheduleJobService.resume(jobIds);
//
// return Result.success();
// }
}

View File

@@ -34,18 +34,18 @@ public interface ScheduleJobService extends IService<ScheduleJobEntity> {
*/
int updateBatch(Long[] jobIds, int status);
/**
* 立即执行
*/
void run(Long[] jobIds);
/**
* 暂停运行
*/
void pause(Long[] jobIds);
/**
* 恢复运行
*/
void resume(Long[] jobIds);
// /**
// * 立即执行
// */
// void run(Long[] jobIds);
//
// /**
// * 暂停运行
// */
// void pause(Long[] jobIds);
//
// /**
// * 恢复运行
// */
// void resume(Long[] jobIds);
}

View File

@@ -9,38 +9,22 @@ import com.sqx.common.utils.Query;
import com.sqx.modules.job.dao.ScheduleJobDao;
import com.sqx.modules.job.entity.ScheduleJobEntity;
import com.sqx.modules.job.service.ScheduleJobService;
import com.sqx.modules.job.utils.ScheduleUtils;
import org.apache.commons.lang.StringUtils;
import org.quartz.CronTrigger;
import org.quartz.Scheduler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service("scheduleJobService")
public class ScheduleJobServiceImpl extends ServiceImpl<ScheduleJobDao, ScheduleJobEntity> implements ScheduleJobService {
@Autowired
private Scheduler scheduler;
/**
* 项目启动时,初始化定时器
*/
@PostConstruct
public void init(){
List<ScheduleJobEntity> scheduleJobList = this.list();
for(ScheduleJobEntity scheduleJob : scheduleJobList){
CronTrigger cronTrigger = ScheduleUtils.getCronTrigger(scheduler, scheduleJob.getJobId());
//如果不存在,则创建
if(cronTrigger == null) {
ScheduleUtils.createScheduleJob(scheduler, scheduleJob);
}else {
ScheduleUtils.updateScheduleJob(scheduler, scheduleJob);
}
}
}
@Override
public PageUtils queryPage(Map<String, Object> params) {
@@ -61,25 +45,18 @@ public class ScheduleJobServiceImpl extends ServiceImpl<ScheduleJobDao, Schedule
scheduleJob.setCreateTime(new Date());
scheduleJob.setStatus(Constant.ScheduleStatus.NORMAL.getValue());
this.save(scheduleJob);
ScheduleUtils.createScheduleJob(scheduler, scheduleJob);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ScheduleJobEntity scheduleJob) {
ScheduleUtils.updateScheduleJob(scheduler, scheduleJob);
this.updateById(scheduleJob);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteBatch(Long[] jobIds) {
for(Long jobId : jobIds){
ScheduleUtils.deleteScheduleJob(scheduler, jobId);
}
//删除数据
this.removeByIds(Arrays.asList(jobIds));
}
@@ -92,32 +69,32 @@ public class ScheduleJobServiceImpl extends ServiceImpl<ScheduleJobDao, Schedule
return baseMapper.updateBatch(map);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void run(Long[] jobIds) {
for(Long jobId : jobIds){
ScheduleUtils.run(scheduler, this.getById(jobId));
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void pause(Long[] jobIds) {
for(Long jobId : jobIds){
ScheduleUtils.pauseJob(scheduler, jobId);
}
updateBatch(jobIds, Constant.ScheduleStatus.PAUSE.getValue());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void resume(Long[] jobIds) {
for(Long jobId : jobIds){
ScheduleUtils.resumeJob(scheduler, jobId);
}
updateBatch(jobIds, Constant.ScheduleStatus.NORMAL.getValue());
}
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void run(Long[] jobIds) {
// for(Long jobId : jobIds){
// ScheduleUtils.run(scheduler, this.getById(jobId));
// }
// }
//
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void pause(Long[] jobIds) {
// for(Long jobId : jobIds){
// ScheduleUtils.pauseJob(scheduler, jobId);
// }
//
// updateBatch(jobIds, Constant.ScheduleStatus.PAUSE.getValue());
// }
//
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void resume(Long[] jobIds) {
// for(Long jobId : jobIds){
// ScheduleUtils.resumeJob(scheduler, jobId);
// }
//
// updateBatch(jobIds, Constant.ScheduleStatus.NORMAL.getValue());
// }
}

View File

@@ -18,8 +18,8 @@ import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
@Component("CashOutTask")
public class CashOutTask implements ITask {
@Component
public class CashOutTask{
@Resource
private CashOutDao cashOutDao;
@@ -30,7 +30,6 @@ public class CashOutTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void run(String params) {
logger.info("提现开始");
List<CashOut> cashOuts = cashOutDao.selectYesterday();

View File

@@ -15,6 +15,7 @@ import com.sqx.modules.utils.AliPayOrderUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -23,8 +24,8 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Component("CashOutTask2")
public class CashOutTask2 implements ITask {
@Component
public class CashOutTask2{
@Resource
private CashOutDao cashOutDao;
@@ -35,7 +36,6 @@ public class CashOutTask2 implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void run(String params) {
logger.info("提现开始");
if (StringUtils.isBlank(params) || isValidDate(params)) {

View File

@@ -1,15 +0,0 @@
package com.sqx.modules.job.task;
/**
* 定时任务接口,所有定时任务都要实现该接口
*
*/
public interface ITask {
/**
* 执行定时任务接口
*
* @param params 参数多参数使用JSON数据
*/
void run(String params);
}

View File

@@ -9,14 +9,17 @@ import com.sqx.modules.discSpinning.service.DiscSpinningService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Component("SpinningTask3")
public class SpinningTask3 implements ITask {
@Component
@EnableScheduling
public class SpinningTask3 {
@Resource
private DiscSpinningService spinningController;
@@ -25,8 +28,12 @@ public class SpinningTask3 implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void run(String params) {
@Scheduled(cron = "0 0/2 * * * ? ")
public void record() {
record("1");
}
public void record(String params) {
logger.info("大转盘到账补偿机制");
// 获取当前时间
Date now = DateUtil.date();
@@ -48,6 +55,7 @@ public class SpinningTask3 implements ITask {
recordQueryWrapper.lt("create_time", fiveMinutesAgoStr);
//小于
recordQueryWrapper.gt("create_time", tenMinutesAgoStr);
logger.info("大转盘到账补偿时间范围{}-----{}", tenMinutesAgoStr, fiveMinutesAgoStr);
List<DiscSpinningRecord> list = recordService.list(recordQueryWrapper);
ThreadUtil.execAsync(() -> {
for (DiscSpinningRecord record : list) {

View File

@@ -21,8 +21,8 @@ import java.util.List;
* @author GYJoker
*/
@Slf4j
@Component("SupplyAgainSignRewardTask")
public class SupplyAgainSignRewardTask implements ITask {
@Component
public class SupplyAgainSignRewardTask{
@Autowired
private UserService userService;
@@ -35,7 +35,6 @@ public class SupplyAgainSignRewardTask implements ITask {
@Autowired
private UserMoneyService userMoneyService;
@Override
public void run(String params) {
if (StringUtils.isBlank(params)) {
log.error("参数为空");

View File

@@ -15,8 +15,8 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Component("TempCashOutTask")
public class TempCashOutTask implements ITask {
@Component
public class TempCashOutTask{
@Resource
private CashOutDao cashOutDao;
@@ -27,7 +27,6 @@ public class TempCashOutTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void run(String params) {
logger.info("提现开始");
List<CashOut> cashOuts = cashOutDao.selectTemp();

View File

@@ -40,8 +40,8 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@Component("TempOrdersTask")
public class TempOrdersTask implements ITask {
@Component
public class TempOrdersTask {
@Resource
private OrdersDao ordersDao;
@@ -69,7 +69,6 @@ public class TempOrdersTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void run(String params) {
logger.info("订单表数据处理开始");
List<Orders> orders = ordersDao.selectList(Wrappers.<Orders>lambdaQuery()

View File

@@ -1,25 +0,0 @@
package com.sqx.modules.job.task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* 测试定时任务(演示Demo可删除)
*
* testTask为spring bean的名称
*
*/
@Component("testTask")
public class TestTask implements ITask {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void run(String params){
logger.debug("TestTask定时任务正在执行参数为{}", params);
}
}

View File

@@ -1,72 +0,0 @@
package com.sqx.modules.job.utils;
import com.sqx.common.utils.SpringContextUtils;
import com.sqx.modules.job.entity.ScheduleJobEntity;
import com.sqx.modules.job.entity.ScheduleJobLogEntity;
import com.sqx.modules.job.service.ScheduleJobLogService;
import org.apache.commons.lang.StringUtils;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.lang.reflect.Method;
import java.util.Date;
/**
* 定时任务
*
*/
public class ScheduleJob extends QuartzJobBean {
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
ScheduleJobEntity scheduleJob = (ScheduleJobEntity) context.getMergedJobDataMap()
.get(ScheduleJobEntity.JOB_PARAM_KEY);
//获取spring bean
ScheduleJobLogService scheduleJobLogService = (ScheduleJobLogService) SpringContextUtils.getBean("scheduleJobLogService");
//数据库保存执行记录
ScheduleJobLogEntity log = new ScheduleJobLogEntity();
log.setJobId(scheduleJob.getJobId());
log.setBeanName(scheduleJob.getBeanName());
log.setParams(scheduleJob.getParams());
log.setCreateTime(new Date());
//任务开始时间
long startTime = System.currentTimeMillis();
try {
//执行任务
logger.debug("任务准备执行任务ID" + scheduleJob.getJobId());
Object target = SpringContextUtils.getBean(scheduleJob.getBeanName());
Method method = target.getClass().getDeclaredMethod("run", String.class);
method.invoke(target, scheduleJob.getParams());
//任务执行总时长
long times = System.currentTimeMillis() - startTime;
log.setTimes((int)times);
//任务状态 0成功 1失败
log.setStatus(0);
logger.debug("任务执行完毕任务ID" + scheduleJob.getJobId() + " 总共耗时:" + times + "毫秒");
} catch (Exception e) {
logger.error("任务执行失败任务ID" + scheduleJob.getJobId(), e);
//任务执行总时长
long times = System.currentTimeMillis() - startTime;
log.setTimes((int)times);
//任务状态 0成功 1失败
log.setStatus(1);
log.setError(StringUtils.substring(e.toString(), 0, 2000));
}finally {
scheduleJobLogService.save(log);
}
}
}

View File

@@ -1,147 +0,0 @@
package com.sqx.modules.job.utils;
import com.sqx.common.exception.SqxException;
import com.sqx.common.utils.Constant;
import com.sqx.modules.job.entity.ScheduleJobEntity;
import org.quartz.*;
/**
* 定时任务工具类
*
*/
public class ScheduleUtils {
private final static String JOB_NAME = "TASK_";
/**
* 获取触发器key
*/
public static TriggerKey getTriggerKey(Long jobId) {
return TriggerKey.triggerKey(JOB_NAME + jobId);
}
/**
* 获取jobKey
*/
public static JobKey getJobKey(Long jobId) {
return JobKey.jobKey(JOB_NAME + jobId);
}
/**
* 获取表达式触发器
*/
public static CronTrigger getCronTrigger(Scheduler scheduler, Long jobId) {
try {
return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId));
} catch (SchedulerException e) {
throw new SqxException("获取定时任务CronTrigger出现异常", e);
}
}
/**
* 创建定时任务
*/
public static void createScheduleJob(Scheduler scheduler, ScheduleJobEntity scheduleJob) {
try {
//构建job信息
JobDetail jobDetail = JobBuilder.newJob(ScheduleJob.class).withIdentity(getJobKey(scheduleJob.getJobId())).build();
//表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression())
.withMisfireHandlingInstructionDoNothing();
//按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(scheduleJob.getJobId())).withSchedule(scheduleBuilder).build();
//放入参数,运行时的方法可以获取
jobDetail.getJobDataMap().put(ScheduleJobEntity.JOB_PARAM_KEY, scheduleJob);
scheduler.scheduleJob(jobDetail, trigger);
//暂停任务
if(scheduleJob.getStatus() == Constant.ScheduleStatus.PAUSE.getValue()){
pauseJob(scheduler, scheduleJob.getJobId());
}
} catch (SchedulerException e) {
throw new SqxException("创建定时任务失败", e);
}
}
/**
* 更新定时任务
*/
public static void updateScheduleJob(Scheduler scheduler, ScheduleJobEntity scheduleJob) {
try {
TriggerKey triggerKey = getTriggerKey(scheduleJob.getJobId());
//表达式调度构建器
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression())
.withMisfireHandlingInstructionDoNothing();
CronTrigger trigger = getCronTrigger(scheduler, scheduleJob.getJobId());
//按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
//参数
trigger.getJobDataMap().put(ScheduleJobEntity.JOB_PARAM_KEY, scheduleJob);
scheduler.rescheduleJob(triggerKey, trigger);
//暂停任务
if(scheduleJob.getStatus() == Constant.ScheduleStatus.PAUSE.getValue()){
pauseJob(scheduler, scheduleJob.getJobId());
}
} catch (SchedulerException e) {
throw new SqxException("更新定时任务失败", e);
}
}
/**
* 立即执行任务
*/
public static void run(Scheduler scheduler, ScheduleJobEntity scheduleJob) {
try {
//参数
JobDataMap dataMap = new JobDataMap();
dataMap.put(ScheduleJobEntity.JOB_PARAM_KEY, scheduleJob);
scheduler.triggerJob(getJobKey(scheduleJob.getJobId()), dataMap);
} catch (SchedulerException e) {
throw new SqxException("立即执行定时任务失败", e);
}
}
/**
* 暂停任务
*/
public static void pauseJob(Scheduler scheduler, Long jobId) {
try {
scheduler.pauseJob(getJobKey(jobId));
} catch (SchedulerException e) {
throw new SqxException("暂停定时任务失败", e);
}
}
/**
* 恢复任务
*/
public static void resumeJob(Scheduler scheduler, Long jobId) {
try {
scheduler.resumeJob(getJobKey(jobId));
} catch (SchedulerException e) {
throw new SqxException("暂停定时任务失败", e);
}
}
/**
* 删除定时任务
*/
public static void deleteScheduleJob(Scheduler scheduler, Long jobId) {
try {
scheduler.deleteJob(getJobKey(jobId));
} catch (SchedulerException e) {
throw new SqxException("删除定时任务失败", e);
}
}
}

View File

@@ -1,6 +1,6 @@
package com.sqx.modules.pay.wuyou;
import com.alibaba.druid.util.Utils;
import com.sqx.modules.utils.MD5Util;
import java.util.HashMap;
import java.util.Map;
@@ -23,7 +23,7 @@ public class Encrypt {
sb.append("key=").append(APP_SECRET);
String signStr = sb.toString();
System.out.println("signStr: " + signStr);
return Utils.md5(signStr).toUpperCase();
return MD5Util.encodeByMD5(signStr).toUpperCase();
}
public static void main(String[] args) {

View File

@@ -1,4 +1,4 @@
package com.sqx.config;
package com.sqx.sharding;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory;

View File

@@ -16,7 +16,7 @@ spring:
shardingsphere:
center-tables-data-node: duanju.%s
# 显示sharding-jdbc改写的sql语句
show-sql: true
show-sql: false
# 数据源名称
datasource:
# 数据源配置begin

View File

@@ -1 +1 @@
center-tables=activity,app,banner,cash_out,comment_good,common_info,complet_award,coupon,coupon_user,course,course_classification,course_collect,course_comment,course_details,course_user,disc_spinning,disc_spinning_amount,disc_spinning_record,help_classify,help_word,invite,invite_award,invite_money,message_info,msg,orders,pay_classify,pay_details,qrtz_blob_triggers,qrtz_calendars,qrtz_cron_triggers,qrtz_fired_triggers,qrtz_job_details,qrtz_locks,qrtz_paused_trigger_grps,qrtz_scheduler_state,qrtz_simple_triggers,qrtz_simprop_triggers,qrtz_triggers,schedule_job,schedule_job_log,sdk_info,sdk_type,search,sys_captcha,sys_config,sys_dict,sys_log,sys_menu,sys_oss,sys_role,sys_role_menu,sys_user,sys_user_role,sys_user_token,task_center,task_center_record,task_center_reward,tb_user,uni_ad_callback_record,url_address,user_integral,user_integral_details,user_money,user_money_details,user_prize_exchange,user_sign_record,user_vip,vip_details
center-tables=activity,app,banner,cash_out,comment_good,common_info,complet_award,coupon,coupon_user,course,course_classification,course_collect,course_comment,course_details,course_user,disc_spinning,disc_spinning_amount,disc_spinning_record,help_classify,help_word,invite,invite_award,invite_money,message_info,msg,orders,pay_classify,pay_details,qrtz_blob_triggers,qrtz_calendars,qrtz_cron_triggers,qrtz_fired_triggers,qrtz_job_details,qrtz_locks,qrtz_paused_trigger_grps,qrtz_scheduler_state,qrtz_simple_triggers,qrtz_simprop_triggers,qrtz_triggers,schedule_job,schedule_job_log,sdk_info,sdk_type,search,sys_captcha,sys_config,sys_dict,sys_log,sys_menu,sys_oss,sys_role,sys_role_menu,sys_user,sys_user_role,sys_user_token,task_center,task_center_record,task_center_reward,tb_user,uni_ad_callback_record,url_address,user_integral,user_integral_details,user_money,user_money_details,user_prize_exchange,user_sign_record,user_vip,vip_details,invite_achievement