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

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

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