Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
356df147
提交
356df147
authored
11月 13, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(promotion): 更新活动任务状态枚举及逻辑处理
上级
c1a33cf4
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
55 行增加
和
28 行删除
+55
-28
TemporaryActivityTaskClockDO.java
.../activity/mapper/entity/TemporaryActivityTaskClockDO.java
+1
-1
ActivityClockTaskStatus.java
...olu/promotion/enums/activity/ActivityClockTaskStatus.java
+6
-5
TemporaryActivityTaskClockRes.java
...activity/temporary/res/TemporaryActivityTaskClockRes.java
+2
-2
TemporaryActivityTaskClockReq.java
.../activity/temporary/vo/TemporaryActivityTaskClockReq.java
+1
-1
TemporaryActivityTaskClockServiceImpl.java
...temporary/impl/TemporaryActivityTaskClockServiceImpl.java
+36
-4
TemporaryActivityTaskClockSocketHandler.java
...on/websocket/TemporaryActivityTaskClockSocketHandler.java
+0
-5
ActivityStautsHandler.java
...angxiaolu/promotion/xxljobtask/ActivityStautsHandler.java
+9
-10
没有找到文件。
src/main/java/com/wangxiaolu/promotion/domain/activity/mapper/entity/TemporaryActivityTaskClockDO.java
浏览文件 @
356df147
...
...
@@ -48,7 +48,7 @@ public class TemporaryActivityTaskClockDO implements Serializable {
*/
private
Integer
taskType
;
/**
* 任务状态 1、进行中 2、已完成 3、未完成
* 任务状态
0 待开始
1、进行中 2、已完成 3、未完成
*/
private
Integer
taskStatus
;
...
...
src/main/java/com/wangxiaolu/promotion/enums/activity/ActivityClockTaskStatus.java
浏览文件 @
356df147
...
...
@@ -17,15 +17,16 @@ public enum ActivityClockTaskStatus {
/**
* 进行中
*/
STARTING
(
2
,
"进行中"
),
STARTING
(
1
,
"进行中"
),
/**
*
未
完成
*
已
完成
*/
UNCOMPLETED
(
3
,
"未
完成"
),
COMPLETED
(
2
,
"已
完成"
),
/**
*
已
完成
*
未
完成
*/
COMPLETED
(
1
,
"已
完成"
),
UNCOMPLETED
(
3
,
"未
完成"
),
;
private
int
type
;
...
...
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/res/TemporaryActivityTaskClockRes.java
浏览文件 @
356df147
...
...
@@ -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
>
clockPh
o
tos
;
}
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/vo/TemporaryActivityTaskClockReq.java
浏览文件 @
356df147
...
...
@@ -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
;
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityTaskClockServiceImpl.java
浏览文件 @
356df147
...
...
@@ -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
.
UN
COMPLETED
.
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
.
setClockPh
o
tos
(
photoUrls
);
return
res
;
}
return
res
;
...
...
src/main/java/com/wangxiaolu/promotion/websocket/TemporaryActivityTaskClockSocketHandler.java
浏览文件 @
356df147
...
...
@@ -77,11 +77,6 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
}
handleMessageType
(
messageBean
);
}
// 业务消息处理(示例:广播消息)
// broadcast("用户[" + userId + "]:" + payload);
}
private
void
handleMessageType
(
MessageBean
messageBean
)
{
switch
(
messageBean
.
getMsgType
())
{
...
...
src/main/java/com/wangxiaolu/promotion/xxljobtask/ActivityStautsHandler.java
浏览文件 @
356df147
...
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论