定时任务超v过期
课程过期
This commit is contained in:
48
src/main/java/com/peanut/modules/job/task/CourseTask.java
Normal file
48
src/main/java/com/peanut/modules/job/task/CourseTask.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package com.peanut.modules.job.task;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.peanut.modules.common.dao.UserCourseBuyDao;
|
||||
import com.peanut.modules.common.entity.UserCourseBuyEntity;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Component("courseTask")
|
||||
public class CourseTask implements ITask{
|
||||
|
||||
@Autowired
|
||||
private UserCourseBuyDao userCourseBuyDao;
|
||||
|
||||
@Override
|
||||
public void run(String params) {
|
||||
LambdaQueryWrapper<UserCourseBuyEntity> wrapper = new LambdaQueryWrapper();
|
||||
wrapper.eq(UserCourseBuyEntity::getUserId,params);
|
||||
List<UserCourseBuyEntity> list = userCourseBuyDao.selectList(wrapper);
|
||||
if (list.size() > 0) {
|
||||
for (UserCourseBuyEntity userCourseBuyEntity : list) {
|
||||
if (userCourseBuyEntity.getStartTime()==null) {
|
||||
//未开始学习,超过一年自动开始
|
||||
if (DateUtils.addYears(userCourseBuyEntity.getCreateTime(),1).getTime()<=new Date().getTime()){
|
||||
userCourseBuyEntity.setStartTime(DateUtils.addYears(userCourseBuyEntity.getCreateTime(),1));
|
||||
userCourseBuyEntity.setEndTime(DateUtils.addDays(userCourseBuyEntity.getStartTime(),userCourseBuyEntity.getDays()));
|
||||
userCourseBuyDao.updateById(userCourseBuyEntity);
|
||||
}
|
||||
}else {
|
||||
//开始时间+有效天数,过期删除
|
||||
if (DateUtils.addDays(userCourseBuyEntity.getStartTime(),userCourseBuyEntity.getDays()).getTime() >= new Date().getTime()) {
|
||||
userCourseBuyDao.deleteById(userCourseBuyEntity.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("课程过期更新完成");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,19 @@
|
||||
package com.peanut.modules.job.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.peanut.common.utils.MailUtil;
|
||||
import com.peanut.config.DelayQueueConfig;
|
||||
import com.peanut.modules.common.entity.MyUserEntity;
|
||||
import com.peanut.modules.common.entity.UserVip;
|
||||
import com.peanut.modules.common.service.MyUserService;
|
||||
import com.peanut.modules.master.service.UserVipService;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.amqp.core.MessagePostProcessor;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -13,28 +22,68 @@ import java.util.List;
|
||||
|
||||
@Component("userVipTask")
|
||||
public class UserVipTask implements ITask{
|
||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
@Autowired
|
||||
private UserVipService vipService;
|
||||
@Autowired
|
||||
private MyUserService userService;
|
||||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Override
|
||||
public void run(String params) {
|
||||
LambdaQueryWrapper<UserVip> wrapper = new LambdaQueryWrapper();
|
||||
wrapper.eq(UserVip::getState,0);
|
||||
wrapper.eq(UserVip::getUserId,params);
|
||||
List<UserVip> list = vipService.list(wrapper);
|
||||
if (list.size() > 0) {
|
||||
for (UserVip userVip : list) {
|
||||
MyUserEntity user = userService.getById(userVip.getUserId());
|
||||
if (userVip.getEndTime().getTime()<new Date().getTime()){
|
||||
userVip.setState(1);
|
||||
vipService.saveOrUpdate(userVip);
|
||||
MyUserEntity user = userService.getById(userVip.getUserId());
|
||||
user.setVip("0");
|
||||
userService.saveOrUpdate(user);
|
||||
}else if (DateUtils.isSameDay(DateUtils.addDays(new Date(),60),userVip.getEndTime())) {
|
||||
try {
|
||||
if (StringUtils.isNotEmpty(user.getTel())){
|
||||
userService.sendCodeForRegister(user.getTel(),"VIPWillExpire",86);
|
||||
}else if (StringUtils.isNotEmpty(user.getEmail())) {
|
||||
MailUtil.sendMail("太湖超V提醒","超V还有2月到期",user.getEmail());
|
||||
}
|
||||
}catch (Exception e) {
|
||||
logger.error("userVipTask定时任务超V提醒出错,错误为:{}", e.getMessage());
|
||||
}
|
||||
}else if (DateUtils.isSameDay(DateUtils.addDays(new Date(),30),userVip.getEndTime())) {
|
||||
try {
|
||||
if (StringUtils.isNotEmpty(user.getTel())){
|
||||
userService.sendCodeForRegister(user.getTel(),"VIPWillExpire",86);
|
||||
}else if (StringUtils.isNotEmpty(user.getEmail())) {
|
||||
MailUtil.sendMail("太湖超V提醒","超V还有一月到期",user.getEmail());
|
||||
}
|
||||
}catch (Exception e) {
|
||||
logger.error("userVipTask定时任务超V提醒出错,错误为:{}", e.getMessage());
|
||||
}
|
||||
}else if (DateUtils.isSameDay(DateUtils.addMinutes(new Date(),3),userVip.getEndTime())) {
|
||||
rabbitTemplate.convertAndSend(
|
||||
DelayQueueConfig.USERVIP_EXCHANGE,
|
||||
DelayQueueConfig.USERVIP_ROUTING_KEY,
|
||||
userVip.getId(),
|
||||
messagePostProcessor(userVip.getEndTime().getTime()-new Date().getTime())
|
||||
);
|
||||
System.out.println("----------------------------------------");
|
||||
System.out.println("会员还剩7天,加入队列");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private MessagePostProcessor messagePostProcessor(long date) {
|
||||
return message -> {
|
||||
//设置有效期7天
|
||||
message.getMessageProperties().setExpiration(String.valueOf(date));
|
||||
return message;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user