Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
64b94a9b
提交
64b94a9b
authored
11月 13, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(activity): 修改图片保存bug
上级
c4867d59
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
156 行增加
和
19 行删除
+156
-19
TemporaryActivityPhotoDao.java
...motion/domain/activity/dao/TemporaryActivityPhotoDao.java
+1
-1
TemporaryActivityTaskClockDao.java
...on/domain/activity/dao/TemporaryActivityTaskClockDao.java
+3
-0
TemporaryActivityPhotoDaoImpl.java
...main/activity/dao/impl/TemporaryActivityPhotoDaoImpl.java
+3
-2
TemporaryActivityTaskClockDaoImpl.java
.../activity/dao/impl/TemporaryActivityTaskClockDaoImpl.java
+9
-0
TemporaryTaskClockDto.java
...on/pojo/activity/temporary/dto/TemporaryTaskClockDto.java
+107
-0
EmployeeCoreTemClockServiceImpl.java
...activity/manage/impl/EmployeeCoreTemClockServiceImpl.java
+10
-0
TemporaryActivityCoreServiceImpl.java
...vity/temporary/impl/TemporaryActivityCoreServiceImpl.java
+3
-3
TemporaryActivityTaskClockServiceImpl.java
...temporary/impl/TemporaryActivityTaskClockServiceImpl.java
+20
-13
没有找到文件。
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/TemporaryActivityPhotoDao.java
浏览文件 @
64b94a9b
...
...
@@ -17,7 +17,7 @@ public interface TemporaryActivityPhotoDao {
* 保存活动上报照片list
*/
void
saveReportedList
(
Integer
temporaryId
,
Long
reportedId
,
Integer
photoType
,
List
<
String
>
urls
,
List
<
String
>
changeUrls
);
void
saveReportedList
(
Integer
temporaryId
,
Long
reportedId
,
Integer
photoType
,
List
<
String
>
urls
);
void
saveReportedList
(
Long
clockId
,
Integer
temporaryId
,
Long
reportedId
,
Integer
photoType
,
List
<
String
>
urls
);
/**
* 保存促销员上下班打卡图片
...
...
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/TemporaryActivityTaskClockDao.java
浏览文件 @
64b94a9b
...
...
@@ -2,6 +2,7 @@ package com.wangxiaolu.promotion.domain.activity.dao;
import
com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityTaskClockDO
;
import
com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryActivityTaskWrapperDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryTaskClockDto
;
import
java.util.List
;
...
...
@@ -15,4 +16,6 @@ public interface TemporaryActivityTaskClockDao {
void
update
(
TemporaryActivityTaskClockDO
taskClockDO
);
TemporaryActivityTaskClockDO
selectOne
(
TemporaryActivityTaskWrapperDto
wrapper
);
void
updateTaskClock
(
TemporaryTaskClockDto
updateTaskClockDto
);
}
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/impl/TemporaryActivityPhotoDaoImpl.java
浏览文件 @
64b94a9b
...
...
@@ -65,7 +65,7 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
}
@Override
public
void
saveReportedList
(
Integer
temporaryId
,
Long
reportedId
,
Integer
photoType
,
List
<
String
>
urls
)
{
public
void
saveReportedList
(
Long
clockId
,
Integer
temporaryId
,
Long
reportedId
,
Integer
photoType
,
List
<
String
>
urls
)
{
List
<
TemporaryActivityPhotoDO
>
dos
=
new
ArrayList
<>();
for
(
String
url
:
urls
)
{
String
[]
uArr
=
url
.
split
(
"/"
);
...
...
@@ -73,6 +73,7 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
TemporaryActivityPhotoDO
photoDo
=
new
TemporaryActivityPhotoDO
()
.
setTemporaryId
(
temporaryId
)
.
setReportedId
(
reportedId
)
.
setClockId
(
clockId
)
.
setType
(
photoType
)
.
setPhotoUrl
(
url
)
.
setPhotoFiledId
(
uId
);
...
...
@@ -138,7 +139,7 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
@Override
public
void
saveClockTaskPhoto
(
TemporaryActivityPhotoDto
dto
,
List
<
String
>
clockPhtos
)
{
// 新增数据
saveReportedList
(
dto
.
getTemporaryId
(),
dto
.
getReportedId
(),
dto
.
getType
(),
clockPhtos
);
saveReportedList
(
dto
.
get
ClockId
(),
dto
.
get
TemporaryId
(),
dto
.
getReportedId
(),
dto
.
getType
(),
clockPhtos
);
}
@Override
...
...
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/impl/TemporaryActivityTaskClockDaoImpl.java
浏览文件 @
64b94a9b
...
...
@@ -2,10 +2,12 @@ package com.wangxiaolu.promotion.domain.activity.dao.impl;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.wangxiaolu.promotion.common.util.BeanUtils
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityTaskClockDao
;
import
com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityTaskClockMapper
;
import
com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityTaskClockDO
;
import
com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryActivityTaskWrapperDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryTaskClockDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -59,4 +61,11 @@ public class TemporaryActivityTaskClockDaoImpl implements TemporaryActivityTaskC
return
temporaryActivityTaskClockDO
;
}
@Override
public
void
updateTaskClock
(
TemporaryTaskClockDto
updateTaskClockDto
)
{
TemporaryActivityTaskClockDO
updateTaskClockDo
=
BeanUtils
.
transitionDto
(
updateTaskClockDto
,
TemporaryActivityTaskClockDO
.
class
);
temporaryActivityTaskClockMapper
.
updateById
(
updateTaskClockDo
);
}
}
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/dto/TemporaryTaskClockDto.java
0 → 100644
浏览文件 @
64b94a9b
package
com
.
wangxiaolu
.
promotion
.
pojo
.
activity
.
temporary
.
dto
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.wangxiaolu.promotion.enums.activity.ClockType
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* @author : liqiulin
* @date : 2024-04-23 14
* @describe :促销员打卡数据DTO
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@Accessors
(
chain
=
true
)
public
class
TemporaryTaskClockDto
{
/**
* 主键id
*/
private
Long
id
;
private
Integer
temporaryId
;
/**
* 活动打卡id
*/
private
Long
clockId
;
/**
* temporary_info表name
*/
private
String
temporaryName
;
/**
* 关联活动上报id
*/
private
Long
reportedId
;
/**
* 任务类型 和图片的工业
* 10、随机任务 9、pos上传任务
*/
private
Integer
taskType
;
/**
* 任务状态 0 待开始 1、进行中 2、已完成 3、未完成
*/
private
Integer
taskStatus
;
/**
* activity_plan_info表id
*/
private
Long
planId
;
/**
* 打卡时间
*/
private
Date
clockTime
;
/**
* 要求打卡时间
*/
private
Date
requiredlockTime
;
/**
* 创建日期YYYY-MM-DD
*/
private
String
createDate
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
modifyTime
;
// 活动模式Id
private
Integer
activityPatternId
;
// 活动模式
private
String
activityPattern
;
/**
* 是否删除
* 0:否 未删除;1:已删除;
*/
private
Integer
isDelete
;
/**
* 订阅状态 0:未订阅;1:已订阅
*/
private
Integer
subscribeStatus
;
// 已发送订阅消息
private
Integer
isSendSubscribe
;
/**
* 订阅消息发送时间
*/
private
Date
subscribeTime
;
}
src/main/java/com/wangxiaolu/promotion/service/activity/manage/impl/EmployeeCoreTemClockServiceImpl.java
浏览文件 @
64b94a9b
package
com
.
wangxiaolu
.
promotion
.
service
.
activity
.
manage
.
impl
;
import
com.wangxiaolu.promotion.common.enums.FlagType
;
import
com.wangxiaolu.promotion.common.enums.StatusType
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityClockDao
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityReportedDao
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityTaskClockDao
;
import
com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryClockWrapper
;
import
com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryPhotoWrapper
;
import
com.wangxiaolu.promotion.exception.DataException
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryTaskClockDto
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.activity.manage.EmployeeCoreTemClockService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -33,6 +36,8 @@ public class EmployeeCoreTemClockServiceImpl implements EmployeeCoreTemClockServ
TemporaryActivityReportedDao
temporaryActivityReportedDao
;
@Autowired
private
TemporaryActivityPhotoDao
temporaryActivityPhotoDao
;
@Autowired
TemporaryActivityTaskClockDao
taskClockDao
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -85,6 +90,11 @@ public class EmployeeCoreTemClockServiceImpl implements EmployeeCoreTemClockServ
tpw
.
setTemporaryId
(
clockDto
.
getTemporaryId
())
.
setClockId
(
clockDto
.
getId
());
temporaryActivityPhotoDao
.
updateStatus
(
tpw
,
StatusType
.
INVALID
.
getType
());
TemporaryTaskClockDto
updateTaskClockDto
=
new
TemporaryTaskClockDto
();
updateTaskClockDto
.
setId
(
clockDto
.
getId
())
.
setIsDelete
(
FlagType
.
YES
.
getType
());
taskClockDao
.
updateTaskClock
(
updateTaskClockDto
);
return
clockDto
.
getPlanId
();
}
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityCoreServiceImpl.java
浏览文件 @
64b94a9b
...
...
@@ -248,21 +248,21 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
if
(
CollectionUtils
.
isEmpty
(
temActDto
.
getTgscPhotoUrls
()))
{
tempActivityPhotoDao
.
deleteList
(
reportedId
,
ActivityPhotoType
.
TGSC
.
getType
());
}
else
{
tempActivityPhotoDao
.
saveReportedList
(
temporaryId
,
reportedId
,
ActivityPhotoType
.
TGSC
.
getType
(),
temActDto
.
getTgscPhotoUrls
());
tempActivityPhotoDao
.
saveReportedList
(
null
,
temporaryId
,
reportedId
,
ActivityPhotoType
.
TGSC
.
getType
(),
temActDto
.
getTgscPhotoUrls
());
}
// 推广互动照片
if
(
CollectionUtils
.
isEmpty
(
temActDto
.
getTghdPhotoUrls
()))
{
tempActivityPhotoDao
.
deleteList
(
reportedId
,
ActivityPhotoType
.
TGHD
.
getType
());
}
else
{
tempActivityPhotoDao
.
saveReportedList
(
temporaryId
,
reportedId
,
ActivityPhotoType
.
TGHD
.
getType
(),
temActDto
.
getTghdPhotoUrls
());
tempActivityPhotoDao
.
saveReportedList
(
tem
ActDto
.
getClockDto
().
getId
(),
tem
poraryId
,
reportedId
,
ActivityPhotoType
.
TGHD
.
getType
(),
temActDto
.
getTghdPhotoUrls
());
}
// 推广成交照片
if
(
CollectionUtils
.
isEmpty
(
temActDto
.
getTgcjPhotoUrls
()))
{
tempActivityPhotoDao
.
deleteList
(
reportedId
,
ActivityPhotoType
.
TGCJ
.
getType
());
}
else
{
tempActivityPhotoDao
.
saveReportedList
(
temporaryId
,
reportedId
,
ActivityPhotoType
.
TGCJ
.
getType
(),
temActDto
.
getTgcjPhotoUrls
());
tempActivityPhotoDao
.
saveReportedList
(
tem
ActDto
.
getClockDto
().
getId
(),
tem
poraryId
,
reportedId
,
ActivityPhotoType
.
TGCJ
.
getType
(),
temActDto
.
getTgcjPhotoUrls
());
}
// POS机页面凭证
// if (!CollectionUtils.isEmpty(temActDto.getPsvPhotoUrls())) {
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityTaskClockServiceImpl.java
浏览文件 @
64b94a9b
...
...
@@ -4,6 +4,7 @@ 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.enums.FlagType
;
import
com.wangxiaolu.promotion.common.util.BeanUtils
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao
;
import
com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityTaskClockMapper
;
...
...
@@ -21,6 +22,7 @@ import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityTask
import
com.wangxiaolu.promotion.utils.AuthUtils
;
import
com.wangxiaolu.promotion.utils.DateUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.time.LocalTime
;
...
...
@@ -41,7 +43,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
public
List
<
TemporaryActivityTaskClockDO
>
listByTemporaryId
(
Integer
temporaryId
)
{
TemporaryActivityTaskWrapperDto
wrapper
=
new
TemporaryActivityTaskWrapperDto
()
.
setTemporaryId
(
temporaryId
)
.
setIsDelete
(
1
);
.
setIsDelete
(
FlagType
.
NO
.
getType
()
);
// 过滤未删除数据
return
temporaryActivityTaskClockDao
.
selectList
(
wrapper
);
}
...
...
@@ -56,7 +58,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
TemporaryActivityTaskWrapperDto
wrapper
=
new
TemporaryActivityTaskWrapperDto
();
wrapper
.
setTemporaryId
(
dto
.
getTemporaryId
())
.
setTaskType
(
ActivityPhotoType
.
RANDOM_TASK
.
getType
())
.
setIsDelete
(
1
);
.
setIsDelete
(
FlagType
.
NO
.
getType
()
);
TemporaryActivityTaskClockDO
taskClockDO1
=
temporaryActivityTaskClockDao
.
selectOne
(
wrapper
);
if
(
ObjectUtil
.
isNotEmpty
(
taskClockDO1
)){
return
;
...
...
@@ -95,7 +97,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
TemporaryActivityTaskWrapperDto
wrapper
=
new
TemporaryActivityTaskWrapperDto
();
wrapper
.
setTemporaryId
(
dto
.
getTemporaryId
())
.
setTaskType
(
ActivityPhotoType
.
POS_PHOTO
.
getType
())
.
setIsDelete
(
1
);
.
setIsDelete
(
FlagType
.
NO
.
getType
()
);
TemporaryActivityTaskClockDO
taskClockDO1
=
temporaryActivityTaskClockDao
.
selectOne
(
wrapper
);
if
(
ObjectUtil
.
isNotEmpty
(
taskClockDO1
)){
return
;
...
...
@@ -126,23 +128,23 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
TemporaryActivityTaskWrapperDto
wrapper
=
new
TemporaryActivityTaskWrapperDto
()
.
setUserId
(
Long
.
parseLong
(
userId
))
.
setTemporaryId
(
Integer
.
parseInt
(
userId
))
.
setIsDelete
(
1
);
.
setIsDelete
(
FlagType
.
NO
.
getType
()
);
List
<
TemporaryActivityTaskClockDO
>
list
=
temporaryActivityTaskClockDao
.
selectList
(
wrapper
);
return
list
;
}
/**
* 打卡打卡
* @param clock
Req
* @param clock
Vo
*/
@Override
public
void
clock
(
TemporaryActivityTaskClockReq
clock
Req
)
{
TemporaryActivityTaskClockDO
taskClockDO
=
temporaryActivityTaskClockDao
.
selectById
(
clock
Req
.
getId
());
public
void
clock
(
TemporaryActivityTaskClockReq
clock
Vo
)
{
TemporaryActivityTaskClockDO
taskClockDO
=
temporaryActivityTaskClockDao
.
selectById
(
clock
Vo
.
getId
());
if
(
taskClockDO
==
null
)
{
throw
new
IllegalArgumentException
(
"打卡任务不存在"
);
}
// 随机打卡
if
(
ActivityPhotoType
.
RANDOM_TASK
.
getType
()
==
clock
Req
.
getTaskType
())
{
if
(
ActivityPhotoType
.
RANDOM_TASK
.
getType
()
==
clock
Vo
.
getTaskType
())
{
// 检查当前时间是否在打卡要求的时间内
Date
requiredLockTime
=
taskClockDO
.
getRequiredlockTime
();
DateTime
latestRequiredLockTime
=
DateUtil
.
offsetMinute
(
requiredLockTime
,
15
);
...
...
@@ -150,7 +152,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
throw
new
IllegalArgumentException
(
"当前时间不在打卡要求的时间内"
);
}
}
BeanUtils
.
copyProperties
(
clock
Req
,
taskClockDO
);
BeanUtils
.
copyProperties
(
clock
Vo
,
taskClockDO
);
// 更新 任务状态为未完成,打卡时间为当前时间
taskClockDO
.
setTaskStatus
(
ActivityClockTaskStatus
.
COMPLETED
.
getType
());
...
...
@@ -162,9 +164,14 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
dto
.
setClockId
(
taskClockDO
.
getId
())
.
setTemporaryId
(
taskClockDO
.
getTemporaryId
())
.
setReportedId
(
taskClockDO
.
getReportedId
())
.
setType
(
clockReq
.
getTaskType
());
// 保存打卡图片
photoDao
.
saveClockTaskPhoto
(
dto
,
clockReq
.
getClockPhotos
());
.
setType
(
clockVo
.
getTaskType
());
if
(
CollectionUtils
.
isEmpty
(
clockVo
.
getClockPhotos
())){
photoDao
.
deleteList
(
taskClockDO
.
getReportedId
(),
clockVo
.
getTaskType
());
}
else
{
// 保存打卡图片
photoDao
.
saveClockTaskPhoto
(
dto
,
clockVo
.
getClockPhotos
());
}
}
@Override
...
...
@@ -176,7 +183,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
.
setUserId
(
Long
.
parseLong
(
userId
))
.
setTaskType
(
taskType
)
.
setTemporaryId
(
Integer
.
parseInt
(
userId
))
.
setIsDelete
(
1
);
.
setIsDelete
(
FlagType
.
NO
.
getType
()
);
TemporaryActivityTaskClockDO
taskClockDO
=
temporaryActivityTaskClockDao
.
selectOne
(
wrapper
);
TemporaryActivityTaskClockRes
res
=
new
TemporaryActivityTaskClockRes
();
if
(
taskClockDO
!=
null
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论