SpringBoot基于注解的定时任务

/**
 * @author liangjunfei
 */
@Service
@Transactional
public class taskService {
	
	/**
	*  根据条件查询出需要发送短信的手机号和短信内容
	*/
	public void dataPush() {
		List<CommonJob> messageJobs = commonJobMapper.selectByLimitForSendMessageJob();
		 messageJobs.forEach(o -> {
                // 调用短信接口
                String result = commonTaskService.sendCommonMessage(o.getNo(), o.getContent());
                // 发送成功修改状态
                o.setValid(1);
                o.setUpdateTime(new Date());
                o.setDescription(o.getDescription() + "--" + result);
                // 发送失败 15分钟后继续发送
                if(StringUtil.isNotEmpty(result) && result.contains("短信发送失败")){
                    o.setValid(0);
                    o.setErrorTimes(o.getErrorTimes() + 1);
                }
                commonJobMapper.updateByPrimaryKeySelective(o);
            });
		}

	 /**
	  * 对已发送过短信的任务进行删除。
	  * @return int
	  */
	 public int deleteData() {
		 Calendar cal = Calendar.getInstance();
		 cal.add(Calendar.DATE, -20);    //保留20天
		 CommonJobExample commonJobExample = new CommonJobExample();
		 commonJobExample.createCriteria().andTypeEqualTo(3).andValidEqualTo(1).andCreateTimeLessThanOrEqualTo(cal.getTime());       //短信job,并已执行
		 return commonJobMapper.deleteByExample(commonJobExample);
	 }

}
@Service
public class CommonTask {

	@Autowired
	private CommonTaskService commonTaskService;
	
	/**
	 * 发送短信
	 * 每天8:00-19:45每隔15分钟执行一次
	 */
	@Scheduled(cron = "0 0/20 8-20 * * ?")
	public void runSendNote(){
		try {
			logger.info("CommonTask runSendNote begin");
			commonTaskService.sendNote();
			logger.info("CommonTask runSendNote end");
		}catch (Exception e){
			logger.error("CommonTask runSendNote e = " + e);
		}
	}

	/**
	 * 对已发送过短信的任务进行删除
	 * 每周二下午两点半执行
	 */
	@Scheduled(cron = "0 30 14 ? * TUE")
	public void deleteData(){
		try {
			long startTime = System.currentTimeMillis();
			int count = commonTaskService.deleteData();
			logger.info("deleteData本次删除短信数据耗时(ms):{}。--删除条数:{}", (System.currentTimeMillis() - startTime), count);
		} catch (Exception e) {
			logger.error("本次数据删除失败!", e);
		}
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编码的小梁

码农不易 感恩打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值