Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
d78ea0f2
提交
d78ea0f2
authored
7月 02, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、打卡选择活动模式;2、活动记录、活动历史记录展示活动模式;
上级
1a86c50b
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
237 行增加
和
123 行删除
+237
-123
TemporaryActivityClockCoreController.java
...ivity/temporary/TemporaryActivityClockCoreController.java
+8
-5
TemporaryActivityCoreController.java
...r/activity/temporary/TemporaryActivityCoreController.java
+32
-3
WeChatUserQueryController.java
...romotion/controller/wechat/WeChatUserQueryController.java
+3
-0
TemporaryActivityMarketCellDaoImpl.java
...activity/dao/impl/TemporaryActivityMarketCellDaoImpl.java
+1
-1
TemporaryActivityClockDO.java
...main/activity/mapper/entity/TemporaryActivityClockDO.java
+7
-0
TemporaryActivityReportedDO.java
...n/activity/mapper/entity/TemporaryActivityReportedDO.java
+10
-0
TemporaryActivityReportedDto.java
.../activity/temporary/dto/TemporaryActivityReportedDto.java
+10
-0
TemporaryClockDto.java
...motion/pojo/activity/temporary/dto/TemporaryClockDto.java
+6
-0
TemporaryClockVo.java
...romotion/pojo/activity/temporary/vo/TemporaryClockVo.java
+7
-3
TemporaryActivityClockCoreService.java
...activity/temporary/TemporaryActivityClockCoreService.java
+24
-0
TemporaryActivityCoreService.java
...vice/activity/temporary/TemporaryActivityCoreService.java
+0
-14
TemporaryActivityClockCoreServiceImpl.java
...temporary/impl/TemporaryActivityClockCoreServiceImpl.java
+115
-0
TemporaryActivityCoreServiceImpl.java
...vity/temporary/impl/TemporaryActivityCoreServiceImpl.java
+12
-96
TemporaryActivityCoreServiceImplTest.java
.../temporary/impl/TemporaryActivityCoreServiceImplTest.java
+2
-1
没有找到文件。
src/main/java/com/wangxiaolu/promotion/controller/activity/temporary/TemporaryActivityClockCoreController.java
浏览文件 @
d78ea0f2
...
...
@@ -9,6 +9,7 @@ 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.TemporaryActivityClockCoreService
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -23,7 +24,7 @@ import java.util.Objects;
/**
* @author : liqiulin
* @date : 2024-04-17 19
* @describe : 促销员
活动上报、修改
* @describe : 促销员
打卡信息保存
*/
@Slf4j
@RestController
...
...
@@ -31,7 +32,7 @@ import java.util.Objects;
public
class
TemporaryActivityClockCoreController
{
@Autowired
private
TemporaryActivityC
oreService
tempActivity
CoreService
;
private
TemporaryActivityC
lockCoreService
tempActivityClock
CoreService
;
@Autowired
RedisCache
redisCache
;
...
...
@@ -53,7 +54,7 @@ public class TemporaryActivityClockCoreController {
}
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
// tempActivityCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates());
// tempActivityC
lockC
oreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates());
// 限制重复提交
repetitiveClock
(
clockVo
);
...
...
@@ -70,7 +71,7 @@ public class TemporaryActivityClockCoreController {
}
else
if
(
ClockType
.
TEMPORARY_CLOCK_OUT
.
equals
(
clockType
))
{
builderClockOutData
(
clockVo
,
dto
,
clockTime
);
}
tempActivityCoreService
.
clockInTodayActivity
(
dto
,
clockType
);
tempActivityC
lockC
oreService
.
clockInTodayActivity
(
dto
,
clockType
);
return
R
.
success
();
}
...
...
@@ -100,7 +101,9 @@ public class TemporaryActivityClockCoreController {
.
setClockInAddress
(
clockVo
.
getClockAddress
())
.
setClockInCoordinates
(
clockVo
.
getClockCoordinates
())
.
setClockInPhoto
(
clockVo
.
getClockPhoto
())
.
setClockInTime
(
dateTime
);
.
setClockInTime
(
dateTime
)
.
setActivityPatternId
(
clockVo
.
getActivityPatternId
())
.
setActivityPattern
(
clockVo
.
getActivityPattern
());
}
// 午休下班卡
...
...
src/main/java/com/wangxiaolu/promotion/controller/activity/temporary/TemporaryActivityCoreController.java
浏览文件 @
d78ea0f2
package
com
.
wangxiaolu
.
promotion
.
controller
.
activity
.
temporary
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.promotion.common.redis.RedisKeys
;
import
com.wangxiaolu.promotion.common.redis.service.RedisCache
;
import
com.wangxiaolu.promotion.enums.activity.TemActApproveStatus
;
import
com.wangxiaolu.promotion.exception.ParamException
;
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.TemporaryActivityMarketCellVo
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.result.basedata.R
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityClockQueryService
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -21,25 +30,45 @@ import java.util.Objects;
@RestController
@RequestMapping
(
"/activity/temporary/core"
)
public
class
TemporaryActivityCoreController
{
@Autowired
private
RedisCache
redisCache
;
@Autowired
private
TemporaryActivityCoreService
tempActivityCoreService
;
@Autowired
private
TemporaryActivityClockQueryService
tempActivityClockQueryService
;
/**
* 促销员[今日活动]数据保存
* 返回活动生成id
*/
@PostMapping
(
"/today/reported"
)
public
R
todayActivityDataReported
(
@RequestBody
TemporaryActivityDataVo
activityVo
)
{
public
R
todayActivityDataReported
(
@Request
Header
(
"Authorization"
)
String
authorization
,
@Request
Body
TemporaryActivityDataVo
activityVo
)
{
TemporaryActivityReportedDto
temActDto
=
new
TemporaryActivityReportedDto
();
BeanUtils
.
copyProperties
(
activityVo
,
temActDto
);
temActDto
.
setId
(
activityVo
.
getActivityReportedId
());
// 有ID则修改,无ID则新建
/**
* 已有id,修改任务
*/
if
(
Objects
.
nonNull
(
activityVo
.
getActivityReportedId
()))
{
tempActivityCoreService
.
activityDataReportedUpdate
(
temActDto
);
return
R
.
success
(
activityVo
.
getActivityReportedId
());
}
/**
* 新增任务
*/
JSONObject
userJson
=
redisCache
.
getToJson
(
RedisKeys
.
UserKeys
.
TEMPORARY_TOKEN
.
getKey
()
+
authorization
);
if
(
Objects
.
isNull
(
userJson
))
{
throw
new
ParamException
(
RCode
.
NOT_LOGIN_ERROR
,
null
);
}
TemporaryClockDto
clockDto
=
tempActivityClockQueryService
.
findTodayTemporaryClockByTemId
(
temActDto
.
getTemporaryId
());
temActDto
.
setApproveStatus
(
TemActApproveStatus
.
SUBMITTED
);
temActDto
.
setApproverId
(
userJson
.
getString
(
"chargerQcId"
));
temActDto
.
setApproveName
(
userJson
.
getString
(
"chargerName"
));
temActDto
.
setActivityPatternId
(
clockDto
.
getActivityPatternId
());
temActDto
.
setActivityPattern
(
clockDto
.
getActivityPattern
());
return
R
.
success
(
tempActivityCoreService
.
activityDataReportedSave
(
temActDto
));
}
...
...
src/main/java/com/wangxiaolu/promotion/controller/wechat/WeChatUserQueryController.java
浏览文件 @
d78ea0f2
...
...
@@ -55,6 +55,9 @@ public class WeChatUserQueryController {
public
R
getTemporaryInfoByOpenIdAndPhone
(
@RequestHeader
(
"Authorization"
)
String
authorization
,
@RequestBody
WxTemporaryLoginVo
wxTemporaryLoginVo
)
{
// 在缓存中查询
JSONObject
userJson
=
redisCache
.
getToJson
(
RedisKeys
.
UserKeys
.
TEMPORARY_TOKEN
.
getKey
()
+
authorization
);
if
(
Objects
.
isNull
(
userJson
))
{
throw
new
ParamException
(
RCode
.
NOT_LOGIN_ERROR
,
null
);
}
return
R
.
success
(
userJson
);
// phontAndOpenIdVerify(wxTemporaryLoginVo);
...
...
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/impl/TemporaryActivityMarketCellDaoImpl.java
浏览文件 @
d78ea0f2
...
...
@@ -40,7 +40,7 @@ public class TemporaryActivityMarketCellDaoImpl implements TemporaryActivityMark
JSONObject
jo
=
(
JSONObject
)
jri
;
TemporaryActivityMarketCellDO
marketCellDO
=
JSONObject
.
parseObject
(
jo
.
toString
(),
TemporaryActivityMarketCellDO
.
class
);
marketCellDO
.
setActivityReportedId
(
activityReportedId
);
marketCellDO
.
setClassName
(
jo
.
getString
(
"prdName"
));
marketCellDO
.
setClassName
(
jo
.
getString
(
"prd
Class
Name"
));
marketCellDO
.
setCreateDate
(
DateUtil
.
today
());
dos
.
add
(
marketCellDO
);
});
...
...
src/main/java/com/wangxiaolu/promotion/domain/activity/mapper/entity/TemporaryActivityClockDO.java
浏览文件 @
d78ea0f2
...
...
@@ -142,6 +142,12 @@ public class TemporaryActivityClockDO implements Serializable {
@TableField
(
exist
=
false
)
String
chargerName
;
// 活动模式Id
Integer
activityPatternId
;
// 活动模式
String
activityPattern
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
src/main/java/com/wangxiaolu/promotion/domain/activity/mapper/entity/TemporaryActivityReportedDO.java
浏览文件 @
d78ea0f2
...
...
@@ -59,6 +59,16 @@ public class TemporaryActivityReportedDO implements Serializable {
*/
private
String
city
;
/**
* 活动模式Id
*/
Integer
activityPatternId
;
/**
* 活动模式
*/
String
activityPattern
;
/**
* 关联—审核人员qc_id
*/
...
...
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/dto/TemporaryActivityReportedDto.java
浏览文件 @
d78ea0f2
...
...
@@ -60,6 +60,16 @@ public class TemporaryActivityReportedDto {
*/
private
String
city
;
/**
* 活动模式Id
*/
Integer
activityPatternId
;
/**
* 活动模式
*/
String
activityPattern
;
/**
* 关联—审核人员qc_id
*
...
...
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/dto/TemporaryClockDto.java
浏览文件 @
d78ea0f2
...
...
@@ -105,6 +105,12 @@ public class TemporaryClockDto {
*/
String
chargerName
;
// 活动模式Id
Integer
activityPatternId
;
// 活动模式
String
activityPattern
;
public
TemporaryClockDto
(
Integer
clockType
,
Long
id
,
Integer
temporaryId
,
String
temporaryName
,
String
clockProvince
,
String
clockCity
)
{
if
(!
ClockType
.
TEMPORARY_CLOCK_IN
.
equals
(
clockType
))
{
this
.
id
=
id
;
...
...
src/main/java/com/wangxiaolu/promotion/pojo/activity/temporary/vo/TemporaryClockVo.java
浏览文件 @
d78ea0f2
...
...
@@ -62,9 +62,11 @@ public class TemporaryClockVo {
// 打卡城市
String
clockCity
;
// 活动模式Id
Integer
activityPatternId
;
// 活动模式
String
activityPattern
;
public
void
validate
(){
...
...
@@ -77,7 +79,9 @@ public class TemporaryClockVo {
if
(
StringUtils
.
isBlank
(
clockAddress
)
||
StringUtils
.
isBlank
(
clockPhoto
)){
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
if
(
StringUtils
.
isBlank
(
this
.
activityPattern
)){
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
}
}
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/TemporaryActivityClockCoreService.java
0 → 100644
浏览文件 @
d78ea0f2
package
com
.
wangxiaolu
.
promotion
.
service
.
activity
.
temporary
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto
;
/**
* @author : liqiulin
* @date : 2024-07-02 10
* @describe :
*/
public
interface
TemporaryActivityClockCoreService
{
/**
* 促销员当日打卡信息保存
*/
void
clockInTodayActivity
(
TemporaryClockDto
dto
,
Integer
clockType
);
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
void
clockStoreCalDistance
(
String
storeQcId
,
Long
id
,
String
clockCoordinates
);
}
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/TemporaryActivityCoreService.java
浏览文件 @
d78ea0f2
...
...
@@ -21,25 +21,11 @@ public interface TemporaryActivityCoreService {
*/
void
activityDataReportedUpdate
(
TemporaryActivityReportedDto
temActDto
);
/**
* 促销员当日打卡信息保存
*/
void
clockInTodayActivity
(
TemporaryClockDto
dto
,
Integer
clockType
);
/**
* 活动上报数据修改审批状态
*/
void
activityReportedSubmit
(
Long
id
);
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
void
clockStoreCalDistance
(
String
storeQcId
,
Long
id
,
String
clockCoordinates
);
/**
* 保存销售上报-出售单元 - 缓存
*/
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityClockCoreServiceImpl.java
0 → 100644
浏览文件 @
d78ea0f2
package
com
.
wangxiaolu
.
promotion
.
service
.
activity
.
temporary
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityClockDao
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityLogDao
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao
;
import
com.wangxiaolu.promotion.enums.activity.ActivityPhotoType
;
import
com.wangxiaolu.promotion.enums.activity.ClockType
;
import
com.wangxiaolu.promotion.enums.activity.LogType
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityClockCoreService
;
import
com.wangxiaolu.promotion.utils.OkHttp
;
import
com.wangxiaolu.promotion.utils.QinCeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-07-02 10
* @describe :
*/
@Service
@Slf4j
public
class
TemporaryActivityClockCoreServiceImpl
implements
TemporaryActivityClockCoreService
{
@Autowired
QinCeUtils
qinCeUtils
;
@Autowired
private
TemporaryActivityClockDao
temporaryActivityClockDao
;
@Autowired
private
TemporaryActivityPhotoDao
tempActivityPhotoDao
;
@Autowired
private
TemporaryActivityLogDao
tempActivityLogDao
;
/**
* 促销员当日打卡信息保存
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
clockInTodayActivity
(
TemporaryClockDto
dto
,
Integer
clockType
)
{
log
.
info
(
"促销员当日打卡[type-{}]信息保存:{}"
,
clockType
,
dto
.
toString
());
if
(
Objects
.
isNull
(
dto
.
getId
()))
{
temporaryActivityClockDao
.
save
(
dto
);
}
else
{
temporaryActivityClockDao
.
updateById
(
dto
);
}
// 根据ID保存图片
saveClockPhoto
(
dto
,
clockType
);
// 日志保存
tempActivityLogDao
.
save
(
dto
.
getTemporaryId
(),
dto
.
getTemporaryName
(),
LogType
.
t_1
,
dto
.
getId
(),
dto
);
}
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
* 经度,范围为 -180~180,负数表示西经;纬度,范围为 -90~90,负数表示南纬
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
@Override
public
void
clockStoreCalDistance
(
String
storeQcId
,
Long
id
,
String
clockCoordinates
)
{
// if (Objects.nonNull(id)) {
// TemporaryClockDto clockDto = temporaryActivityClockDao.selectOne(new TemporaryClockWrapper().setId(id));
// storeQcId = clockDto.getStoreQcId();
// }
// clockStoreCalDistanceByStoreQcId(storeQcId, clockCoordinates);
}
private
void
clockStoreCalDistanceByStoreQcId
(
String
storeQcId
,
String
clockCoordinates
)
{
// 查询组织架构参数、创建url
String
[]
clockCoordinateArr
=
clockCoordinates
.
split
(
","
);
List
<
Map
>
paramList
=
qinCeUtils
.
queryCalDistanceParam
(
storeQcId
,
clockCoordinateArr
[
0
],
clockCoordinateArr
[
1
]);
String
url
=
qinCeUtils
.
builderUrlList
(
QinCeUtils
.
CAL_DISTANCE
,
paramList
);
// 发起请求、接收结果
JSONObject
resultJson
=
OkHttp
.
postQC
(
url
,
paramList
);
String
rData
=
resultJson
.
getString
(
"response_data"
);
if
(
StringUtils
.
isBlank
(
rData
)
||
!
rData
.
contains
(
storeQcId
))
{
throw
new
ParamException
(
RCode
.
PRO_NOT_QC_STORE_CLOCK_DISTANCE
,
null
);
}
Long
distance
=
JSONObject
.
parseArray
(
rData
).
getJSONObject
(
0
).
getLong
(
"distance"
);
log
.
info
(
"[打卡] 判断打卡距离,勤策-id:{},打卡距离:{},打卡经纬度:{}"
,
storeQcId
,
distance
,
clockCoordinates
);
// 判断打卡距离
if
(
distance
>
100L
)
{
throw
new
ParamException
(
RCode
.
PRO_FAR_QC_STORE_CLOCK_DISTANCE
,
null
);
}
}
/**
* 促销员上班打卡图片保存
*/
private
void
saveClockPhoto
(
TemporaryClockDto
dto
,
Integer
clockType
)
{
// 上班卡、午休下班卡、午休上班卡、下班卡
if
(
ClockType
.
TEMPORARY_CLOCK_IN
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
CLOCK_IN
.
getType
(),
dto
.
getClockInPhoto
());
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_OUT
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
NOON_CLOCK_OUT
.
getType
(),
dto
.
getNoonClockOutPhoto
());
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_IN
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
NOON_CLOCK_IN
.
getType
(),
dto
.
getNoonClockInPhoto
());
}
else
if
(
ClockType
.
TEMPORARY_CLOCK_OUT
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
CLOCK_OUT
.
getType
(),
dto
.
getClockOutPhoto
());
}
}
}
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityCoreServiceImpl.java
浏览文件 @
d78ea0f2
...
...
@@ -7,26 +7,19 @@ import com.fasterxml.uuid.Generators;
import
com.wangxiaolu.promotion.common.redis.RedisKeys
;
import
com.wangxiaolu.promotion.common.redis.service.RedisCache
;
import
com.wangxiaolu.promotion.domain.activity.dao.*
;
import
com.wangxiaolu.promotion.domain.user.dao.QinCeClienteleStoreDao
;
import
com.wangxiaolu.promotion.domain.user.dao.TemporaryInfoDao
;
import
com.wangxiaolu.promotion.domain.user.wrapperQo.StoreWrapper
;
import
com.wangxiaolu.promotion.enums.activity.ActivityPhotoType
;
import
com.wangxiaolu.promotion.enums.activity.ClockType
;
import
com.wangxiaolu.promotion.enums.activity.LogType
;
import
com.wangxiaolu.promotion.enums.activity.TemActApproveStatus
;
import
com.wangxiaolu.promotion.exception.DataException
;
import
com.wangxiaolu.promotion.exception.FlowException
;
import
com.wangxiaolu.promotion.exception.ParamException
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.PromotionStoreDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityMarketCellDto
;
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.TemporaryActivityMarketCellVo
;
import
com.wangxiaolu.promotion.pojo.user.dto.QinCeClienteleStoreDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.WxTemporaryInfoDto
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
com.wangxiaolu.promotion.utils.OkHttp
;
import
com.wangxiaolu.promotion.utils.QinCeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -35,7 +28,9 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -52,19 +47,12 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
RedisCache
redisCache
;
@Autowired
private
TemporaryActivityReportedDao
temporaryActivityReportedDao
;
@Autowired
private
TemporaryActivityClockDao
temporaryActivityClockDao
;
@Autowired
private
PromotionStoreDao
promotionStoreDao
;
@Autowired
private
TemporaryActivityPhotoDao
tempActivityPhotoDao
;
@Autowired
private
TemporaryActivityLogDao
tempActivityLogDao
;
@Autowired
private
TemporaryInfoDao
temporaryInfoDao
;
@Autowired
...
...
@@ -85,13 +73,9 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
throw
new
FlowException
(
RCode
.
DATA_HAVE_ERROR
,
null
);
}
// 查询上报人负责人;初始化任务状态:已保存
WxTemporaryInfoDto
wxTemporaryInfoDto
=
temporaryInfoDao
.
selectOneById
(
temActDto
.
getTemporaryId
());
temActDto
.
setApproveStatus
(
TemActApproveStatus
.
SUBMITTED
);
temActDto
.
setApproverId
(
wxTemporaryInfoDto
.
getChargerQcId
());
temActDto
.
setApproveName
(
wxTemporaryInfoDto
.
getChargerName
());
// 根据storeQcId查询店铺信息,进行店铺信息补充
/**
* 根据storeId查询店铺信息,进行店铺信息补充
*/
PromotionStoreDto
promotionStoreDto
=
promotionStoreDao
.
selectOneById
(
temActDto
.
getStoreId
());
temActDto
.
setStoreName
(
promotionStoreDto
.
getStoreName
())
.
setStoreAddr
(
promotionStoreDto
.
getAddress
())
...
...
@@ -104,11 +88,15 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
// 保存图片
saveActivityPhoto
(
temActDto
);
// 售卖单元新增保存
/**
* 售卖单元新增保存
*/
String
key
=
temMarketCellRedisKey
(
temActDto
.
getTemporaryId
());
temporaryActivityMarketCellDao
.
saveList
(
reportedId
,
redisCache
.
getToJsonArray
(
key
));
// 日志保存
/**
* 日志保存
*/
tempActivityLogDao
.
save
(
temActDto
.
getTemporaryId
(),
temActDto
.
getTemporaryName
(),
LogType
.
t_2
,
temActDto
.
getId
(),
temActDto
);
redisCache
.
removeKey
(
key
);
...
...
@@ -135,24 +123,6 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
tempActivityLogDao
.
save
(
temActDto
.
getTemporaryId
(),
temActDto
.
getTemporaryName
(),
LogType
.
t_2
,
temActDto
.
getId
(),
temActDto
);
}
/**
* 促销员当日打卡信息保存
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
clockInTodayActivity
(
TemporaryClockDto
dto
,
Integer
clockType
)
{
log
.
info
(
"促销员当日打卡[type-{}]信息保存:{}"
,
clockType
,
dto
.
toString
());
if
(
Objects
.
isNull
(
dto
.
getId
()))
{
temporaryActivityClockDao
.
save
(
dto
);
}
else
{
temporaryActivityClockDao
.
updateById
(
dto
);
}
// 根据ID保存图片
saveClockPhoto
(
dto
,
clockType
);
// 日志保存
tempActivityLogDao
.
save
(
dto
.
getTemporaryId
(),
dto
.
getTemporaryName
(),
LogType
.
t_1
,
dto
.
getId
(),
dto
);
}
/**
* 修改审批状态
*
...
...
@@ -277,44 +247,6 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
}
}
/**
* 根据店铺或打卡记录中的店铺,判断打卡距离
* 经度,范围为 -180~180,负数表示西经;纬度,范围为 -90~90,负数表示南纬
*
* @param storeQcId 店铺-勤策-id
* @param id 打卡记录id
* @param clockCoordinates 打卡经纬度
*/
@Override
public
void
clockStoreCalDistance
(
String
storeQcId
,
Long
id
,
String
clockCoordinates
)
{
// if (Objects.nonNull(id)) {
// TemporaryClockDto clockDto = temporaryActivityClockDao.selectOne(new TemporaryClockWrapper().setId(id));
// storeQcId = clockDto.getStoreQcId();
// }
// clockStoreCalDistanceByStoreQcId(storeQcId, clockCoordinates);
}
private
void
clockStoreCalDistanceByStoreQcId
(
String
storeQcId
,
String
clockCoordinates
)
{
// 查询组织架构参数、创建url
String
[]
clockCoordinateArr
=
clockCoordinates
.
split
(
","
);
List
<
Map
>
paramList
=
qinCeUtils
.
queryCalDistanceParam
(
storeQcId
,
clockCoordinateArr
[
0
],
clockCoordinateArr
[
1
]);
String
url
=
qinCeUtils
.
builderUrlList
(
QinCeUtils
.
CAL_DISTANCE
,
paramList
);
// 发起请求、接收结果
JSONObject
resultJson
=
OkHttp
.
postQC
(
url
,
paramList
);
String
rData
=
resultJson
.
getString
(
"response_data"
);
if
(
StringUtils
.
isBlank
(
rData
)
||
!
rData
.
contains
(
storeQcId
))
{
throw
new
ParamException
(
RCode
.
PRO_NOT_QC_STORE_CLOCK_DISTANCE
,
null
);
}
Long
distance
=
JSONObject
.
parseArray
(
rData
).
getJSONObject
(
0
).
getLong
(
"distance"
);
log
.
info
(
"[打卡] 判断打卡距离,勤策-id:{},打卡距离:{},打卡经纬度:{}"
,
storeQcId
,
distance
,
clockCoordinates
);
// todo 判断打卡距离
// if (distance > 100L) {
// throw new ParamException(RCode.PRO_FAR_QC_STORE_CLOCK_DISTANCE, null);
// }
}
private
String
temMarketCellRedisKey
(
Integer
temporaryId
)
{
return
RedisKeys
.
TemporaryKeys
.
TEMPORARY_ACTIVITY_MARKET_CELL
.
getKey
()
+
temporaryId
+
"_"
+
DateUtil
.
today
();
}
...
...
@@ -347,20 +279,4 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
}
log
.
info
(
"促销员今日活动上报-图片保存成功,关联活动上报数据id[{}],数据信息:{}"
,
temActDto
.
getId
(),
temActDto
);
}
/**
* 促销员上班打卡图片保存
*/
private
void
saveClockPhoto
(
TemporaryClockDto
dto
,
Integer
clockType
)
{
// 上班卡、午休下班卡、午休上班卡、下班卡
if
(
ClockType
.
TEMPORARY_CLOCK_IN
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
CLOCK_IN
.
getType
(),
dto
.
getClockInPhoto
());
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_OUT
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
NOON_CLOCK_OUT
.
getType
(),
dto
.
getNoonClockOutPhoto
());
}
else
if
(
ClockType
.
TEMPORARY_NOON_CLOCK_IN
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
NOON_CLOCK_IN
.
getType
(),
dto
.
getNoonClockInPhoto
());
}
else
if
(
ClockType
.
TEMPORARY_CLOCK_OUT
.
equals
(
clockType
))
{
tempActivityPhotoDao
.
saveClockPhoto
(
dto
.
getTemporaryId
(),
dto
.
getId
(),
ActivityPhotoType
.
CLOCK_OUT
.
getType
(),
dto
.
getClockOutPhoto
());
}
}
}
src/test/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityCoreServiceImplTest.java
浏览文件 @
d78ea0f2
...
...
@@ -24,6 +24,6 @@ class TemporaryActivityCoreServiceImplTest {
@Test
void
clockStoreCalDistance
()
{
temporaryActivityCoreService
.
clockStoreCalDistance
(
"7552853602498153022"
,
null
,
"116.608403,40.113349"
);
//
temporaryActivityCoreService.clockStoreCalDistance("7552853602498153022",null,"116.608403,40.113349");
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论