提交 b0e4497c authored 作者: 吕本才's avatar 吕本才

feat: 新增测试的随机任务提醒功能及优化任务状态处理逻辑

上级 8a454ef7
...@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField; ...@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -104,10 +103,14 @@ public class TemporaryActivityTaskClockDO implements Serializable { ...@@ -104,10 +103,14 @@ public class TemporaryActivityTaskClockDO implements Serializable {
*/ */
private Integer subscribeStatus; private Integer subscribeStatus;
// 已发送订阅消息 /**
* 已发送websocket消息
* 0:未发送;1:已发送
*/
private Integer isSendSubscribe; private Integer isSendSubscribe;
/** /**
* 订阅消息发送时间 * 订阅消息发送时间
* 微信模板消息发送时间
*/ */
private Date subscribeTime; private Date subscribeTime;
} }
...@@ -3,15 +3,14 @@ package com.wangxiaolu.promotion.xxljobtask; ...@@ -3,15 +3,14 @@ package com.wangxiaolu.promotion.xxljobtask;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wangxiaolu.promotion.common.enums.FlagType; import com.wangxiaolu.promotion.common.enums.FlagType;
import com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityTaskClockDO; import com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityTaskClockDO;
import com.wangxiaolu.promotion.enums.activity.ActivityClockTaskStatus; import com.wangxiaolu.promotion.enums.activity.ActivityClockTaskStatus;
import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType; import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType;
import com.wangxiaolu.promotion.enums.activity.TemActApproveStatus;
import com.wangxiaolu.promotion.enums.activity.TemporaryActivityTaskClockMessageType; import com.wangxiaolu.promotion.enums.activity.TemporaryActivityTaskClockMessageType;
import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto; import com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto;
import com.wangxiaolu.promotion.service.activity.manage.ActivityTypeQueryService;
import com.wangxiaolu.promotion.service.activity.manage.EmployeeCoreTemporaryInfoService; import com.wangxiaolu.promotion.service.activity.manage.EmployeeCoreTemporaryInfoService;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityTaskClockService; import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityTaskClockService;
import com.wangxiaolu.promotion.service.activity.temporary.impl.SubscribeMessageService; import com.wangxiaolu.promotion.service.activity.temporary.impl.SubscribeMessageService;
...@@ -19,13 +18,9 @@ import com.wangxiaolu.promotion.websocket.TemporaryActivityTaskClockSocketHandle ...@@ -19,13 +18,9 @@ import com.wangxiaolu.promotion.websocket.TemporaryActivityTaskClockSocketHandle
import com.wangxiaolu.promotion.websocket.pojo.MessageBean; import com.wangxiaolu.promotion.websocket.pojo.MessageBean;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -51,17 +46,28 @@ public class ActivityStautsHandler { ...@@ -51,17 +46,28 @@ public class ActivityStautsHandler {
private TemporaryActivityTaskClockSocketHandler taskClockSocketHandler; private TemporaryActivityTaskClockSocketHandler taskClockSocketHandler;
@Autowired @Autowired
private EmployeeCoreTemporaryInfoService temporaryInfoService; private EmployeeCoreTemporaryInfoService temporaryInfoService;
@XxlJob("testSubscribeMessage")
public void TestSubscribeMessage() {
List<TemporaryActivityTaskClockDO> list = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>()
.eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType())
.eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType())
.le(TemporaryActivityTaskClockDO::getCreateDate, new Date())
);
for (TemporaryActivityTaskClockDO taskClockDO : list) {
sendWebsocketMessage(taskClockDO);
}
}
@XxlJob("sendSubscribeMessage") @XxlJob("sendSubscribeMessage")
public void sendSubscribeMessage() { public void sendSubscribeMessage() {
DateTime undoDateTime = DateUtil.offsetMinute(new Date(), -15); DateTime undoDateTime = DateUtil.offsetMinute(new Date(), -15);
// 查询 超过15分钟的,但是状态还是1的 状态改成未完成 // 查询没有做随机任务的, 超过15分钟的,但是状态还是1进行中的 状态改成未完成,表示未拍照做任务
List<TemporaryActivityTaskClockDO> undoList = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>() List<TemporaryActivityTaskClockDO> undoList = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>()
.eq(TemporaryActivityTaskClockDO::getTaskStatus, ActivityClockTaskStatus.STARTING.getType()) .eq(TemporaryActivityTaskClockDO::getTaskStatus, ActivityClockTaskStatus.STARTING.getType())
.eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType()) .eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType())
.eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType()) .eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType())
.eq(TemporaryActivityTaskClockDO::getIsSendSubscribe, FlagType.NO.getType()) // .eq(TemporaryActivityTaskClockDO::getIsSendSubscribe, FlagType.NO.getType())
// 小于等于 // 小于等于
.le(TemporaryActivityTaskClockDO::getRequiredlockTime, undoDateTime)); .le(TemporaryActivityTaskClockDO::getRequiredlockTime, undoDateTime));
for (TemporaryActivityTaskClockDO taskClockDO : undoList){ for (TemporaryActivityTaskClockDO taskClockDO : undoList){
...@@ -70,19 +76,36 @@ public class ActivityStautsHandler { ...@@ -70,19 +76,36 @@ public class ActivityStautsHandler {
taskClockService.updateById(taskClockDO); taskClockService.updateById(taskClockDO);
} }
DateTime latestDateTime = DateUtil.offsetMinute(new Date(), 15);
// 待开始的 ->进行中 // 待开始的 ->进行中
List<TemporaryActivityTaskClockDO> list = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>() List<TemporaryActivityTaskClockDO> list = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>()
.eq(TemporaryActivityTaskClockDO::getTaskStatus, ActivityClockTaskStatus.TO_BE_START.getType()) .eq(TemporaryActivityTaskClockDO::getTaskStatus, ActivityClockTaskStatus.TO_BE_START.getType())
.eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType()) .eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType())
.eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType()) .eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType())
.le(TemporaryActivityTaskClockDO::getRequiredlockTime, new Date())
.ge(TemporaryActivityTaskClockDO::getRequiredlockTime, undoDateTime)
);
List<TemporaryActivityTaskClockDO> startingList = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>()
.eq(TemporaryActivityTaskClockDO::getTaskStatus, ActivityClockTaskStatus.STARTING.getType())
.eq(TemporaryActivityTaskClockDO::getIsSendSubscribe, FlagType.NO.getType()) .eq(TemporaryActivityTaskClockDO::getIsSendSubscribe, FlagType.NO.getType())
.le(TemporaryActivityTaskClockDO::getRequiredlockTime, latestDateTime) .eq(TemporaryActivityTaskClockDO::getTaskType, ActivityPhotoType.RANDOM_TASK.getType())
// .ge(TemporaryActivityTaskClockDO::getRequiredlockTime, new Date()) .eq(TemporaryActivityTaskClockDO::getIsDelete, FlagType.NO.getType())
.le(TemporaryActivityTaskClockDO::getRequiredlockTime, new Date())
.ge(TemporaryActivityTaskClockDO::getRequiredlockTime, undoDateTime)
); );
list.addAll(startingList);
for (TemporaryActivityTaskClockDO taskClockDO : list) { for (TemporaryActivityTaskClockDO taskClockDO : list) {
sendWebsocketMessage(taskClockDO);
sendWxMessage(taskClockDO);
// 修改状态 待开始 -> 进行中
taskClockDO.setTaskStatus(ActivityClockTaskStatus.STARTING.getType());
taskClockService.updateById(taskClockDO);
}
}
private void sendWebsocketMessage(TemporaryActivityTaskClockDO taskClockDO) {
// 发送websocket 通知用户 // 发送websocket 通知用户
MessageBean msgBean = new MessageBean(); MessageBean msgBean = new MessageBean();
msgBean.setMsgType(TemporaryActivityTaskClockMessageType.RANDOM_TASK_START.getType()); msgBean.setMsgType(TemporaryActivityTaskClockMessageType.RANDOM_TASK_START.getType());
...@@ -92,14 +115,20 @@ public class ActivityStautsHandler { ...@@ -92,14 +115,20 @@ public class ActivityStautsHandler {
log.info("完成发送websocket信息,用户id:{}", taskClockDO.getTemporaryId()); log.info("完成发送websocket信息,用户id:{}", taskClockDO.getTemporaryId());
taskClockDO.setIsSendSubscribe(FlagType.YES.getType()); taskClockDO.setIsSendSubscribe(FlagType.YES.getType());
} }
DateTime requiredlockTime = DateUtil.offsetMinute(taskClockDO.getRequiredlockTime(), 15); }
/**
* 发送微信模板消息
* @param taskClockDO
*/
private void sendWxMessage(TemporaryActivityTaskClockDO taskClockDO) {
if(ObjectUtil.isNotEmpty(taskClockDO.getSubscribeTime())){
// 2. 构建模板数据(根据小程序订阅模板的字段定义) // 2. 构建模板数据(根据小程序订阅模板的字段定义)
Map<String, String> data = new HashMap<>(); Map<String, String> data = new HashMap<>();
// 模板中的字段1发布人 // 模板中的字段1发布人
data.put("thing2", "小卤促销平台"); data.put("thing2", "小卤促销平台");
// 模板中的字段2 截止时间 // 模板中的字段2 截止时间
DateTime requiredlockTime = DateUtil.offsetMinute(taskClockDO.getRequiredlockTime(), 15);
data.put("time3", DateUtil.format(requiredlockTime,"yyyy-MM-dd HH:mm")); data.put("time3", DateUtil.format(requiredlockTime,"yyyy-MM-dd HH:mm"));
// 模板中的字段3 任务名称 // 模板中的字段3 任务名称
data.put("thing1", "请拍摄清晰的工作场景照片"); data.put("thing1", "请拍摄清晰的工作场景照片");
...@@ -124,12 +153,9 @@ public class ActivityStautsHandler { ...@@ -124,12 +153,9 @@ public class ActivityStautsHandler {
if (success) { if (success) {
taskClockDO.setSubscribeTime(new Date()); taskClockDO.setSubscribeTime(new Date());
taskClockDO.setSubscribeStatus(FlagType.YES.getType());
} }
// 修改状态 待开始 -> 进行中
taskClockDO.setTaskStatus(ActivityClockTaskStatus.STARTING.getType());
taskClockService.updateById(taskClockDO);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论