Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
eaf1d2ce
提交
eaf1d2ce
authored
6月 07, 2024
作者:
000516
提交者:
Coding
6月 07, 2024
浏览文件
操作
浏览文件
下载
差异文件
POS机页面凭证图片上传
POS机页面凭证图片上传
上级
7dc53aff
8940eaf2
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
158 行增加
和
107 行删除
+158
-107
TemporaryActivityClockCoreController.java
...ivity/temporary/TemporaryActivityClockCoreController.java
+131
-0
TemporaryActivityCoreController.java
...r/activity/temporary/TemporaryActivityCoreController.java
+1
-105
ActivityPhotoType.java
...angxiaolu/promotion/enums/activity/ActivityPhotoType.java
+4
-0
TemporaryActivityReportedDto.java
.../activity/temporary/dto/TemporaryActivityReportedDto.java
+6
-0
TemporaryActivityDataVo.java
...n/pojo/activity/temporary/vo/TemporaryActivityDataVo.java
+8
-0
TemporaryActivityCoreServiceImpl.java
...vity/temporary/impl/TemporaryActivityCoreServiceImpl.java
+7
-2
TemporaryActivityQueryServiceImpl.java
...ity/temporary/impl/TemporaryActivityQueryServiceImpl.java
+1
-0
没有找到文件。
src/main/java/com/wangxiaolu/promotion/controller/activity/temporary/TemporaryActivityClockCoreController.java
0 → 100644
浏览文件 @
eaf1d2ce
package
com
.
wangxiaolu
.
promotion
.
controller
.
activity
.
temporary
;
import
com.wangxiaolu.promotion.enums.activity.ClockType
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryClockVo
;
import
com.wangxiaolu.promotion.result.basedata.R
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Date
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-04-17 19
* @describe : 促销员活动上报、修改
*/
@Slf4j
@RestController
@RequestMapping
(
"/activity/temporary/core"
)
public
class
TemporaryActivityClockCoreController
{
@Autowired
private
TemporaryActivityCoreService
tempActivityCoreService
;
/**
* 促销员当日打卡信息保存
*/
@PostMapping
(
"/today/clock"
)
public
R
clockInTodayActivity
(
@RequestBody
@Validated
TemporaryClockVo
clockVo
)
{
clockVo
.
validate
();
Integer
clockType
=
clockVo
.
getClockType
();
boolean
isClockIn
=
ClockType
.
TEMPORARY_CLOCK_IN
.
equals
(
clockType
);
// 上班卡必需有店铺id
if
(
isClockIn
&&
StringUtils
.
isBlank
(
clockVo
.
getStoreQcId
()))
{
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
// 非上班卡必需有打卡记录ID
if
(!
isClockIn
&&
Objects
.
isNull
((
clockVo
.
getId
())))
{
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
tempActivityCoreService
.
clockStoreCalDistance
(
clockVo
.
getStoreQcId
(),
clockVo
.
getId
(),
clockVo
.
getClockCoordinates
());
/**
* todo redis打卡-限制重复提交
* todo 后续添加,基于redis
*/
Date
clockTime
=
new
Date
();
TemporaryClockDto
dto
=
new
TemporaryClockDto
(
clockVo
.
getClockType
(),
clockVo
.
getId
(),
clockVo
.
getTemporaryId
(),
clockVo
.
getTemporaryName
());
// 上班卡、午休下班卡、午休上班卡、下班卡
if
(
isClockIn
)
{
builderClockInData
(
clockVo
,
dto
,
clockTime
);
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_OUT
.
equals
(
clockType
))
{
builderNoonClockOutData
(
clockVo
,
dto
,
clockTime
);
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_IN
.
equals
(
clockType
))
{
builderNoonClockInData
(
clockVo
,
dto
,
clockTime
);
}
else
if
(
ClockType
.
TEMPORARY_CLOCK_OUT
.
equals
(
clockType
))
{
builderClockOutData
(
clockVo
,
dto
,
clockTime
);
}
tempActivityCoreService
.
clockInTodayActivity
(
dto
,
clockType
);
return
R
.
success
();
}
// 上班打卡
private
void
builderClockInData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setTemporaryId
(
clockVo
.
getTemporaryId
())
.
setTemporaryName
(
clockVo
.
getTemporaryName
())
.
setStoreQcId
(
clockVo
.
getStoreQcId
())
.
setStoreName
(
clockVo
.
getStoreName
())
.
setClockInAddress
(
clockVo
.
getClockAddress
())
.
setClockInCoordinates
(
clockVo
.
getClockCoordinates
())
.
setClockInPhoto
(
clockVo
.
getClockPhoto
())
.
setClockInTime
(
dateTime
);
}
// 午休下班卡
private
void
builderNoonClockOutData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setId
(
clockVo
.
getId
())
.
setNoonClockOutAddress
(
clockVo
.
getClockAddress
())
.
setNoonClockOutCoordinates
(
clockVo
.
getClockCoordinates
())
.
setNoonClockOutPhoto
(
clockVo
.
getClockPhoto
())
.
setNoonClockOutTime
(
dateTime
);
}
// 午休上班卡
private
void
builderNoonClockInData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setId
(
clockVo
.
getId
())
.
setNoonClockInAddress
(
clockVo
.
getClockAddress
())
.
setNoonClockInCoordinates
(
clockVo
.
getClockCoordinates
())
.
setNoonClockInPhoto
(
clockVo
.
getClockPhoto
())
.
setNoonClockInTime
(
dateTime
);
}
// 下班卡
private
void
builderClockOutData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setId
(
clockVo
.
getId
())
.
setClockOutAddress
(
clockVo
.
getClockAddress
())
.
setClockOutCoordinates
(
clockVo
.
getClockCoordinates
())
.
setClockOutPhoto
(
clockVo
.
getClockPhoto
())
.
setClockOutTime
(
dateTime
);
}
}
src/main/java/com/wangxiaolu/promotion/controller/activity/temporary/TemporaryActivityCoreController.java
浏览文件 @
eaf1d2ce
package
com
.
wangxiaolu
.
promotion
.
controller
.
activity
.
temporary
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.result.basedata.R
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.enums.activity.ClockType
;
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.vo.TemporaryActivityDataVo
;
import
com.wangxiaolu.promotion.
pojo.activity.temporary.vo.TemporaryClockVo
;
import
com.wangxiaolu.promotion.
result.basedata.R
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotNull
;
import
java.util.Date
;
import
java.util.Objects
;
/**
...
...
@@ -33,48 +26,6 @@ public class TemporaryActivityCoreController {
@Autowired
private
TemporaryActivityCoreService
tempActivityCoreService
;
/**
* 促销员当日打卡信息保存
*/
@PostMapping
(
"/today/clock"
)
public
R
clockInTodayActivity
(
@RequestBody
@Validated
TemporaryClockVo
clockVo
)
{
clockVo
.
validate
();
Integer
clockType
=
clockVo
.
getClockType
();
boolean
isClockIn
=
ClockType
.
TEMPORARY_CLOCK_IN
.
equals
(
clockType
);
// 上班卡必需有店铺id
if
(
isClockIn
&&
StringUtils
.
isBlank
(
clockVo
.
getStoreQcId
()))
{
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
// 非上班卡必需有打卡记录ID
if
(!
isClockIn
&&
Objects
.
isNull
((
clockVo
.
getId
())))
{
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
tempActivityCoreService
.
clockStoreCalDistance
(
clockVo
.
getStoreQcId
(),
clockVo
.
getId
(),
clockVo
.
getClockCoordinates
());
/**
* todo redis打卡-限制重复提交
* todo 后续添加,基于redis
*/
Date
clockTime
=
new
Date
();
TemporaryClockDto
dto
=
new
TemporaryClockDto
(
clockVo
.
getClockType
(),
clockVo
.
getId
(),
clockVo
.
getTemporaryId
(),
clockVo
.
getTemporaryName
());
// 上班卡、午休下班卡、午休上班卡、下班卡
if
(
isClockIn
)
{
builderClockInData
(
clockVo
,
dto
,
clockTime
);
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_OUT
.
equals
(
clockType
))
{
builderNoonClockOutData
(
clockVo
,
dto
,
clockTime
);
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_IN
.
equals
(
clockType
))
{
builderNoonClockInData
(
clockVo
,
dto
,
clockTime
);
}
else
if
(
ClockType
.
TEMPORARY_CLOCK_OUT
.
equals
(
clockType
))
{
builderClockOutData
(
clockVo
,
dto
,
clockTime
);
}
tempActivityCoreService
.
clockInTodayActivity
(
dto
,
clockType
);
return
R
.
success
();
}
/**
* 促销员[今日活动]数据保存
* 返回活动生成id
...
...
@@ -103,59 +54,4 @@ public class TemporaryActivityCoreController {
return
R
.
success
();
}
// 上班打卡
private
void
builderClockInData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setTemporaryId
(
clockVo
.
getTemporaryId
())
.
setTemporaryName
(
clockVo
.
getTemporaryName
())
.
setStoreQcId
(
clockVo
.
getStoreQcId
())
.
setStoreName
(
clockVo
.
getStoreName
())
.
setClockInAddress
(
clockVo
.
getClockAddress
())
.
setClockInCoordinates
(
clockVo
.
getClockCoordinates
())
.
setClockInPhoto
(
clockVo
.
getClockPhoto
())
.
setClockInTime
(
dateTime
);
}
// 午休下班卡
private
void
builderNoonClockOutData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setId
(
clockVo
.
getId
())
.
setNoonClockOutAddress
(
clockVo
.
getClockAddress
())
.
setNoonClockOutCoordinates
(
clockVo
.
getClockCoordinates
())
.
setNoonClockOutPhoto
(
clockVo
.
getClockPhoto
())
.
setNoonClockOutTime
(
dateTime
);
}
// 午休上班卡
private
void
builderNoonClockInData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setId
(
clockVo
.
getId
())
.
setNoonClockInAddress
(
clockVo
.
getClockAddress
())
.
setNoonClockInCoordinates
(
clockVo
.
getClockCoordinates
())
.
setNoonClockInPhoto
(
clockVo
.
getClockPhoto
())
.
setNoonClockInTime
(
dateTime
);
}
// 下班卡
private
void
builderClockOutData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto
.
setId
(
clockVo
.
getId
())
.
setClockOutAddress
(
clockVo
.
getClockAddress
())
.
setClockOutCoordinates
(
clockVo
.
getClockCoordinates
())
.
setClockOutPhoto
(
clockVo
.
getClockPhoto
())
.
setClockOutTime
(
dateTime
);
}
}
src/main/java/com/wangxiaolu/promotion/enums/activity/ActivityPhotoType.java
浏览文件 @
eaf1d2ce
...
...
@@ -39,6 +39,10 @@ public enum ActivityPhotoType {
* 下班打卡图片
*/
CLOCK_OUT
(
7
),
/**
* 当日销量POS机页面凭证
*/
POS_SELL_VOUCHER
(
7
),
;
private
int
type
;
...
...
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/dto/TemporaryActivityReportedDto.java
浏览文件 @
eaf1d2ce
...
...
@@ -96,6 +96,12 @@ public class TemporaryActivityReportedDto {
List
<
String
>
tgcjPhotoUrls
;
List
<
String
>
tgcjChangePhotoUrls
;
/**
* POS机页面凭证
*/
private
List
<
String
>
psvPhotoUrls
;
private
List
<
String
>
psvChangePhotoUrls
;
private
Integer
sellXiangA
;
private
Integer
sellXiangB
;
private
Integer
sellXiangC
;
...
...
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/vo/TemporaryActivityDataVo.java
浏览文件 @
eaf1d2ce
...
...
@@ -61,6 +61,14 @@ public class TemporaryActivityDataVo {
private
List
<
String
>
tgcjPhotoUrls
;
private
List
<
String
>
tgcjChangePhotoUrls
;
/**
* POS机页面凭证
* POS_SELL_VOUCHER
* psv
*/
private
List
<
String
>
psvPhotoUrls
;
private
List
<
String
>
psvChangePhotoUrls
;
private
Integer
ax
;
private
Integer
sellXiangA
;
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityCoreServiceImpl.java
浏览文件 @
eaf1d2ce
...
...
@@ -71,7 +71,7 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
long
activityDataReportedSave
(
TemporaryActivityReportedDto
temActDto
)
{
// 判断是否已存在
上报
数据
// 判断是否已存在
保存
数据
TemporaryActivityReportedDto
haveDate
=
temporaryActivityReportedDao
.
findOneByCurrentDate
(
temActDto
.
getTemporaryId
());
if
(
Objects
.
nonNull
(
haveDate
))
{
throw
new
FlowException
(
RCode
.
DATA_HAVE_ERROR
,
null
);
...
...
@@ -152,6 +152,8 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
throw
new
FlowException
(
RCode
.
STATUS_UPDATE_ERROR
,
null
);
}
// todo 判断数据是否符合提交审批规则
// 查询促销员负责人,将人员补充到审批中
WxTemporaryInfoDto
wxTemporaryInfoDto
=
temporaryInfoDao
.
selectOneById
(
reportedDto
.
getTemporaryId
());
TemporaryActivityReportedDto
updateDto
=
new
TemporaryActivityReportedDto
()
...
...
@@ -225,8 +227,11 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
if
(!
CollectionUtils
.
isEmpty
(
temActDto
.
getTgcjPhotoUrls
()))
{
tempActivityPhotoDao
.
saveReportedList
(
temporaryId
,
reportedId
,
ActivityPhotoType
.
TGCJ
.
getType
(),
temActDto
.
getTgcjPhotoUrls
(),
temActDto
.
getTgcjChangePhotoUrls
());
}
// POS机页面凭证
if
(!
CollectionUtils
.
isEmpty
(
temActDto
.
getPsvPhotoUrls
()))
{
tempActivityPhotoDao
.
saveReportedList
(
temporaryId
,
reportedId
,
ActivityPhotoType
.
POS_SELL_VOUCHER
.
getType
(),
temActDto
.
getPsvPhotoUrls
(),
temActDto
.
getPsvChangePhotoUrls
());
}
log
.
info
(
"促销员今日活动上报-图片保存成功,关联活动上报数据id[{}],数据信息:{}"
,
temActDto
.
getId
(),
temActDto
);
}
/**
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityQueryServiceImpl.java
浏览文件 @
eaf1d2ce
...
...
@@ -65,6 +65,7 @@ public class TemporaryActivityQueryServiceImpl implements TemporaryActivityQuery
dto
.
setTgscPhotoUrls
(
reportedGroup
.
get
(
ActivityPhotoType
.
TGSC
.
getType
()));
dto
.
setTghdPhotoUrls
(
reportedGroup
.
get
(
ActivityPhotoType
.
TGHD
.
getType
()));
dto
.
setTgcjPhotoUrls
(
reportedGroup
.
get
(
ActivityPhotoType
.
TGCJ
.
getType
()));
dto
.
setPsvPhotoUrls
(
reportedGroup
.
get
(
ActivityPhotoType
.
POS_SELL_VOUCHER
.
getType
()));
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论