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

feat(promotion): 更新活动任务状态枚举及逻辑处理

上级 c1a33cf4
......@@ -48,7 +48,7 @@ public class TemporaryActivityTaskClockDO implements Serializable {
*/
private Integer taskType;
/**
* 任务状态 1、进行中 2、已完成 3、未完成
* 任务状态 0 待开始 1、进行中 2、已完成 3、未完成
*/
private Integer taskStatus;
......
......@@ -17,15 +17,16 @@ public enum ActivityClockTaskStatus {
/**
* 进行中
*/
STARTING(2, "进行中"),
STARTING(1, "进行中"),
/**
* 完成
* 完成
*/
UNCOMPLETED(3, "未完成"),
COMPLETED(2, "已完成"),
/**
* 完成
* 完成
*/
COMPLETED(1, "已完成"),
UNCOMPLETED(3, "未完成"),
;
private int type;
......
......@@ -46,7 +46,7 @@ public class TemporaryActivityTaskClockRes {
/**
* 任务状态
* 1、待开始 2、进行中 3、未完成 4、已完成
* 0、待开始 1、进行中 2、已完成 3、未完成
*/
private Integer taskStatus;
......@@ -60,5 +60,5 @@ public class TemporaryActivityTaskClockRes {
*/
private Date clockTime;
private List<String> clockPhtos;
private List<String> clockPhotos;
}
......@@ -53,7 +53,7 @@ public class TemporaryActivityTaskClockReq {
/**
* 任务状态
* 1、待开始 2、进行中 3、未完成 4、已完成
* 任务状态 0 待开始 1、进行中 2、已完成 3、未完成
*/
@Size(min = 1, max = 4, message = "任务状态只能是1、2、3、4")
private Integer taskStatus;
......
......@@ -2,6 +2,7 @@ package com.wangxiaolu.promotion.service.activity.temporary.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wangxiaolu.promotion.common.util.BeanUtils;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao;
......@@ -45,8 +46,22 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
return temporaryActivityTaskClockDao.selectList(wrapper);
}
/**
* 生成随机打卡任务
* @param dto
*/
@Override
public void generateRandomClockTask(TemporaryClockDto dto) {
// 查询是否已有数据
TemporaryActivityTaskWrapperDto wrapper = new TemporaryActivityTaskWrapperDto();
wrapper.setTemporaryId(dto.getTemporaryId())
.setTaskType(ActivityPhotoType.RANDOM_TASK.getType())
.setIsDelete(1);
TemporaryActivityTaskClockDO taskClockDO1 = temporaryActivityTaskClockDao.selectOne(wrapper);
if(ObjectUtil.isNotEmpty(taskClockDO1)){
return;
}
// 随机生成 下午5:30~7:30 之间的Date
LocalTime randomTime = LocalTime.of(17, 30, 0).plusMinutes(ThreadLocalRandom.current().nextInt(0, 120));
......@@ -60,7 +75,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
.planId(dto.getPlanId())
.clockTime(null)
.taskType(ActivityPhotoType.RANDOM_TASK.getType())
.taskStatus(ActivityClockTaskStatus.STARTING.getType())
.taskStatus(ActivityClockTaskStatus.TO_BE_START.getType())
.requiredlockTime(randomDate)
.activityPatternId(dto.getActivityPatternId())
.activityPattern(dto.getActivityPattern())
......@@ -70,8 +85,21 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
}
/**
* 生成POS数据上传任务
* @param dto
*/
@Override
public void generatePosUploadTask(TemporaryClockDto dto) {
// 查询是否已有数据
TemporaryActivityTaskWrapperDto wrapper = new TemporaryActivityTaskWrapperDto();
wrapper.setTemporaryId(dto.getTemporaryId())
.setTaskType(ActivityPhotoType.POS_PHOTO.getType())
.setIsDelete(1);
TemporaryActivityTaskClockDO taskClockDO1 = temporaryActivityTaskClockDao.selectOne(wrapper);
if(ObjectUtil.isNotEmpty(taskClockDO1)){
return;
}
// 生成
TemporaryActivityTaskClockDO taskClockDO = TemporaryActivityTaskClockDO.builder()
.temporaryId(dto.getTemporaryId())
......@@ -81,7 +109,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
.planId(dto.getPlanId())
.clockTime(null)
.taskType(ActivityPhotoType.POS_PHOTO.getType())
.taskStatus(ActivityClockTaskStatus.TO_BE_START.getType())
.taskStatus(ActivityClockTaskStatus.STARTING.getType())
.requiredlockTime(DateUtil.endOfDay(new Date()))
.activityPatternId(dto.getActivityPatternId())
.activityPattern(dto.getActivityPattern())
......@@ -103,6 +131,10 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
return list;
}
/**
* 打卡打卡
* @param clockVo
*/
@Override
public void clock(TemporaryActivityTaskClockReq clockVo) {
TemporaryActivityTaskClockDO taskClockDO = temporaryActivityTaskClockDao.selectById(clockVo.getId());
......@@ -121,7 +153,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
BeanUtils.copyProperties(clockVo, taskClockDO);
// 更新 任务状态为未完成,打卡时间为当前时间
taskClockDO.setTaskStatus(ActivityClockTaskStatus.UNCOMPLETED.getType());
taskClockDO.setTaskStatus(ActivityClockTaskStatus.COMPLETED.getType());
taskClockDO.setClockTime(new Date());
temporaryActivityTaskClockDao.update(taskClockDO);
......@@ -157,7 +189,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
.filter(photoDto -> photoDto.getType().equals(taskType))
.map(TemporaryActivityPhotoDto::getPhotoUrl)
.collect(Collectors.toList());
res.setClockPhtos(photoUrls);
res.setClockPhotos(photoUrls);
return res;
}
return res;
......
......@@ -77,11 +77,6 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
}
handleMessageType(messageBean);
}
// 业务消息处理(示例:广播消息)
// broadcast("用户[" + userId + "]:" + payload);
}
private void handleMessageType(MessageBean messageBean) {
switch (messageBean.getMsgType()) {
......
......@@ -29,6 +29,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.wangxiaolu.promotion.common.constant.WechatConstants.RANDOM_TASK_URL;
import static com.wangxiaolu.promotion.common.constant.WechatConstants.SUBSCRIBE_MESSAGE_TEMPLATE_ID;
/**
......@@ -52,7 +53,7 @@ public class ActivityStautsHandler {
@XxlJob("sendSubscribeMessage")
public void sendSubscribeMessage() {
DateTime dateTime = DateUtil.offsetMinute(new Date(), 10);
DateTime latestDateTime = DateUtil.offsetMinute(new Date(), 15);
// 1. 查询订单信息和用户订阅记录
List<TemporaryActivityTaskClockDO> list = taskClockService.list(new LambdaQueryWrapper<TemporaryActivityTaskClockDO>()
.eq(TemporaryActivityTaskClockDO::getTaskStatus, ActivityClockTaskStatus.TO_BE_START.getType())
......@@ -62,26 +63,24 @@ public class ActivityStautsHandler {
);
for (TemporaryActivityTaskClockDO taskClockDO : list) {
if (taskClockDO.getSubscribeStatus() != 1) {
// if (taskClockDO.getSubscribeStatus() != 1) {
// 发送websocket 通知用户
try {
// taskClockSocketHandler.handleMessage(taskClockDO.getTemporaryId().toString(), "订阅通知发送成功");
// taskClockSocketHandler.sendToUser(taskClockDO.getTemporaryId().toString(), "订阅通知发送成功");
MessageBean msgBean = new MessageBean();
msgBean.setMsgType(TemporaryActivityTaskClockMessageType.RANDOM_TASK_START.getType());
msgBean.setData(taskClockDO);
taskClockSocketHandler.sendToUser(taskClockDO.getTemporaryId().toString(), msgBean);
log.info("用户{}未订阅活动打卡通知", taskClockDO.getTemporaryName());
// taskClockDO.setIsSendSubscribe(1);
taskClockDO.setIsSendSubscribe(1);
taskClockDO.setSubscribeTime(new Date());
// taskClockService.updateById(taskClockDO);
} catch (IOException e) {
// 添加异常处理
log.error("发送Websocket订阅通知失败", e);
throw new RuntimeException(e);
}
continue;
}
// continue;
// }
// 2. 构建模板数据(根据小程序订阅模板的字段定义)
Map<String, String> data = new HashMap<>();
......@@ -103,16 +102,16 @@ public class ActivityStautsHandler {
openid,
templateId,
// 跳转页面
"/pages/order/detail?",
RANDOM_TASK_URL,
data
);
if (success) {
log.info("促销员{}订阅通知发送成功", taskClockDO.getTemporaryName());
taskClockDO.setSubscribeTime(new Date());
}
// 修改状态 待开始 -> 进行中
taskClockDO.setTaskStatus(ActivityClockTaskStatus.STARTING.getType());
taskClockService.updateById(taskClockDO);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论