Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-link-module-fortune-hub
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-link-module-fortune-hub
Commits
86140a70
提交
86140a70
authored
12月 18, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(weChatMiniProgram): 完善抽奖活动与用户参与功能,查询活动列表、修改地址、参与抽奖等接口
上级
d0788b80
隐藏空白字符变更
内嵌
并排
正在显示
36 个修改的文件
包含
514 行增加
和
224 行删除
+514
-224
LotteryActivityQueryManagerController.java
...controller/bms/LotteryActivityQueryManagerController.java
+76
-0
LotteryCoreController.java
...om/link/hub/controller/mp/core/LotteryCoreController.java
+8
-3
LotteryActivityQueryController.java
...b/controller/mp/query/LotteryActivityQueryController.java
+3
-44
LotteryParticipateQueryController.java
...ontroller/mp/query/LotteryParticipateQueryController.java
+6
-5
WechatMiniProgramController.java
.../hub/controller/mp/query/WechatMiniProgramController.java
+1
-1
LotteryActivityDao.java
.../hub/domain/weChatMiniProgram/dao/LotteryActivityDao.java
+1
-0
LotteryParticipateDao.java
...b/domain/weChatMiniProgram/dao/LotteryParticipateDao.java
+2
-2
LotteryWinningDao.java
...k/hub/domain/weChatMiniProgram/dao/LotteryWinningDao.java
+5
-0
LotteryActivityDaoImpl.java
...in/weChatMiniProgram/dao/impl/LotteryActivityDaoImpl.java
+29
-6
LotteryParticipateDaoImpl.java
...weChatMiniProgram/dao/impl/LotteryParticipateDaoImpl.java
+13
-18
LotteryWinningDaoImpl.java
...ain/weChatMiniProgram/dao/impl/LotteryWinningDaoImpl.java
+21
-0
LotteryActivity.java
.../hub/domain/weChatMiniProgram/entity/LotteryActivity.java
+13
-8
LotteryParticipate.java
...b/domain/weChatMiniProgram/entity/LotteryParticipate.java
+16
-3
LotteryWinning.java
...k/hub/domain/weChatMiniProgram/entity/LotteryWinning.java
+16
-10
LotteryWinningAddress.java
...omain/weChatMiniProgram/entity/LotteryWinningAddress.java
+21
-4
ActivityStatus.java
...nk/hub/domain/weChatMiniProgram/enums/ActivityStatus.java
+29
-0
LotteryStatusEnum.java
...hub/domain/weChatMiniProgram/enums/LotteryStatusEnum.java
+51
-0
WechatOfficialAccountUserDaoImpl.java
...ialAccount/dao/impl/WechatOfficialAccountUserDaoImpl.java
+1
-0
LotteryParticipateBo.java
...in/java/com/link/hub/pojo/mp/bo/LotteryParticipateBo.java
+13
-0
LotteryWinningAddresssBo.java
...ava/com/link/hub/pojo/mp/bo/LotteryWinningAddresssBo.java
+0
-6
LotteryParticipateDto.java
.../java/com/link/hub/pojo/mp/dto/LotteryParticipateDto.java
+14
-1
LotteryWinningDto.java
...main/java/com/link/hub/pojo/mp/dto/LotteryWinningDto.java
+1
-6
LotteryParticipateVo.java
...in/java/com/link/hub/pojo/mp/vo/LotteryParticipateVo.java
+11
-0
LotteryVo.java
src/main/java/com/link/hub/pojo/mp/vo/LotteryVo.java
+4
-0
MyLotteryVo.java
src/main/java/com/link/hub/pojo/mp/vo/MyLotteryVo.java
+39
-19
WechatOfficeAccountService.java
...hub/service/officeAccount/WechatOfficeAccountService.java
+1
-1
WechatOfficeAccountServiceServiceImpl.java
...ceAccount/impl/WechatOfficeAccountServiceServiceImpl.java
+12
-5
WechatOfficialAccountUserServiceImpl.java
...iceAccount/impl/WechatOfficialAccountUserServiceImpl.java
+3
-0
LotteryActivityService.java
...hub/service/weChatMiniProgram/LotteryActivityService.java
+1
-2
LotteryParticipateService.java
.../service/weChatMiniProgram/LotteryParticipateService.java
+1
-1
LotteryWinningAddressService.java
...rvice/weChatMiniProgram/LotteryWinningAddressService.java
+1
-1
LotteryWinningService.java
.../hub/service/weChatMiniProgram/LotteryWinningService.java
+3
-0
LotteryActivityServiceImpl.java
...ce/weChatMiniProgram/impl/LotteryActivityServiceImpl.java
+5
-7
LotteryParticipateServiceImpl.java
...weChatMiniProgram/impl/LotteryParticipateServiceImpl.java
+82
-51
LotteryWinningAddressServiceImpl.java
...hatMiniProgram/impl/LotteryWinningAddressServiceImpl.java
+1
-20
LotteryWinningServiceImpl.java
...ice/weChatMiniProgram/impl/LotteryWinningServiceImpl.java
+10
-0
没有找到文件。
src/main/java/com/link/hub/controller/bms/LotteryActivityQueryManagerController.java
0 → 100644
浏览文件 @
86140a70
package
com
.
link
.
hub
.
controller
.
bms
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryActivity
;
import
com.link.hub.service.weChatMiniProgram.LotteryActivityService
;
import
com.sfa.common.core.domain.R
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* 后台管理-抽奖活动
*/
@RestController
@RequestMapping
(
"/manager/query"
)
public
class
LotteryActivityQueryManagerController
{
@Resource
private
LotteryActivityService
lotteryActivityService
;
/**
* 查询活动列表
* 小程序端查询上线的list
*/
@GetMapping
(
"/activity/list"
)
public
List
<
LotteryActivity
>
listActivities
()
{
List
<
LotteryActivity
>
activityList
=
lotteryActivityService
.
queryActiveActivityList
();
return
activityList
;
}
/**
* 查询活动列表
* 后台管理查询
*/
@GetMapping
(
"/lottery/page"
)
public
R
<?>
pageActivities
(
@RequestParam
(
required
=
false
)
Integer
status
,
@RequestParam
int
pageNum
,
@RequestParam
int
pageSize
)
{
IPage
<
LotteryActivity
>
page
=
lotteryActivityService
.
queryActiveActivities
(
status
,
pageNum
,
pageSize
);
return
R
.
ok
(
page
);
}
/**
* 查询活动详情
*/
@GetMapping
(
"/{id}"
)
// @ApiOperation("查询活动详情")
public
LotteryActivity
getActivityDetail
(
@PathVariable
Long
id
)
{
LotteryActivity
activity
=
lotteryActivityService
.
getDetailById
(
id
);
return
activity
;
}
/**
* 创建抽奖活动
*/
@PostMapping
(
"/create"
)
// @ApiOperation("创建抽奖活动")
public
Boolean
createActivity
(
@RequestBody
LotteryActivity
activity
)
{
boolean
result
=
lotteryActivityService
.
createActivity
(
activity
);
return
result
;
}
/**
* 更新抽奖活动
*/
@PutMapping
(
"/update"
)
// @ApiOperation("更新抽奖活动")
public
Boolean
updateActivity
(
@RequestBody
LotteryActivity
activity
)
{
boolean
result
=
lotteryActivityService
.
updateActivity
(
activity
);
return
result
;
}
}
src/main/java/com/link/hub/controller/mp/core/LotteryCoreController.java
浏览文件 @
86140a70
...
...
@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RestController;
import
javax.annotation.Resource
;
/**
* 修改接口-参与抽奖、填写抽奖地址、填写用户信息
*
* @author : lvbencai
* @date : 2025-12-10
* @describe : 抽奖查询接口
...
...
@@ -30,7 +32,8 @@ public class LotteryCoreController {
/**
* 用户参与抽奖活动
* 用户参与抽奖活动
*
* @param lotteryParticipateBo
* @return
*/
...
...
@@ -40,7 +43,8 @@ public class LotteryCoreController {
}
/**
* 用户填写抽奖地址信息
* 用户填写-抽奖地址信息
*
* @param lotteryParticipateBo
* @return
*/
...
...
@@ -50,7 +54,8 @@ public class LotteryCoreController {
}
/**
* 用户填写抽奖地址信息
* 用户填写用户头像信息
*
* @param mpUserBo
* @return
*/
...
...
src/main/java/com/link/hub/controller/mp/query/LotteryActivityQueryController.java
浏览文件 @
86140a70
package
com
.
link
.
hub
.
controller
.
mp
.
query
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryActivity
;
import
com.link.hub.service.weChatMiniProgram.LotteryActivityService
;
import
com.sfa.common.core.domain.R
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
...
...
@@ -16,7 +14,6 @@ import java.util.List;
@RestController
@RequestMapping
(
"/miniProgram/query"
)
public
class
LotteryActivityQueryController
{
@Resource
private
LotteryActivityService
lotteryActivityService
;
...
...
@@ -25,56 +22,18 @@ public class LotteryActivityQueryController {
* 小程序端查询上线的list
*/
@GetMapping
(
"/lottery/list"
)
public
List
<
LotteryActivity
>
listActivities
(
@RequestParam
(
required
=
false
)
Integer
status
,
@RequestParam
int
pageNum
,
@RequestParam
int
pageSize
)
{
List
<
LotteryActivity
>
activityList
=
lotteryActivityService
.
queryActiveActivityList
(
status
);
public
List
<
LotteryActivity
>
listActivities
()
{
List
<
LotteryActivity
>
activityList
=
lotteryActivityService
.
queryActiveActivityList
();
return
activityList
;
}
/**
* 查询活动列表
* 后台管理查询
*/
@GetMapping
(
"/lottery/page"
)
public
R
<?>
pageActivities
(
@RequestParam
(
required
=
false
)
Integer
status
,
@RequestParam
int
pageNum
,
@RequestParam
int
pageSize
)
{
IPage
<
LotteryActivity
>
page
=
lotteryActivityService
.
queryActiveActivities
(
status
,
pageNum
,
pageSize
);
return
R
.
ok
(
page
);
}
/**
* 查询活动详情
*/
@GetMapping
(
"/{id}"
)
// @ApiOperation("查询活动详情")
@GetMapping
(
"/activity/info/{id}"
)
public
LotteryActivity
getActivityDetail
(
@PathVariable
Long
id
)
{
LotteryActivity
activity
=
lotteryActivityService
.
getDetailById
(
id
);
return
activity
;
}
/**
* 创建抽奖活动
*/
@PostMapping
(
"/create"
)
// @ApiOperation("创建抽奖活动")
public
Boolean
createActivity
(
@RequestBody
LotteryActivity
activity
)
{
boolean
result
=
lotteryActivityService
.
createActivity
(
activity
);
return
result
;
}
/**
* 更新抽奖活动
*/
@PutMapping
(
"/update"
)
// @ApiOperation("更新抽奖活动")
public
Boolean
updateActivity
(
@RequestBody
LotteryActivity
activity
)
{
boolean
result
=
lotteryActivityService
.
updateActivity
(
activity
);
return
result
;
}
}
src/main/java/com/link/hub/controller/mp/query/LotteryParticipateQueryController.java
浏览文件 @
86140a70
...
...
@@ -11,6 +11,7 @@ import javax.annotation.Resource;
import
java.util.List
;
/**
* 抽奖查询接口
* @author : lvbencai
* @date : 2025-12-10
* @describe : 抽奖查询接口
...
...
@@ -23,7 +24,7 @@ public class LotteryParticipateQueryController {
/**
* 查询抽奖
列表信息
* 查询抽奖
公示信息-包含抽奖列表和详情
*/
@RequestMapping
(
"/lottery/announcement"
)
public
List
<
LotteryVo
>
announcementList
()
{
...
...
@@ -36,17 +37,17 @@ public class LotteryParticipateQueryController {
* 查询抽奖信息
*/
@GetMapping
(
"/lottery/info"
)
public
LotteryVo
info
(
Long
lotter
yId
)
{
public
LotteryVo
info
(
Long
activit
yId
)
{
// 查询活动列表
LotteryVo
lotteryVo
=
lotteryParticipateService
.
queryLotteryInfo
(
lotter
yId
);
LotteryVo
lotteryVo
=
lotteryParticipateService
.
queryLotteryInfo
(
activit
yId
);
return
lotteryVo
;
}
/**
* 查询抽奖历史记录
*
我的-
查询抽奖历史记录
*/
@
RequestMapping
(
"
/record"
)
@
GetMapping
(
"/lottery
/record"
)
public
List
<
MyLotteryVo
>
record
()
{
// 查询活动列表
List
<
MyLotteryVo
>
lotteryVos
=
lotteryParticipateService
.
queryMyRecord
();
...
...
src/main/java/com/link/hub/controller/mp/query/WechatMiniProgramController.java
浏览文件 @
86140a70
...
...
@@ -39,7 +39,7 @@ public class WechatMiniProgramController {
*/
@GetMapping
(
"/query/isSubscribe"
)
public
Boolean
isSubscribe
(
String
openid
)
{
return
wechatOfficeAccountService
.
i
sSubscribe
(
openid
);
return
wechatOfficeAccountService
.
checkI
sSubscribe
(
openid
);
}
...
...
src/main/java/com/link/hub/domain/weChatMiniProgram/dao/LotteryActivityDao.java
浏览文件 @
86140a70
...
...
@@ -34,4 +34,5 @@ public interface LotteryActivityDao {
LotteryActivity
selectById
(
Long
activityId
);
List
<
LotteryActivity
>
queryActiveActivityList
();
}
src/main/java/com/link/hub/domain/weChatMiniProgram/dao/LotteryParticipateDao.java
浏览文件 @
86140a70
...
...
@@ -61,9 +61,9 @@ public interface LotteryParticipateDao {
long
countParticipateByActivity
(
Long
activityId
);
LotteryDto
queryLotteryInfo
(
Long
lotteryId
);
boolean
hasWinning
(
Long
activityId
,
Long
userId
);
List
<
LotteryVo
>
announcementList
();
LotteryDto
queryLotteryInfo
(
LotteryDto
dto
);
}
src/main/java/com/link/hub/domain/weChatMiniProgram/dao/LotteryWinningDao.java
浏览文件 @
86140a70
...
...
@@ -48,4 +48,9 @@ public interface LotteryWinningDao {
* 查询未领取奖品记录
*/
List
<
LotteryWinning
>
queryUnreceivedPrizes
(
Long
userId
);
boolean
hasWinning
(
Long
activityId
,
Long
userId
);
LotteryWinning
getWinningDetail
(
Long
activityId
,
Long
userId
);
}
src/main/java/com/link/hub/domain/weChatMiniProgram/dao/impl/LotteryActivityDaoImpl.java
浏览文件 @
86140a70
...
...
@@ -8,10 +8,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.link.hub.domain.weChatMiniProgram.dao.LotteryActivityDao
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryActivity
;
import
com.link.hub.domain.weChatMiniProgram.enums.ActivityStatus
;
import
com.link.hub.domain.weChatMiniProgram.mapper.LotteryActivityMapper
;
import
com.link.hub.domain.weChatMiniProgram.wq.LotteryWq
;
import
com.link.hub.pojo.mp.dto.LotteryActivityRelDto
;
import
com.link.hub.pojo.mp.dto.MyLotteryDto
;
import
com.sfa.common.core.utils.bean.BeanUtils
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -42,11 +42,11 @@ public class LotteryActivityDaoImpl implements LotteryActivityDao {
new
QueryWrapper
<
LotteryActivity
>()
.
lambda
()
// 状态为进行中
.
eq
(
LotteryActivity:
:
getStatus
,
1
)
.
eq
(
LotteryActivity:
:
getStatus
,
ActivityStatus
.
ONGOING
.
getStatus
()
)
// 开始时间 <= 当前时间
.
g
e
(
LotteryActivity:
:
getStartTime
,
LocalDateTime
.
now
())
.
l
e
(
LotteryActivity:
:
getStartTime
,
LocalDateTime
.
now
())
// 结束时间 >= 当前时间
.
l
e
(
LotteryActivity:
:
getEndTime
,
LocalDateTime
.
now
())
.
g
e
(
LotteryActivity:
:
getEndTime
,
LocalDateTime
.
now
())
// 未删除
.
eq
(
LotteryActivity:
:
getDeleteFlag
,
0
)
);
...
...
@@ -60,9 +60,9 @@ public class LotteryActivityDaoImpl implements LotteryActivityDao {
.
lambda
()
.
eq
(
ObjectUtil
.
isNotEmpty
(
wq
.
getStatus
()),
LotteryActivity:
:
getStatus
,
wq
.
getStatus
())
// 开始时间 <= 当前时间
// .g
e(LotteryActivity::getStartTime, LocalDateTime.now())
.
l
e
(
LotteryActivity:
:
getStartTime
,
LocalDateTime
.
now
())
// 结束时间 >= 当前时间
// .l
e(LotteryActivity::getEndTime, LocalDateTime.now())
.
g
e
(
LotteryActivity:
:
getEndTime
,
LocalDateTime
.
now
())
.
eq
(
LotteryActivity:
:
getDeleteFlag
,
0
)
.
orderByDesc
(
LotteryActivity:
:
getCreateTime
)
);
...
...
@@ -102,6 +102,29 @@ public class LotteryActivityDaoImpl implements LotteryActivityDao {
}
/**
* 查询活动列表
* @return
*/
@Override
public
List
<
LotteryActivity
>
queryActiveActivityList
()
{
// 调用 MyBatis Mapper 方法
List
<
LotteryActivity
>
lotteryActivities
=
lotteryActivityMapper
.
selectList
(
new
QueryWrapper
<
LotteryActivity
>()
.
lambda
()
// 状态为进行中
.
eq
(
LotteryActivity:
:
getStatus
,
ActivityStatus
.
ONGOING
.
getStatus
())
// 开始时间 <= 当前时间
.
le
(
LotteryActivity:
:
getStartTime
,
LocalDateTime
.
now
())
// 结束时间 >= 当前时间
.
ge
(
LotteryActivity:
:
getEndTime
,
LocalDateTime
.
now
())
// 未删除
.
eq
(
LotteryActivity:
:
getDeleteFlag
,
0
)
.
orderByDesc
(
LotteryActivity:
:
getCreateTime
)
);
return
lotteryActivities
;
}
private
Wrapper
<
LotteryActivity
>
getWrapper
(
LotteryWq
wq
)
{
LambdaQueryWrapper
<
LotteryActivity
>
lotteryActivityLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
...
...
src/main/java/com/link/hub/domain/weChatMiniProgram/dao/impl/LotteryParticipateDaoImpl.java
浏览文件 @
86140a70
package
com
.
link
.
hub
.
domain
.
weChatMiniProgram
.
dao
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.link.hub.domain.weChatMiniProgram.dao.LotteryParticipateDao
;
...
...
@@ -32,21 +33,21 @@ public class LotteryParticipateDaoImpl implements LotteryParticipateDao {
@Override
public
List
<
LotteryParticipate
>
queryList
(
LotteryParticipateWq
wq
)
{
QueryWrapper
<
LotteryParticipate
>
wrapper
=
new
QueryWrapper
<>();
LambdaQueryWrapper
<
LotteryParticipate
>
wrapper
=
new
Lambda
QueryWrapper
<>();
if
(
wq
.
getActivityId
()
!=
null
)
{
wrapper
.
eq
(
"activity_id"
,
wq
.
getActivityId
());
wrapper
.
eq
(
LotteryParticipate:
:
getActivityId
,
wq
.
getActivityId
());
}
if
(
wq
.
getUserId
()
!=
null
)
{
wrapper
.
eq
(
"user_id"
,
wq
.
getUserId
());
wrapper
.
eq
(
LotteryParticipate:
:
getUserId
,
wq
.
getUserId
());
}
if
(
wq
.
getParticipateTimeStart
()
!=
null
&&
wq
.
getParticipateTimeEnd
()
!=
null
)
{
wrapper
.
between
(
"participate_time"
,
wq
.
getParticipateTimeStart
(),
wq
.
getParticipateTimeEnd
());
wrapper
.
between
(
LotteryParticipate:
:
getParticipateTime
,
wq
.
getParticipateTimeStart
(),
wq
.
getParticipateTimeEnd
());
}
if
(
wq
.
getSource
()
!=
null
)
{
wrapper
.
eq
(
"source"
,
wq
.
getSource
());
wrapper
.
eq
(
LotteryParticipate:
:
getSource
,
wq
.
getSource
());
}
wrapper
.
eq
(
"delete_flag"
,
wq
.
getDeleteFlag
());
wrapper
.
eq
(
LotteryParticipate:
:
getDeleteFlag
,
wq
.
getDeleteFlag
());
return
lotteryParticipateMapper
.
selectList
(
wrapper
);
}
...
...
@@ -127,27 +128,21 @@ public class LotteryParticipateDaoImpl implements LotteryParticipateDao {
* @return
*/
@Override
public
LotteryDto
queryLotteryInfo
(
Lo
ng
lotteryId
)
{
public
LotteryDto
queryLotteryInfo
(
Lo
tteryDto
dto
)
{
// 查询我的抽奖信息
LambdaQueryWrapper
<
LotteryParticipate
>
wrapper
=
new
LambdaQueryWrapper
<
LotteryParticipate
>();
wrapper
.
eq
(
LotteryParticipate:
:
getId
,
lotteryId
);
wrapper
.
eq
(
ObjectUtil
.
isNotEmpty
(
dto
.
getActivityId
()),
LotteryParticipate:
:
getActivityId
,
dto
.
getActivityId
());
wrapper
.
eq
(
LotteryParticipate:
:
getUserId
,
dto
.
getUserId
());
LotteryParticipate
lotteryParticipate
=
lotteryParticipateMapper
.
selectOne
(
wrapper
);
if
(
lotteryParticipate
==
null
)
{
return
null
;
}
LotteryDto
myLotteryDto
=
LotteryDto
.
convert
(
lotteryParticipate
);
return
myLotteryDto
;
}
@Override
public
boolean
hasWinning
(
Long
activityId
,
Long
userId
)
{
// 获取中奖信息
LambdaQueryWrapper
<
LotteryParticipate
>
wrapper
=
new
LambdaQueryWrapper
<
LotteryParticipate
>();
wrapper
.
eq
(
LotteryParticipate:
:
getActivityId
,
activityId
)
.
eq
(
LotteryParticipate:
:
getUserId
,
userId
)
.
eq
(
LotteryParticipate:
:
getLotteryStatus
,
1
);
return
false
;
}
@Override
public
List
<
LotteryVo
>
announcementList
()
{
...
...
src/main/java/com/link/hub/domain/weChatMiniProgram/dao/impl/LotteryWinningDaoImpl.java
浏览文件 @
86140a70
...
...
@@ -86,4 +86,25 @@ public class LotteryWinningDaoImpl implements LotteryWinningDao {
.
eq
(
LotteryWinning:
:
getDeleteFlag
,
0
);
return
lotteryWinningMapper
.
selectList
(
wrapper
);
}
@Override
public
boolean
hasWinning
(
Long
activityId
,
Long
userId
)
{
// 获取
LambdaQueryWrapper
<
LotteryWinning
>
wrapper
=
new
LambdaQueryWrapper
<
LotteryWinning
>();
wrapper
.
eq
(
LotteryWinning:
:
getActivityId
,
activityId
)
.
eq
(
LotteryWinning:
:
getUserId
,
userId
);
if
(
lotteryWinningMapper
.
selectCount
(
wrapper
)
>
0
)
{
return
true
;
}
return
false
;
}
@Override
public
LotteryWinning
getWinningDetail
(
Long
activityId
,
Long
userId
)
{
LambdaQueryWrapper
<
LotteryWinning
>
wrapper
=
new
LambdaQueryWrapper
<
LotteryWinning
>();
wrapper
.
eq
(
LotteryWinning:
:
getActivityId
,
activityId
)
.
eq
(
LotteryWinning:
:
getUserId
,
userId
)
.
eq
(
LotteryWinning:
:
getDeleteFlag
,
0
);
return
lotteryWinningMapper
.
selectOne
(
wrapper
);
}
}
src/main/java/com/link/hub/domain/weChatMiniProgram/entity/LotteryActivity.java
浏览文件 @
86140a70
...
...
@@ -3,10 +3,11 @@ package com.link.hub.domain.weChatMiniProgram.entity;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.Map
;
/**
* 抽奖活动配置实体类
...
...
@@ -33,12 +34,20 @@ public class LotteryActivity {
/**
* 活动开始时间
*/
private
Date
startTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
startTime
;
/**
* 活动结束时间
*/
private
Date
endTime
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
endTime
;
/**
* 开奖时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
lotteryTime
;
/**
* 活动状态:0-未开始 1-进行中 2-已结束 3-已下架
...
...
@@ -60,11 +69,6 @@ public class LotteryActivity {
*/
private
Long
totalParticipate
;
/**
* 扩展字段(JSON格式)
*/
private
Map
<
String
,
Object
>
extJson
;
/**
* 创建时间
*/
...
...
@@ -77,6 +81,7 @@ public class LotteryActivity {
// @TableField(fill = FieldFill.INSERT_UPDATE)
private
Date
updateTime
;
/**
* 创建人
*/
...
...
src/main/java/com/link/hub/domain/weChatMiniProgram/entity/LotteryParticipate.java
浏览文件 @
86140a70
...
...
@@ -21,6 +21,16 @@ public class LotteryParticipate {
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 活动标题
*/
private
String
title
;
/**
* 活动开奖时间
*/
private
LocalDateTime
lotteryTime
;
/**
* 关联活动ID
*/
...
...
@@ -32,8 +42,9 @@ public class LotteryParticipate {
private
Long
userId
;
/**
* 抽奖状态
* 0-未参与 1-已参与(待开奖) 2-未中奖, 3-已中奖 4、未填写收获地址 5已填写-待发货 6已发货
*/
* 1 已参与(待开奖) 2未中奖, 3已中奖 -未填写收获地址 4已中奖-已填写待发货 5已中奖-已发货 6已中奖-未领奖
* @see com.link.hub.domain.weChatMiniProgram.enums.LotteryStatusEnum
*/
private
Integer
lotteryStatus
;
/**
...
...
@@ -89,12 +100,14 @@ public class LotteryParticipate {
lotteryParticipate
.
setActivityId
(
dto
.
getActivityId
());
lotteryParticipate
.
setUserId
(
dto
.
getUserId
());
// 默认状态为1 已参与待开奖
// 默认状态为1 已参与待开奖
lotteryParticipate
.
setLotteryStatus
(
1
);
lotteryParticipate
.
setParticipateTime
(
LocalDateTime
.
now
());
lotteryParticipate
.
setIpAddress
(
dto
.
getIpAddress
());
lotteryParticipate
.
setDeviceInfo
(
dto
.
getDeviceInfo
());
lotteryParticipate
.
setSource
(
dto
.
getSource
());
lotteryParticipate
.
setTitle
(
dto
.
getTitle
());
lotteryParticipate
.
setLotteryTime
(
dto
.
getLotteryTime
());
return
lotteryParticipate
;
}
}
src/main/java/com/link/hub/domain/weChatMiniProgram/entity/LotteryWinning.java
浏览文件 @
86140a70
...
...
@@ -42,16 +42,15 @@ public class LotteryWinning {
* 是否领奖:0-未领奖 1-已领奖 2-已作废
*/
private
Integer
isReceive
;
/**
* 领奖
时间
* 领奖
物流单号
*/
private
LocalDateTime
receiveTime
;
private
String
logisticsNumber
;
/**
*
扩展字段(如领奖地址、备注)
*
领奖时间
*/
private
String
extJson
;
private
LocalDateTime
receiveTime
;
/**
* 创建时间
...
...
@@ -81,11 +80,19 @@ public class LotteryWinning {
@TableLogic
private
Integer
deleteFlag
;
/**
* 中奖物品名称
*/
private
String
prizeName
;
/**
* 中奖等级:1-一等奖 2-二等奖 3-三等奖
*/
private
Integer
winningLevel
;
/**
* 中奖奖品图片URL
*/
private
String
prizeImg
;
public
static
LotteryWinning
convert
(
LotteryWinningDto
lotteryWinningDto
)
{
if
(
lotteryWinningDto
==
null
)
{
return
null
;
}
LotteryWinning
lotteryWinning
=
new
LotteryWinning
();
lotteryWinning
.
setId
(
lotteryWinningDto
.
getId
());
...
...
@@ -95,7 +102,6 @@ public class LotteryWinning {
lotteryWinning
.
setWinningTime
(
lotteryWinningDto
.
getWinningTime
());
lotteryWinning
.
setIsReceive
(
lotteryWinningDto
.
getIsReceive
());
lotteryWinning
.
setReceiveTime
(
lotteryWinningDto
.
getReceiveTime
());
lotteryWinning
.
setExtJson
(
lotteryWinningDto
.
getExtJson
());
return
lotteryWinning
;
}
}
...
...
src/main/java/com/link/hub/domain/weChatMiniProgram/entity/LotteryWinningAddress.java
浏览文件 @
86140a70
package
com
.
link
.
hub
.
domain
.
weChatMiniProgram
.
entity
;
import
cn.hutool.crypto.digest.DigestUtil
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.link.hub.pojo.mp.bo.LotteryWinningAddresssBo
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
/**
...
...
@@ -31,6 +34,10 @@ public class LotteryWinningAddress {
* 关联用户ID(便于查询用户所有地址)
*/
private
Long
userId
;
/**
* 物流单号
*/
private
String
logisticsNumber
;
/**
* 收货地址-省
...
...
@@ -41,6 +48,10 @@ public class LotteryWinningAddress {
* 收货地址-市
*/
private
String
city
;
/**
* 收货地址-区县
*/
private
String
district
;
/**
* 收货地址-详细地址(区/街道/门牌号)
...
...
@@ -92,16 +103,22 @@ public class LotteryWinningAddress {
public
static
LotteryWinningAddress
create
(
LotteryWinningAddresssBo
lotteryParticipateBo
)
{
LotteryWinningAddress
address
=
new
LotteryWinningAddress
();
// 编辑时有id
address
.
setId
(
lotteryParticipateBo
.
getId
());
// 编辑时有id 则为修改操作
if
(
lotteryParticipateBo
.
getId
()
!=
null
)
{
address
.
setId
(
lotteryParticipateBo
.
getId
());
}
address
.
setActivityId
(
lotteryParticipateBo
.
getActivityId
());
address
.
setUserId
(
lotteryParticipateBo
.
getUserId
());
address
.
setUserId
(
SecurityUtils
.
getUserId
());
address
.
setProvince
(
lotteryParticipateBo
.
getProvince
());
address
.
setCity
(
lotteryParticipateBo
.
getCity
());
address
.
setDistrict
(
lotteryParticipateBo
.
getDistrict
());
address
.
setDetailAddress
(
lotteryParticipateBo
.
getDetailAddress
());
address
.
setReceiverName
(
lotteryParticipateBo
.
getReceiverName
());
address
.
setReceiverPhone
(
lotteryParticipateBo
.
getReceiverPhone
());
// 手机号加密存储
String
boReceiverPhone
=
lotteryParticipateBo
.
getReceiverPhone
();
String
encryptedPhone
=
DigestUtil
.
md5
(
boReceiverPhone
,
"UTF-8"
).
toString
();
address
.
setReceiverPhone
(
encryptedPhone
);
address
.
setIsDefault
(
lotteryParticipateBo
.
getIsDefault
());
return
address
;
...
...
src/main/java/com/link/hub/domain/weChatMiniProgram/enums/ActivityStatus.java
0 → 100644
浏览文件 @
86140a70
package
com
.
link
.
hub
.
domain
.
weChatMiniProgram
.
enums
;
/**
* 活动状态
*/
//@Data
public
enum
ActivityStatus
{
/**
* 待开始
*/
WAITING
(
0
),
/**
* 进行中
*/
ONGOING
(
1
),
/**
* 已结束
*/
ENDED
(
2
);
private
Integer
status
;
private
ActivityStatus
(
Integer
status
)
{
this
.
status
=
status
;
}
public
Integer
getStatus
()
{
return
status
;
}
}
src/main/java/com/link/hub/domain/weChatMiniProgram/enums/LotteryStatusEnum.java
0 → 100644
浏览文件 @
86140a70
package
com
.
link
.
hub
.
domain
.
weChatMiniProgram
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 抽奖活动状态枚举
*/
@Getter
@AllArgsConstructor
public
enum
LotteryStatusEnum
{
/**
* 0未参与 1 已参与(待开奖) 2未中奖
* 3已中奖-未填写收获地址 4已中奖-已填写待发货
* 5已中奖-已发货 6已中奖-未领奖 7已中奖-已领奖
*/
NOT_PARTICIPATED
(
0
,
"未参与"
,
false
),
PARTICIPATED_PENDING
(
1
,
"已参与(待开奖)"
,
false
),
NOT_WIN
(
2
,
"未中奖"
,
false
),
WIN_NO_ADDRESS
(
3
,
"已中奖-未填写收获地址"
,
true
),
WIN_PENDING_SHIPMENT
(
4
,
"已中奖-已填写待发货"
,
true
),
WIN_SHIPPED
(
5
,
"已中奖-已发货"
,
true
),
WIN_NOT_RECEIVED
(
6
,
"已中奖-未领奖"
,
true
);
/**
* 状态码
*/
private
final
Integer
code
;
/**
* 状态描述
*/
private
final
String
desc
;
/**
* 是否中奖
*/
private
final
boolean
isWinning
;
/**
* 根据状态码获取枚举
*/
public
static
LotteryStatusEnum
getEnumByCode
(
Integer
code
)
{
for
(
LotteryStatusEnum
status
:
values
())
{
if
(
status
.
code
.
equals
(
code
))
{
return
status
;
}
}
return
null
;
}
}
src/main/java/com/link/hub/domain/weChatOfficialAccount/dao/impl/WechatOfficialAccountUserDaoImpl.java
浏览文件 @
86140a70
...
...
@@ -132,6 +132,7 @@ public class WechatOfficialAccountUserDaoImpl implements WechatOfficialAccountUs
private
LambdaQueryWrapper
<
WechatOfficialAccountUser
>
buildWrapper
(
WeChatOaUserQueryWq
wq
)
{
LambdaQueryWrapper
<
WechatOfficialAccountUser
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
ObjectUtil
.
isNotEmpty
(
wq
.
getUnionid
()),
WechatOfficialAccountUser:
:
getUnionid
,
wq
.
getUnionid
());
queryWrapper
.
eq
(
ObjectUtil
.
isNotEmpty
(
wq
.
getOpenid
()),
WechatOfficialAccountUser:
:
getOpenid
,
wq
.
getOpenid
());
return
queryWrapper
;
}
...
...
src/main/java/com/link/hub/pojo/mp/bo/LotteryParticipateBo.java
浏览文件 @
86140a70
...
...
@@ -3,6 +3,7 @@ package com.link.hub.pojo.mp.bo;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDateTime
;
/**
* 用户参与抽奖BO类
...
...
@@ -15,6 +16,18 @@ public class LotteryParticipateBo {
@NotNull
(
message
=
"活动ID不能为空"
)
private
Long
activityId
;
/**
* 活动标题
*/
private
String
title
;
/**
* 活动开奖时间
*/
private
LocalDateTime
lotteryTime
;
/**
* 关联用户ID
*/
...
...
src/main/java/com/link/hub/pojo/mp/bo/LotteryWinningAddresssBo.java
浏览文件 @
86140a70
...
...
@@ -17,12 +17,6 @@ public class LotteryWinningAddresssBo {
@NotNull
(
message
=
"活动ID不能为空"
)
private
Long
activityId
;
/**
* 关联用户ID
*/
@NotNull
(
message
=
"用户ID不能为空"
)
private
Long
userId
;
/**
* 收货地址-省
*/
...
...
src/main/java/com/link/hub/pojo/mp/dto/LotteryParticipateDto.java
浏览文件 @
86140a70
...
...
@@ -8,6 +8,7 @@ import com.sfa.common.security.utils.SecurityUtils;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDateTime
;
/**
* 用户参与抽奖记录DTO类
...
...
@@ -40,16 +41,28 @@ public class LotteryParticipateDto {
* 参与来源:1微信小程序2抖音小程序
*/
private
Integer
source
;
/**
* 活动标题
*/
private
String
title
;
/**
* 活动开奖时间
*/
private
LocalDateTime
lotteryTime
;
// 核心业务规则:创建订单(封装状态初始化、金额计算)
public
static
LotteryParticipateDto
c
reate
(
LotteryParticipateBo
participateBo
)
{
public
static
LotteryParticipateDto
c
onvert
(
LotteryParticipateBo
participateBo
)
{
LotteryParticipateDto
dto
=
new
LotteryParticipateDto
();
dto
.
setActivityId
(
participateBo
.
getActivityId
());
dto
.
setUserId
(
SecurityUtils
.
getUserId
());
dto
.
setSource
(
ObjectUtil
.
defaultIfNull
(
participateBo
.
getSource
(),
SourceEnum
.
WECHAT_MINI_PROGRAM
.
getCode
()));
dto
.
setIpAddress
(
IpUtils
.
getIpAddr
());
dto
.
setLotteryTime
(
participateBo
.
getLotteryTime
());
dto
.
setTitle
(
participateBo
.
getTitle
());
return
dto
;
}
}
src/main/java/com/link/hub/pojo/mp/dto/LotteryWinningDto.java
浏览文件 @
86140a70
...
...
@@ -45,10 +45,7 @@ public class LotteryWinningDto {
*/
private
LocalDateTime
receiveTime
;
/**
* 扩展字段(如领奖地址、备注)
*/
private
String
extJson
;
/**
* 创建时间
...
...
@@ -91,7 +88,6 @@ public class LotteryWinningDto {
dto
.
setWinningTime
(
entity
.
getWinningTime
());
dto
.
setIsReceive
(
entity
.
getIsReceive
());
dto
.
setReceiveTime
(
entity
.
getReceiveTime
());
dto
.
setExtJson
(
entity
.
getExtJson
());
dto
.
setCreateTime
(
entity
.
getCreateTime
());
dto
.
setUpdateTime
(
entity
.
getUpdateTime
());
dto
.
setCreateBy
(
entity
.
getCreateBy
());
...
...
@@ -117,7 +113,6 @@ public class LotteryWinningDto {
entity
.
setWinningTime
(
dto
.
getWinningTime
());
entity
.
setIsReceive
(
dto
.
getIsReceive
());
entity
.
setReceiveTime
(
dto
.
getReceiveTime
());
entity
.
setExtJson
(
dto
.
getExtJson
());
entity
.
setCreateTime
(
dto
.
getCreateTime
());
entity
.
setUpdateTime
(
dto
.
getUpdateTime
());
entity
.
setCreateBy
(
dto
.
getCreateBy
());
...
...
src/main/java/com/link/hub/pojo/mp/vo/LotteryParticipateVo.java
浏览文件 @
86140a70
package
com
.
link
.
hub
.
pojo
.
mp
.
vo
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryParticipate
;
import
com.link.hub.domain.weChatMiniProgram.enums.SourceEnum
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
...
...
@@ -38,4 +40,13 @@ public class LotteryParticipateVo {
* 参与来源名称
*/
private
String
sourceName
;
public
static
LotteryParticipateVo
convert
(
LotteryParticipate
participate
)
{
LotteryParticipateVo
vo
=
new
LotteryParticipateVo
();
vo
.
setId
(
participate
.
getId
());
vo
.
setActivityId
(
participate
.
getActivityId
());
vo
.
setParticipateTime
(
participate
.
getParticipateTime
());
vo
.
setSourceName
(
SourceEnum
.
getSourceName
(
participate
.
getSource
()));
return
vo
;
}
}
src/main/java/com/link/hub/pojo/mp/vo/LotteryVo.java
浏览文件 @
86140a70
...
...
@@ -34,6 +34,10 @@ public class LotteryVo {
private
Integer
status
;
/**
* 未参与抽奖
* @return
*/
public
static
LotteryVo
convertNoParticipate
()
{
LotteryVo
lotteryVo
=
new
LotteryVo
();
lotteryVo
.
setStatus
(
0
);
...
...
src/main/java/com/link/hub/pojo/mp/vo/MyLotteryVo.java
浏览文件 @
86140a70
...
...
@@ -2,7 +2,8 @@ package com.link.hub.pojo.mp.vo;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.link.hub.pojo.mp.dto.MyLotteryDto
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryParticipate
;
import
com.link.hub.domain.weChatMiniProgram.enums.LotteryStatusEnum
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
...
...
@@ -14,7 +15,7 @@ public class MyLotteryVo {
*/
private
Long
id
;
/**
* 抽奖名称
* 抽奖
活动
名称
*/
private
String
title
;
/**
...
...
@@ -37,7 +38,6 @@ public class MyLotteryVo {
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
endTime
;
/**
* 关联活动ID
*/
...
...
@@ -49,26 +49,46 @@ public class MyLotteryVo {
private
Long
userId
;
/**
* 抽奖状态
* 0-未参与 1-已参与(待开奖) 2-未中奖, 3-已中奖 4、未填写收获地址 5已填写-待发货 6已发货
* 0未参与 1 已参与(待开奖) 2未中奖, 3已中奖 -未填写收获地址 4已中奖-已填写待发货 5已中奖-已发货 6已中奖-未领奖
* @see LotteryStatusEnum
*/
private
Integer
lotteryStatus
;
public
static
MyLotteryVo
convert
(
MyLotteryDto
myLotteryDto
)
{
/**
* 开奖时间
* @param participate
* @return
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
LocalDateTime
lotteryTime
;
/**
* 中奖奖品名称
*/
private
String
lotteryPrizeName
;
/**
* 中奖奖品图片
*/
private
String
lotteryPrizeImg
;
/**
* 中奖等级
*/
private
Integer
winningLevel
;
/**
* 物流单号
*/
private
String
logisticsNumber
;
public
static
MyLotteryVo
convert4LotteryParticipate
(
LotteryParticipate
participate
)
{
MyLotteryVo
vo
=
new
MyLotteryVo
();
vo
.
setId
(
participate
.
getId
());
vo
.
setActivityId
(
participate
.
getActivityId
());
vo
.
setUserId
(
participate
.
getUserId
());
vo
.
setLotteryStatus
(
participate
.
getLotteryStatus
());
vo
.
setLotteryTime
(
participate
.
getLotteryTime
());
vo
.
setTitle
(
participate
.
getTitle
());
MyLotteryVo
myLotteryVo
=
new
MyLotteryVo
();
if
(
myLotteryDto
==
null
){
}
myLotteryVo
.
setId
(
myLotteryDto
.
getId
());
myLotteryVo
.
setTitle
(
myLotteryDto
.
getTitle
());
myLotteryVo
.
setDescription
(
myLotteryDto
.
getDescription
());
myLotteryVo
.
setCoverImg
(
myLotteryDto
.
getCoverImg
());
myLotteryVo
.
setStartTime
(
myLotteryDto
.
getStartTime
());
myLotteryVo
.
setEndTime
(
myLotteryDto
.
getEndTime
());
myLotteryVo
.
setActivityId
(
myLotteryDto
.
getActivityId
());
myLotteryVo
.
setUserId
(
myLotteryDto
.
getUserId
());
myLotteryVo
.
setLotteryStatus
(
myLotteryDto
.
getLotteryStatus
());
myLotteryVo
.
setCoverImg
(
myLotteryDto
.
getCoverImg
());
return
myLotteryVo
;
return
vo
;
}
}
src/main/java/com/link/hub/service/officeAccount/WechatOfficeAccountService.java
浏览文件 @
86140a70
...
...
@@ -5,7 +5,7 @@ import com.link.hub.pojo.oa.dto.WechatOaUserDto;
import
java.util.List
;
public
interface
WechatOfficeAccountService
{
Boolean
i
sSubscribe
(
String
openid
);
Boolean
checkI
sSubscribe
(
String
openid
);
List
<
String
>
getUserList
(
String
nextOpenId
);
...
...
src/main/java/com/link/hub/service/officeAccount/impl/WechatOfficeAccountServiceServiceImpl.java
浏览文件 @
86140a70
...
...
@@ -14,6 +14,7 @@ import com.link.hub.service.officeAccount.WechatOfficeAccountService;
import
com.link.hub.service.officeAccount.WechatOfficialAccountUserService
;
import
com.link.hub.service.weChatMiniProgram.WechatMiniProgramUserService
;
import
com.link.hub.util.WeChatPlatFormUtils
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.redis.service.RedisService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
...
...
@@ -42,9 +43,13 @@ public class WechatOfficeAccountServiceServiceImpl implements WechatOfficeAccoun
private
WeChatOfficeAccountConfig
accountConfig
;
/**
* 检查用户是否关注公众号
* @param openid
* @return
*/
@Override
public
Boolean
i
sSubscribe
(
String
openid
)
{
public
Boolean
checkI
sSubscribe
(
String
openid
)
{
// 使用 openid openid查询小程序用户
WeChatMpUserDto
dto
=
new
WeChatMpUserDto
();
...
...
@@ -52,18 +57,20 @@ public class WechatOfficeAccountServiceServiceImpl implements WechatOfficeAccoun
WechatMiniProgramUser
user
=
miniProgramUserService
.
queryMiniProgramUserOne
(
dto
);
log
.
info
(
"unionid: {}"
,
user
);
// // 使用unionid查询微信公众号用户
if
(
user
==
null
||
user
.
getUnionid
()
==
null
)
{
log
.
error
(
"用户未关联小程序,openid: {}"
,
openid
);
throw
new
ServiceException
(
"小程序用户错误"
);
}
// 使用unionid查询微信公众号用户
WeChatOaUserQueryDto
oaUserDto
=
new
WeChatOaUserQueryDto
();
oaUserDto
.
setUnionid
(
user
.
getUnionid
());
WechatOfficialAccountUser
wechatOfficialAccountUser
=
oaUserService
.
selectOne
(
oaUserDto
);
if
(
wechatOfficialAccountUser
==
null
)
{
log
.
error
(
"用户还未关注公众号,openid: {},unionid: {}"
,
openid
,
user
.
getUnionid
());
// throw new ServiceException("用户还未关注公众号");
return
false
;
}
if
(
wechatOfficialAccountUser
.
getSubscribeStatus
()
==
0
){
log
.
error
(
"用户未关注公众号,状态是未关注,openid: {},unionid: {}"
,
openid
,
user
.
getUnionid
());
// throw new ServiceException("用户未关联公众号");
return
false
;
}
...
...
src/main/java/com/link/hub/service/officeAccount/impl/WechatOfficialAccountUserServiceImpl.java
浏览文件 @
86140a70
...
...
@@ -112,6 +112,9 @@ public class WechatOfficialAccountUserServiceImpl
@Override
public
WechatOfficialAccountUser
selectOne
(
WeChatOaUserQueryDto
oaUserDto
)
{
if
(
oaUserDto
==
null
||
(
oaUserDto
.
getOpenid
()
==
null
&&
oaUserDto
.
getUnionid
()
==
null
))
{
return
null
;
}
WeChatOaUserQueryWq
wq
=
new
WeChatOaUserQueryWq
();
wq
.
setUnionid
(
oaUserDto
.
getUnionid
());
...
...
src/main/java/com/link/hub/service/weChatMiniProgram/LotteryActivityService.java
浏览文件 @
86140a70
...
...
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryActivity
;
import
com.link.hub.pojo.mp.vo.LotteryVo
;
import
com.link.hub.pojo.mp.vo.MyLotteryVo
;
import
java.util.List
;
...
...
@@ -41,7 +40,7 @@ public interface LotteryActivityService extends IService<LotteryActivity> {
* @return 是否成功
*/
boolean
updateActivity
(
LotteryActivity
activity
);
List
<
LotteryActivity
>
queryActiveActivityList
(
Integer
status
);
List
<
LotteryActivity
>
queryActiveActivityList
();
List
<
LotteryVo
>
queryList
();
...
...
src/main/java/com/link/hub/service/weChatMiniProgram/LotteryParticipateService.java
浏览文件 @
86140a70
...
...
@@ -49,7 +49,7 @@ public interface LotteryParticipateService extends IService<LotteryParticipate>
List
<
MyLotteryVo
>
queryMyRecord
();
LotteryVo
queryLotteryInfo
(
Long
lotter
yId
);
LotteryVo
queryLotteryInfo
(
Long
activit
yId
);
List
<
LotteryVo
>
queryList
();
...
...
src/main/java/com/link/hub/service/weChatMiniProgram/LotteryWinningAddressService.java
浏览文件 @
86140a70
...
...
@@ -64,5 +64,5 @@ public interface LotteryWinningAddressService extends IService<LotteryWinningAdd
*/
LotteryWinningAddress
getDefaultAddress
(
Long
userId
);
LotteryWinningAddress
hasAddressFilled
(
Long
activityId
,
Long
userId
);
LotteryWinningAddress
selectAddressOne
(
Long
activityId
,
Long
userId
);
}
src/main/java/com/link/hub/service/weChatMiniProgram/LotteryWinningService.java
浏览文件 @
86140a70
...
...
@@ -55,4 +55,7 @@ public interface LotteryWinningService {
*/
boolean
claimPrize
(
Long
winningId
);
boolean
hasWinning
(
Long
activityId
,
Long
userId
);
LotteryWinning
selectWinningDetail
(
Long
activityId
,
Long
userId
);
}
src/main/java/com/link/hub/service/weChatMiniProgram/impl/LotteryActivityServiceImpl.java
浏览文件 @
86140a70
...
...
@@ -12,7 +12,6 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -30,8 +29,8 @@ public class LotteryActivityServiceImpl extends ServiceImpl<LotteryActivityMappe
LambdaQueryWrapper
<
LotteryActivity
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
LotteryActivity:
:
getDeleteFlag
,
0
)
.
eq
(
status
!=
null
,
LotteryActivity:
:
getStatus
,
status
)
.
ge
(
LotteryActivity:
:
getStartTime
,
new
Date
())
.
le
(
LotteryActivity:
:
getEndTime
,
new
Date
())
//
.ge(LotteryActivity::getStartTime, new Date())
//
.le(LotteryActivity::getEndTime, new Date())
.
orderByDesc
(
LotteryActivity:
:
getStartTime
);
return
lotteryActivityDao
.
selectPage
(
page
,
wrapper
);
}
...
...
@@ -63,14 +62,13 @@ public class LotteryActivityServiceImpl extends ServiceImpl<LotteryActivityMappe
/**
* 查询活动列表
* @param status
* @return
*/
@Override
public
List
<
LotteryActivity
>
queryActiveActivityList
(
Integer
status
)
{
public
List
<
LotteryActivity
>
queryActiveActivityList
()
{
// 小程序端查询列表
return
null
;
List
<
LotteryActivity
>
list
=
lotteryActivityDao
.
queryActiveActivityList
();
return
list
;
}
...
...
src/main/java/com/link/hub/service/weChatMiniProgram/impl/LotteryParticipateServiceImpl.java
浏览文件 @
86140a70
...
...
@@ -2,11 +2,9 @@ package com.link.hub.service.weChatMiniProgram.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.link.hub.domain.weChatMiniProgram.dao.LotteryParticipateDao
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryParticipate
;
import
com.link.hub.domain.weChatMiniProgram.entity.LotteryWinningAddress
;
import
com.link.hub.domain.weChatMiniProgram.entity.WechatMiniProgramUser
;
import
com.link.hub.domain.weChatMiniProgram.enums.SourceEnum
;
import
com.link.hub.domain.weChatMiniProgram.entity.*
;
import
com.link.hub.domain.weChatMiniProgram.mapper.LotteryParticipateMapper
;
import
com.link.hub.domain.weChatMiniProgram.wq.LotteryParticipateWq
;
import
com.link.hub.pojo.mp.bo.LotteryParticipateBo
;
import
com.link.hub.pojo.mp.bo.LotteryWinningAddresssBo
;
import
com.link.hub.pojo.mp.dto.LotteryDto
;
...
...
@@ -16,12 +14,8 @@ import com.link.hub.pojo.mp.vo.LotteryParticipateVo;
import
com.link.hub.pojo.mp.vo.LotteryVo
;
import
com.link.hub.pojo.mp.vo.MyLotteryVo
;
import
com.link.hub.service.officeAccount.WechatOfficeAccountService
;
import
com.link.hub.service.weChatMiniProgram.LotteryParticipateService
;
import
com.link.hub.service.weChatMiniProgram.LotteryWinningAddressService
;
import
com.link.hub.service.weChatMiniProgram.LotteryWinningService
;
import
com.link.hub.service.weChatMiniProgram.WechatMiniProgramUserService
;
import
com.link.hub.service.weChatMiniProgram.*
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.utils.bean.BeanUtils
;
import
com.sfa.common.security.utils.SecurityUtils
;
import
org.springframework.stereotype.Service
;
...
...
@@ -41,7 +35,9 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
@Resource
private
LotteryWinningService
lotteryWinningService
;
@Resource
private
LotteryWinningAddressService
addressService
;
private
LotteryActivityService
activityService
;
@Resource
private
LotteryWinningAddressService
addressService
;
@Resource
private
WechatMiniProgramUserService
wechatMiniProgramUserService
;
...
...
@@ -60,7 +56,7 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
throw
new
ServiceException
(
"用户不存在"
);
}
String
openid
=
wechatMiniProgramUser
.
getOpenid
();
if
(!
checkIsSubscribe
(
openid
))
{
if
(!
wechatOfficeAccountService
.
checkIsSubscribe
(
openid
))
{
throw
new
IllegalArgumentException
(
"用户未关注公众号"
);
}
...
...
@@ -70,10 +66,19 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
if
(
lotteryParticipateDao
.
hasParticipated
(
activityId
,
userId
))
{
throw
new
IllegalArgumentException
(
"用户已参与抽奖"
);
}
// 查询活动信息
LotteryActivity
lotteryActivity
=
activityService
.
getById
(
activityId
);
if
(
lotteryActivity
==
null
)
{
throw
new
ServiceException
(
"抽奖活动不存在"
);
}
if
(
lotteryActivity
.
getStatus
()
!=
1
)
{
throw
new
IllegalArgumentException
(
"抽奖活动已结束"
);
}
participateBo
.
setLotteryTime
(
lotteryActivity
.
getLotteryTime
());
participateBo
.
setTitle
(
lotteryActivity
.
getTitle
());
// 2. 创建参与记录
LotteryParticipateDto
dto
=
LotteryParticipateDto
.
create
(
participateBo
);
LotteryParticipateDto
dto
=
LotteryParticipateDto
.
convert
(
participateBo
);
// 3. 保存记录(插入数据库)
LotteryParticipate
lotteryParticipate
=
lotteryParticipateDao
.
saveParticipate
(
dto
);
return
lotteryParticipate
;
...
...
@@ -87,12 +92,14 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
@Override
public
List
<
LotteryParticipateVo
>
getUserParticipateList
(
Long
userId
)
{
// 实现查询逻辑,获取用户参与记录 需要根据实际情况添加查询条件
List
<
LotteryParticipate
>
participates
=
list
();
LotteryParticipateWq
wq
=
new
LotteryParticipateWq
();
wq
.
setUserId
(
userId
);
wq
.
setDeleteFlag
(
0
);
List
<
LotteryParticipate
>
participates
=
lotteryParticipateDao
.
queryList
(
wq
);
List
<
LotteryParticipateVo
>
vos
=
participates
.
stream
()
.
map
(
participate
->
{
LotteryParticipateVo
vo
=
BeanUtils
.
transitionDto
(
participate
,
LotteryParticipateVo
.
class
);
vo
.
setSourceName
(
SourceEnum
.
getSourceName
(
participate
.
getSource
()));
LotteryParticipateVo
vo
=
LotteryParticipateVo
.
convert
(
participate
);
return
vo
;
}).
collect
(
Collectors
.
toList
());
return
vos
;
...
...
@@ -102,43 +109,54 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
public
int
getUserParticipateCount
(
Long
userId
)
{
return
lotteryParticipateDao
.
getUserParticipateCount
(
userId
);
}
/**
* 用户参与活动(核心业务逻辑)
*/
private
boolean
checkIsSubscribe
(
String
openid
)
{
// 实现逻辑,检查用户是否已关注公众号
wechatOfficeAccountService
.
isSubscribe
(
openid
);
return
true
;
}
@Override
public
List
<
MyLotteryVo
>
queryMyRecord
()
{
return
null
;
Long
userId
=
SecurityUtils
.
getUserId
();
// 查询中奖信息
LotteryParticipateWq
wq
=
new
LotteryParticipateWq
();
wq
.
setUserId
(
userId
);
List
<
LotteryParticipate
>
participates
=
lotteryParticipateDao
.
queryList
(
wq
);
List
<
MyLotteryVo
>
vos
=
participates
.
stream
()
.
map
(
participate
->
{
MyLotteryVo
vo
=
MyLotteryVo
.
convert4LotteryParticipate
(
participate
);
// 中奖的话,物流单号查询
if
(
participate
.
getLotteryStatus
()
>
3
)
{
LotteryWinningAddress
address
=
addressService
.
selectAddressOne
(
participate
.
getActivityId
(),
userId
);
vo
.
setLogisticsNumber
(
address
.
getLogisticsNumber
());
}
// 中奖的话,查询奖品
if
(
participate
.
getLotteryStatus
()
>
3
)
{
LotteryWinning
lotteryWinning
=
lotteryWinningService
.
selectWinningDetail
(
participate
.
getActivityId
(),
userId
);
vo
.
setLotteryPrizeName
(
lotteryWinning
.
getPrizeName
());
vo
.
setLotteryPrizeImg
(
lotteryWinning
.
getPrizeImg
());
vo
.
setWinningLevel
(
lotteryWinning
.
getWinningLevel
());
}
return
vo
;
}).
collect
(
Collectors
.
toList
());
return
vos
;
}
/**
* 查询我的抽奖信息
* 查询我的抽奖信息
*
* @return
*/
@Override
public
LotteryVo
queryLotteryInfo
(
Long
lotter
yId
)
{
public
LotteryVo
queryLotteryInfo
(
Long
activit
yId
)
{
// 查询中奖信息
LotteryDto
myLotteryDto
=
lotteryParticipateDao
.
queryLotteryInfo
(
lotteryId
);
Long
userId
=
SecurityUtils
.
getUserId
();
LotteryDto
dto
=
new
LotteryDto
();
dto
.
setActivityId
(
activityId
);
dto
.
setUserId
(
userId
);
LotteryDto
myLotteryDto
=
lotteryParticipateDao
.
queryLotteryInfo
(
dto
);
LotteryVo
myLotteryVo
=
null
;
if
(
myLotteryDto
!=
null
)
{
// 查询活动信息
// 查询奖品信息
return
myLotteryVo
;
}
else
{
myLotteryVo
=
LotteryVo
.
convertNoParticipate
();
...
...
@@ -159,23 +177,36 @@ public class LotteryParticipateServiceImpl extends ServiceImpl<LotteryParticipat
*/
@Override
public
LotteryWinningAddress
participateLotteryAddress
(
LotteryWinningAddresssBo
lotteryParticipateBo
)
{
// 1、校验用户是否已中奖
if
(!
lotteryParticipateDao
.
hasWinning
(
lotteryParticipateBo
.
getActivityId
(),
lotteryParticipateBo
.
getUserId
()))
{
Long
userId
=
SecurityUtils
.
getUserId
();
// 1、校验用户是否参与抽奖
if
(!
lotteryParticipateDao
.
hasParticipated
(
lotteryParticipateBo
.
getActivityId
(),
userId
))
{
// 用户未参与抽奖
throw
new
IllegalArgumentException
(
"用户未参与抽奖"
);
}
// 2、校验用户是否已中奖
if
(!
lotteryWinningService
.
hasWinning
(
lotteryParticipateBo
.
getActivityId
(),
userId
))
{
// 用户未中奖
throw
new
IllegalArgumentException
(
"用户未中奖"
);
}
LotteryWinningAddress
lotteryWinningAddress
=
addressService
.
hasAddressFilled
(
lotteryParticipateBo
.
getActivityId
(),
lotteryParticipateBo
.
getUserId
());
// 1. 校验是否已填写地址
// if (ObjectUtil.isNotEmpty(lotteryWinningAddress)) {
// throw new IllegalArgumentException("用户已填写抽奖地址");
// }
lotteryParticipateBo
.
setId
(
lotteryWinningAddress
.
getId
());
// 填写抽奖地址信息
LotteryWinningAddress
address
=
LotteryWinningAddress
.
create
(
lotteryParticipateBo
);
addressService
.
saveOrUpdateAddress
(
address
);
return
address
;
// 查询中奖信息
LotteryWinning
lotteryWinning
=
lotteryWinningService
.
selectWinningDetail
(
lotteryParticipateBo
.
getActivityId
(),
userId
);
if
(
lotteryWinning
.
getLogisticsNumber
()
!=
null
)
{
// 用户未中奖
throw
new
IllegalArgumentException
(
"已发货,请联系客服"
);
}
LotteryWinningAddress
lotteryWinningAddress
=
addressService
.
selectAddressOne
(
lotteryParticipateBo
.
getActivityId
(),
userId
);
// 1. 校验是否已填写地址 填写 修改地址 未填写 新增地址
if
(
lotteryWinningAddress
!=
null
&&
lotteryWinningAddress
.
getId
()
!=
null
)
{
// 修改地址
lotteryParticipateBo
.
setId
(
lotteryWinningAddress
.
getId
());
}
lotteryWinningAddress
=
LotteryWinningAddress
.
create
(
lotteryParticipateBo
);
lotteryWinningAddress
.
setWinningId
(
lotteryWinning
.
getId
());
lotteryWinningAddress
.
setUserId
(
userId
);
addressService
.
saveOrUpdateAddress
(
lotteryWinningAddress
);
return
lotteryWinningAddress
;
}
@Override
...
...
src/main/java/com/link/hub/service/weChatMiniProgram/impl/LotteryWinningAddressServiceImpl.java
浏览文件 @
86140a70
...
...
@@ -41,16 +41,8 @@ public class LotteryWinningAddressServiceImpl extends ServiceImpl<LotteryWinning
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
saveOrUpdateAddress
(
LotteryWinningAddress
address
)
{
if
(
address
.
getId
()
==
null
)
{
// 新增地址时,如果是默认地址,则取消其他默认地址
// if (address.getIsDefault() != null && address.getIsDefault() == 1) {
// cancelOtherDefaultAddresses(address.getUserId());
// }
return
lotteryWinningAddressDao
.
saveAddress
(
address
);
}
else
{
// 更新地址时,如果是设置为默认地址,则取消其他默认地址
// if (address.getIsDefault() != null && address.getIsDefault() == 1) {
// cancelOtherDefaultAddresses(address.getUserId());
// }
return
lotteryWinningAddressDao
.
updateAddress
(
address
);
}
}
...
...
@@ -69,9 +61,6 @@ public class LotteryWinningAddressServiceImpl extends ServiceImpl<LotteryWinning
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
setDefaultAddress
(
Long
userId
,
Long
addressId
)
{
// 先取消该用户的所有默认地址
cancelOtherDefaultAddresses
(
userId
);
// 设置指定地址为默认地址
LotteryWinningAddress
address
=
new
LotteryWinningAddress
();
address
.
setId
(
addressId
);
...
...
@@ -85,7 +74,7 @@ public class LotteryWinningAddressServiceImpl extends ServiceImpl<LotteryWinning
}
@Override
public
LotteryWinningAddress
hasAddressFilled
(
Long
activityId
,
Long
userId
)
{
public
LotteryWinningAddress
selectAddressOne
(
Long
activityId
,
Long
userId
)
{
LotteryWinningAddressWq
wq
=
new
LotteryWinningAddressWq
();
wq
.
setActivityId
(
activityId
);
wq
.
setUserId
(
userId
);
...
...
@@ -93,13 +82,5 @@ public class LotteryWinningAddressServiceImpl extends ServiceImpl<LotteryWinning
return
address
;
}
/**
* 取消用户其他默认地址
* @param userId 用户ID
*/
private
void
cancelOtherDefaultAddresses
(
Long
userId
)
{
// 这里应该通过DAO更新数据库中的其他地址为非默认状态
// 实现细节根据具体业务需求确定
}
}
src/main/java/com/link/hub/service/weChatMiniProgram/impl/LotteryWinningServiceImpl.java
浏览文件 @
86140a70
...
...
@@ -110,4 +110,14 @@ public class LotteryWinningServiceImpl implements LotteryWinningService {
winning
.
setReceiveTime
(
LocalDateTime
.
now
());
return
lotteryWinningDao
.
updateById
(
winning
)
>
0
;
}
@Override
public
boolean
hasWinning
(
Long
activityId
,
Long
userId
)
{
return
lotteryWinningDao
.
hasWinning
(
activityId
,
userId
);
}
@Override
public
LotteryWinning
selectWinningDetail
(
Long
activityId
,
Long
userId
)
{
return
lotteryWinningDao
.
getWinningDetail
(
activityId
,
userId
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论