Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
promotion-service
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
promotion-service
Commits
3fb1c1ba
提交
3fb1c1ba
authored
4月 23, 2024
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
促销员打卡数据保存:打卡类型:1、上班卡;2、午休下班卡;3、午休上班卡;4、下班卡
上级
48a823a5
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
687 行增加
和
12 行删除
+687
-12
TemporaryActivityCoreController.java
...r/activity/temporary/TemporaryActivityCoreController.java
+99
-0
TemporaryActivityClockDao.java
...motion/domain/activity/dao/TemporaryActivityClockDao.java
+22
-0
TemporaryActivityClockDaoImpl.java
...main/activity/dao/impl/TemporaryActivityClockDaoImpl.java
+39
-0
TemporaryActivityClockMapper.java
.../domain/activity/mapper/TemporaryActivityClockMapper.java
+22
-0
TemporaryActivityClockDO.java
...main/activity/mapper/entity/TemporaryActivityClockDO.java
+162
-0
QinCeClienteleStoreDaoImpl.java
...tion/domain/user/dao/impl/QinCeClienteleStoreDaoImpl.java
+11
-10
StoreWrapper.java
...gxiaolu/promotion/domain/user/wrapperQo/StoreWrapper.java
+2
-0
ClockType.java
...va/com/wangxiaolu/promotion/enums/activity/ClockType.java
+30
-0
TemporaryClockDto.java
...wangxiaolu/promotion/pojo/user/dto/TemporaryClockDto.java
+100
-0
ClienteleStoreQueryVo.java
...gxiaolu/promotion/pojo/user/vo/ClienteleStoreQueryVo.java
+2
-0
TemporaryClockVo.java
...m/wangxiaolu/promotion/pojo/user/vo/TemporaryClockVo.java
+62
-0
RCode.java
.../java/com/wangxiaolu/promotion/result/basedata/RCode.java
+3
-0
TemporaryActivityCoreService.java
...vice/activity/temporary/TemporaryActivityCoreService.java
+5
-1
TemporaryActivityCoreServiceImpl.java
...vity/temporary/impl/TemporaryActivityCoreServiceImpl.java
+19
-1
DateUtils.java
src/main/java/com/wangxiaolu/promotion/utils/DateUtils.java
+32
-0
TemporaryActivityClockMapper.xml
src/main/resources/mapper/TemporaryActivityClockMapper.xml
+50
-0
DateUtilsTest.java
...st/java/com/wangxiaolu/promotion/utils/DateUtilsTest.java
+27
-0
没有找到文件。
src/main/java/com/wangxiaolu/promotion/controller/activity/temporary/TemporaryActivityCoreController.java
浏览文件 @
3fb1c1ba
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.TemporaryActivityReportedDto
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityDataVo
;
import
com.wangxiaolu.promotion.pojo.user.dto.TemporaryClockDto
;
import
com.wangxiaolu.promotion.pojo.user.vo.TemporaryClockVo
;
import
com.wangxiaolu.promotion.result.basedata.RCode
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
com.wangxiaolu.promotion.utils.DateUtils
;
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
;
...
...
@@ -12,6 +19,9 @@ 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
...
...
@@ -25,6 +35,95 @@ public class TemporaryActivityCoreController {
@Autowired
private
TemporaryActivityCoreService
tempActivityCoreService
;
/**
* 促销员当日打卡信息保存
*/
@PostMapping
(
"/today/clock"
)
public
void
clockInTodayActivity
(
@RequestBody
@Validated
TemporaryClockVo
clockVo
)
{
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
.
getTemporaryClockId
())))
{
throw
new
ParamException
(
RCode
.
CLOCK_DETAIL_ERROR
,
null
);
}
Date
clockTime
=
new
Date
();
TemporaryClockDto
dto
=
new
TemporaryClockDto
(
clockVo
.
getClockType
(),
clockVo
.
getTemporaryClockId
(),
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
);
}
// 上班打卡
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
())
.
setClockInPhotoFieldId
(
clockVo
.
getClockPhotoFieldId
())
.
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
.
setTemporaryClockId
(
clockVo
.
getTemporaryClockId
())
.
setNoonClockOutAddress
(
clockVo
.
getClockAddress
())
.
setNoonClockOutCoordinates
(
clockVo
.
getClockCoordinates
())
.
setNoonClockOutPhoto
(
clockVo
.
getClockPhoto
())
.
setNoonClockOutPhotoFieldId
(
clockVo
.
getClockPhotoFieldId
())
.
setNoonClockOutTime
(
dateTime
);
}
// 午休上班卡
private
void
builderNoonClockInData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
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
.
setTemporaryClockId
(
clockVo
.
getTemporaryClockId
())
.
setNoonClockInAddress
(
clockVo
.
getClockAddress
())
.
setNoonClockInCoordinates
(
clockVo
.
getClockCoordinates
())
.
setNoonClockInPhoto
(
clockVo
.
getClockPhoto
())
.
setNoonClockInPhotoFieldId
(
clockVo
.
getClockPhotoFieldId
())
.
setNoonClockInTime
(
dateTime
);
}
// 下班卡
private
void
builderClockOutData
(
TemporaryClockVo
clockVo
,
TemporaryClockDto
clockDto
,
Date
dateTime
)
{
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
.
setTemporaryClockId
(
clockVo
.
getTemporaryClockId
())
.
setClockOutAddress
(
clockVo
.
getClockAddress
())
.
setClockOutCoordinates
(
clockVo
.
getClockCoordinates
())
.
setClockOutPhoto
(
clockVo
.
getClockPhoto
())
.
setClockOutPhotoFieldId
(
clockVo
.
getClockPhotoFieldId
())
.
setClockOutTime
(
dateTime
);
}
/**
* 促销员今日活动上报
* 返回活动生成id
...
...
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/TemporaryActivityClockDao.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
domain
.
activity
.
dao
;
import
com.wangxiaolu.promotion.pojo.user.dto.TemporaryClockDto
;
/**
* @author : liqiulin
* @date : 2024-04-23 17
* @describe :
*/
public
interface
TemporaryActivityClockDao
{
/**
* 保存打卡信息
* @param dto 信息
*/
void
save
(
TemporaryClockDto
dto
);
/**
* 修改打卡信息
* @param dto 信息
*/
void
updateById
(
TemporaryClockDto
dto
);
}
src/main/java/com/wangxiaolu/promotion/domain/activity/dao/impl/TemporaryActivityClockDaoImpl.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
domain
.
activity
.
dao
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityClockDao
;
import
com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityClockMapper
;
import
com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityClockDO
;
import
com.wangxiaolu.promotion.pojo.user.dto.TemporaryClockDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* @author : liqiulin
* @date : 2024-04-23 17
* @describe :
*/
@Service
@Slf4j
public
class
TemporaryActivityClockDaoImpl
implements
TemporaryActivityClockDao
{
@Autowired
TemporaryActivityClockMapper
temporaryActivityClockMapper
;
@Override
public
void
save
(
TemporaryClockDto
dto
)
{
TemporaryActivityClockDO
clockDo
=
new
TemporaryActivityClockDO
();
BeanUtils
.
copyProperties
(
dto
,
clockDo
);
clockDo
.
setCreateDate
(
DateUtil
.
today
());
temporaryActivityClockMapper
.
insert
(
clockDo
);
}
@Override
public
void
updateById
(
TemporaryClockDto
dto
)
{
TemporaryActivityClockDO
clockDo
=
new
TemporaryActivityClockDO
();
BeanUtils
.
copyProperties
(
dto
,
clockDo
);
clockDo
.
setId
(
dto
.
getTemporaryClockId
());
temporaryActivityClockMapper
.
updateById
(
clockDo
);
}
}
src/main/java/com/wangxiaolu/promotion/domain/activity/mapper/TemporaryActivityClockMapper.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
domain
.
activity
.
mapper
;
import
com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityClockDO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.springframework.stereotype.Repository
;
/**
* @author a02200059
* @description 针对表【temporary_activity_clock】的数据库操作Mapper
* @createDate 2024-04-23 17:10:46
* @Entity com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityClockDO
*/
@Mapper
@Repository
public
interface
TemporaryActivityClockMapper
extends
BaseMapper
<
TemporaryActivityClockDO
>
{
}
src/main/java/com/wangxiaolu/promotion/domain/activity/mapper/entity/TemporaryActivityClockDO.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
domain
.
activity
.
mapper
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
*
* @TableName temporary_activity_clock
*/
@TableName
(
value
=
"temporary_activity_clock"
)
@Data
public
class
TemporaryActivityClockDO
implements
Serializable
{
/**
* 主键id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* temporary_info表id
*/
private
Integer
temporaryId
;
/**
* temporary_info表name
*/
private
String
temporaryName
;
/**
* qince_clientele_store表qc_id
*/
private
String
storeQcId
;
/**
* qince_clientele_store表store_name
*/
private
String
storeName
;
/**
* 上班打卡地址
*/
private
String
clockInAddress
;
/**
* 上班打卡经纬度
*/
private
String
clockInCoordinates
;
/**
* 上班打卡图片
*/
private
String
clockInPhoto
;
/**
* 上班打卡图片
*/
private
String
clockInPhotoFieldId
;
/**
* 上班打卡时间
*/
private
Date
clockInTime
;
/**
* 午休下班打卡地址
*/
private
String
noonClockOutAddress
;
/**
* 午休下班打卡经纬度
*/
private
String
noonClockOutCoordinates
;
/**
* 午休下班打卡图片
*/
private
String
noonClockOutPhoto
;
/**
* 午休下班打卡图片
*/
private
String
noonClockOutPhotoFieldId
;
/**
* 午休下班打卡时间
*/
private
Date
noonClockOutTime
;
/**
* 午休上班打卡地址
*/
private
String
noonClockInAddress
;
/**
* 午休上班打卡经纬度
*/
private
String
noonClockInCoordinates
;
/**
* 午休上班打卡图片
*/
private
String
noonClockInPhoto
;
/**
* 午休上班打卡图片
*/
private
String
noonClockInPhotoFieldId
;
/**
* 午休上班打卡时间
*/
private
Date
noonClockInTime
;
/**
* 下班打卡地址
*/
private
String
clockOutAddress
;
/**
* 下班打卡经纬度
*/
private
String
clockOutCoordinates
;
/**
* 下班打卡图片
*/
private
String
clockOutPhoto
;
/**
* 下班打卡图片
*/
private
String
clockOutPhotoFieldId
;
/**
* 下班打卡时间
*/
private
Date
clockOutTime
;
/**
* 创建日期YYYY-MM-DD
*/
private
String
createDate
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
modifyTime
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
src/main/java/com/wangxiaolu/promotion/domain/user/dao/impl/QinCeClienteleStoreDaoImpl.java
浏览文件 @
3fb1c1ba
...
...
@@ -9,13 +9,13 @@ import com.wangxiaolu.promotion.domain.user.mapper.entity.QinCeClienteleStoreDO;
import
com.wangxiaolu.promotion.domain.user.wrapperQo.StoreWrapper
;
import
com.wangxiaolu.promotion.pojo.user.dto.QinCeClienteleStoreDto
;
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.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -75,19 +75,20 @@ public class QinCeClienteleStoreDaoImpl implements QinCeClienteleStoreDao {
private
LambdaQueryWrapper
<
QinCeClienteleStoreDO
>
builderQueryWrapper
(
StoreWrapper
storeWrapper
){
LambdaQueryWrapper
<
QinCeClienteleStoreDO
>
qw
=
new
LambdaQueryWrapper
<>();
// 默认查询有效数据 >>> 门店删除状态。0:删除,1:正常:store_status = 1
qw
.
eq
(
QinCeClienteleStoreDO:
:
getStoreStatus
,
storeWrapper
.
getStoreStatus
());
// 默认查询有效数据 >>> 门店审批状态。1:待审批,2:审批打回,3:审批通过:store_approval_status = 3
qw
.
eq
(
QinCeClienteleStoreDO:
:
getStoreApprovalStatus
,
storeWrapper
.
getStoreApprovalStatus
());
// 按qcId查询
if
(
StringUtils
.
isNotBlank
(
storeWrapper
.
getQcId
())){
qw
.
eq
(
QinCeClienteleStoreDO:
:
getQcId
,
storeWrapper
.
getQcId
());
return
qw
;
}
// 按门店名称模糊查询
if
(
Objects
.
nonNull
(
storeWrapper
.
getStoreNameVague
())){
if
(
StringUtils
.
isNotBlank
(
storeWrapper
.
getStoreNameVague
())){
qw
.
like
(
QinCeClienteleStoreDO:
:
getStoreName
,
storeWrapper
.
getStoreNameVague
());
}
/**
* 默认查询有效数据
* 门店删除状态。0:删除,1:正常:store_status = 1
* 门店审批状态。1:待审批,2:审批打回,3:审批通过:store_approval_status = 3
*/
qw
.
eq
(
QinCeClienteleStoreDO:
:
getStoreStatus
,
storeWrapper
.
getStoreStatus
());
qw
.
eq
(
QinCeClienteleStoreDO:
:
getStoreApprovalStatus
,
storeWrapper
.
getStoreApprovalStatus
());
return
qw
;
}
...
...
src/main/java/com/wangxiaolu/promotion/domain/user/wrapperQo/StoreWrapper.java
浏览文件 @
3fb1c1ba
...
...
@@ -15,6 +15,8 @@ import lombok.experimental.Accessors;
@Data
@Accessors
(
chain
=
true
)
public
class
StoreWrapper
{
private
String
qcId
;
/**
* 按名称模糊查询
*/
...
...
src/main/java/com/wangxiaolu/promotion/enums/activity/ClockType.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
enums
.
activity
;
/**
* @author : liqiulin
* @date : 2024-04-23 14
* @describe : 打卡类型
*/
public
interface
ClockType
{
/**
* 打卡类型:1、上班卡;2、午休下班卡;3、午休上班卡;4、下班卡
*/
Integer
TEMPORARY_CLOCK_IN
=
1
;
String
TEMPORARY_CLOCK_IN_BEGIN_TIME
=
"09:30:00"
;
String
TEMPORARY_CLOCK_IN_END_TIME
=
"10:00:00"
;
Integer
TEMPORARY_NOON_CLOCK_OUT
=
2
;
String
TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME
=
"13:00:00"
;
String
TEMPORARY_NOON_CLOCK_OUT_END_TIME
=
"13:30:00"
;
Integer
TEMPORARY_NOON_CLOCK_IN
=
3
;
String
TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME
=
"14:30:00"
;
String
TEMPORARY_NOON_CLOCK_IN_END_TIME
=
"15:00:00"
;
Integer
TEMPORARY_CLOCK_OUT
=
4
;
String
TEMPORARY_CLOCK_OUT_BEGIN_TIME
=
"19:00:00"
;
String
TEMPORARY_CLOCK_OUT_END_TIME
=
"23:59:00"
;
}
src/main/java/com/wangxiaolu/promotion/pojo/user/dto/TemporaryClockDto.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
pojo
.
user
.
dto
;
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
TemporaryClockDto
{
/**
* 打卡记录id
* 上班打卡无记录id
*/
Long
temporaryClockId
;
/**
* temporaryId
*/
Integer
temporaryId
;
String
temporaryName
;
// 店铺勤策id
String
storeQcId
;
// 店铺名称
String
storeName
;
// 上班打卡地址
String
clockInAddress
;
// 上班打卡经纬度
String
clockInCoordinates
;
// 上班打卡图片
String
clockInPhoto
;
String
clockInPhotoFieldId
;
// 上班打卡时间
Date
clockInTime
;
// 午休下班打卡地点
String
noonClockOutAddress
;
// 午休下班打卡经纬度
String
noonClockOutCoordinates
;
// 午休下班打卡图片
String
noonClockOutPhoto
;
String
noonClockOutPhotoFieldId
;
// 午休下班打卡时间
Date
noonClockOutTime
;
// 午休上班打卡地点
String
noonClockInAddress
;
// 午休上班打卡经纬度
String
noonClockInCoordinates
;
// 午休上班打卡图片
String
noonClockInPhoto
;
String
noonClockInPhotoFieldId
;
// 午休上班打卡时间
Date
noonClockInTime
;
// 下班打卡地点
String
clockOutAddress
;
// 下班打卡经纬度
String
clockOutCoordinates
;
// 下班打卡图片
String
clockOutPhoto
;
String
clockOutPhotoFieldId
;
// 下班打卡时间
Date
clockOutTime
;
public
TemporaryClockDto
(
Integer
clockType
,
Long
temporaryClockId
,
Integer
temporaryId
,
String
temporaryName
)
{
if
(!
ClockType
.
TEMPORARY_CLOCK_IN
.
equals
(
clockType
))
{
this
.
temporaryClockId
=
temporaryClockId
;
}
this
.
temporaryId
=
temporaryId
;
this
.
temporaryName
=
temporaryName
;
}
}
src/main/java/com/wangxiaolu/promotion/pojo/user/vo/ClienteleStoreQueryVo.java
浏览文件 @
3fb1c1ba
...
...
@@ -16,6 +16,8 @@ import lombok.experimental.Accessors;
@Accessors
(
chain
=
true
)
public
class
ClienteleStoreQueryVo
{
private
String
qcId
;
/**
* 按名称模糊查询
*/
...
...
src/main/java/com/wangxiaolu/promotion/pojo/user/vo/TemporaryClockVo.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
pojo
.
user
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
org.hibernate.validator.constraints.Range
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @author : liqiulin
* @date : 2024-04-23 13
* @describe : 促销员打卡数据模型
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@Accessors
(
chain
=
true
)
public
class
TemporaryClockVo
{
/**
* 打卡记录id
*/
Long
temporaryClockId
;
/**
* 打卡类型:1、上班卡;2、午休下班卡;3、午休上班卡;4、下班卡
*/
@NotNull
(
message
=
"无打卡类型"
)
@Range
(
max
=
4
,
min
=
1
,
message
=
"超出状态"
)
Integer
clockType
;
/**
* temporaryId
*/
@NotNull
(
message
=
"找不到打卡人"
)
Integer
temporaryId
;
String
temporaryName
;
// 店铺勤策id
String
storeQcId
;
// 店铺名称
String
storeName
;
// 上班打卡地点
@NotBlank
(
message
=
"请选择打卡地址"
)
String
clockAddress
;
// 上班打卡经纬度
@NotBlank
(
message
=
"请选择打卡地点"
)
String
clockCoordinates
;
// 上班打卡图片
@NotBlank
(
message
=
"请上传图片"
)
String
clockPhoto
;
@NotBlank
(
message
=
"未找到图片"
)
String
clockPhotoFieldId
;
}
src/main/java/com/wangxiaolu/promotion/result/basedata/RCode.java
浏览文件 @
3fb1c1ba
...
...
@@ -34,6 +34,9 @@ public enum RCode implements StatusCode {
PHONE_PARAM_ERROR
(
3002
,
"手机号异常"
),
USER_PHONE_IDENNUMBER_WXOPENID_UNIQUE_ERROR
(
3003
,
"个人信息已注册"
),
LOGIN_USER_IS_NULL_ERROR
(
3004
,
"账号未注册"
),
CLOCK_DETAIL_ERROR
(
3005
,
"打卡信息错误"
),
CLOCK_DETAIL_TIME_ERROR
(
3006
,
"不在打卡时间范围内"
),
/**
* 腾讯云
* 3500+
...
...
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/TemporaryActivityCoreService.java
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
service
.
activity
.
temporary
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.TemporaryClockDto
;
/**
* @author : liqiulin
...
...
@@ -15,5 +16,8 @@ public interface TemporaryActivityCoreService {
*/
long
activityDataReportedSave
(
TemporaryActivityReportedDto
temActDto
);
/**
* 促销员当日打卡信息保存
*/
void
clockInTodayActivity
(
TemporaryClockDto
dto
);
}
src/main/java/com/wangxiaolu/promotion/service/activity/temporary/impl/TemporaryActivityCoreServiceImpl.java
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
service
.
activity
.
temporary
.
impl
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityClockDao
;
import
com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityReportedDao
;
import
com.wangxiaolu.promotion.enums.activity.TemActApproveStatus
;
import
com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto
;
import
com.wangxiaolu.promotion.pojo.user.dto.TemporaryClockDto
;
import
com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2024-04-18 11
...
...
@@ -20,10 +24,12 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
@Autowired
TemporaryActivityReportedDao
temporaryActivityReportedDao
;
@Autowired
TemporaryActivityClockDao
temporaryActivityClockDao
;
/**
* 活动上报保存
*
* @return 生成id
*/
@Override
...
...
@@ -31,4 +37,16 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
temActDto
.
setApproveStatus
(
TemActApproveStatus
.
SUBMITTED
);
return
temporaryActivityReportedDao
.
activityDataSave
(
temActDto
);
}
/**
* 促销员当日打卡信息保存
*/
@Override
public
void
clockInTodayActivity
(
TemporaryClockDto
dto
)
{
if
(
Objects
.
isNull
(
dto
.
getTemporaryClockId
())){
temporaryActivityClockDao
.
save
(
dto
);
return
;
}
temporaryActivityClockDao
.
updateById
(
dto
);
}
}
src/main/java/com/wangxiaolu/promotion/utils/DateUtils.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
utils
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* @author : liqiulin
* @date : 2024-04-23 15
* @describe : 时间工具类
*/
public
class
DateUtils
{
/**
* 判断时间是否是范围内
* 入参时间格式:"00:00:00"
*/
public
static
boolean
parseTime
(
Date
date
,
String
beginTime
,
String
endTime
)
{
try
{
String
today
=
DateUtil
.
today
();
String
format
=
DatePattern
.
NORM_DATETIME_PATTERN
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
format
);
Date
beginTimeD
=
sdf
.
parse
(
today
+
" "
+
beginTime
);
Date
endTimeD
=
sdf
.
parse
(
today
+
" "
+
endTime
);
return
DateUtil
.
isIn
(
date
,
beginTimeD
,
endTimeD
);
}
catch
(
ParseException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
src/main/resources/mapper/TemporaryActivityClockMapper.xml
0 → 100644
浏览文件 @
3fb1c1ba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityClockMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityClockDO"
>
<id
property=
"id"
column=
"id"
jdbcType=
"BIGINT"
/>
<result
property=
"temporaryId"
column=
"temporary_id"
jdbcType=
"INTEGER"
/>
<result
property=
"temporaryName"
column=
"temporary_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeQcId"
column=
"store_qc_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeName"
column=
"store_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockInAddress"
column=
"clock_in_address"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockInCoordinates"
column=
"clock_in_coordinates"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockInPhoto"
column=
"clock_in_photo"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockInPhotoFieldId"
column=
"clock_in_photo_field_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockInTime"
column=
"clock_in_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"noonClockOutAddress"
column=
"noon_clock_out_address"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockOutCoordinates"
column=
"noon_clock_out_coordinates"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockOutPhoto"
column=
"noon_clock_out_photo"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockOutPhotoFieldId"
column=
"noon_clock_out_photo_field_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockOutTime"
column=
"noon_clock_out_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"noonClockInAddress"
column=
"noon_clock_in_address"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockInCoordinates"
column=
"noon_clock_in_coordinates"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockInPhoto"
column=
"noon_clock_in_photo"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockInPhotoFieldId"
column=
"noon_clock_in_photo_field_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"noonClockInTime"
column=
"noon_clock_in_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"clockOutAddress"
column=
"clock_out_address"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockOutCoordinates"
column=
"clock_out_coordinates"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockOutPhoto"
column=
"clock_out_photo"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockOutPhotoFieldId"
column=
"clock_out_photo_field_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"clockOutTime"
column=
"clock_out_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"createDate"
column=
"create_date"
jdbcType=
"CHAR"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"modifyTime"
column=
"modify_time"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,temporary_id,temporary_name,
store_qc_id,store_name,clock_in_address,
clock_in_coordinates,clock_in_photo,clock_in_photo_field_id,
clock_in_time,noon_clock_out_address,noon_clock_out_coordinates,
noon_clock_out_photo,noon_clock_out_photo_field_id,noon_clock_out_time,
noon_clock_in_address,noon_clock_in_coordinates,noon_clock_in_photo,
noon_clock_in_photo_field_id,noon_clock_in_time,clock_out_address,
clock_out_coordinates,clock_out_photo,clock_out_photo_field_id,
clock_out_time,create_date,create_time,
modify_time
</sql>
</mapper>
src/test/java/com/wangxiaolu/promotion/utils/DateUtilsTest.java
0 → 100644
浏览文件 @
3fb1c1ba
package
com
.
wangxiaolu
.
promotion
.
utils
;
import
org.junit.jupiter.api.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.Date
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
/**
* @author : liqiulin
* @date : 2024-04-23 16
* @describe :
*/
@SpringBootTest
@RunWith
(
SpringRunner
.
class
)
class
DateUtilsTest
{
@Test
void
parseTime
()
{
boolean
b
=
DateUtils
.
parseTime
(
new
Date
(),
"16:00:00"
,
"16:30:00"
);
System
.
out
.
println
(
"是否在时间范围内:"
+
b
);
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论