From 7966b494ddea2c27ecec6ed031521cb889ab19f5 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 25 Apr 2025 15:18:19 +0800
Subject: [PATCH] feat(mall): 增加会员列表核销员设置功能并优化相关页面
---
src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 91 +++++++++++++++++++++++++++++++++++++++++----
1 files changed, 82 insertions(+), 9 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
index d61a600..531879d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java
@@ -7,9 +7,7 @@
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.ShareCodeUtil;
import cc.mrbird.febs.mall.dto.*;
-import cc.mrbird.febs.mall.dto.activity.ApiActivityOrderListDto;
-import cc.mrbird.febs.mall.dto.activity.ApiCheckOrderDto;
-import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto;
+import cc.mrbird.febs.mall.dto.activity.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.HappyActivityService;
@@ -79,7 +77,6 @@
// 查询关注点赞转发记录,筛选出关注活动类型且未删除的关注记录,并按ID升序排序,限制结果数量为3
List<HappyFollow> happyFollows = happyFollowMapper.selectList(
new LambdaQueryWrapper<HappyFollow>()
- .select(HappyFollow::getMemberId)
.eq(HappyFollow::getSourceType, StateUpDownEnum.SOURCE_TYPE_ACTIVITY.getCode())
.in(HappyFollow::getSourceId, ids)
.eq(HappyFollow::getDeleteFlag, StateUpDownEnum.DOWN.getCode())
@@ -153,6 +150,14 @@
}
@Override
+ public FebsResponse voteOptionRecordInPage(ApiVoteOptionRecordInPageDto dto) {
+ // 创建分页对象,传入当前页和每页大小
+ Page<ApiActivityOptionListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+ Page<ApiActivityOptionListVo> voteRecordInPage = this.baseMapper.getVoteOptionRecordInPage(page, dto);
+ return new FebsResponse().success().data(voteRecordInPage);
+ }
+
+ @Override
public FebsResponse voteOption(Long id) {
ApiActivityOptionVo apiActivityOptionVo = new ApiActivityOptionVo();
@@ -160,6 +165,44 @@
if(happyActivityOption != null){
BeanUtil.copyProperties(happyActivityOption, apiActivityOptionVo);
}
+
+ //投票人数
+ List<HappyFollow> happyFollows = happyFollowMapper.selectList(
+ new LambdaQueryWrapper<HappyFollow>()
+ .select(HappyFollow::getId)
+ .eq(HappyFollow::getSourceOptionId, id)
+ .eq(HappyFollow::getType, StateUpDownEnum.VOTE.getCode())
+ .eq(HappyFollow::getDeleteFlag, StateUpDownEnum.DOWN.getCode())
+ .groupBy(HappyFollow::getMemberId)
+ );
+ apiActivityOptionVo.setVoteCnt(CollUtil.isNotEmpty(happyFollows) ? happyFollows.size() : 0);
+
+ List<HappyActivityOption> happyActivityOptions = happyActivityOptionMapper.selectList(
+ new LambdaQueryWrapper<HappyActivityOption>()
+ .select(HappyActivityOption::getId,HappyActivityOption::getLikesCnt)
+ .eq(HappyActivityOption::getActivityId, happyActivityOption.getActivityId())
+ .eq(HappyActivityOption::getDeleteFlag, StateUpDownEnum.DOWN.getCode())
+ .eq(HappyActivityOption::getState, StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_SUCCESS.getCode())
+ .orderByDesc(HappyActivityOption::getLikesCnt)
+ );
+ //获取上一个名次的数据
+ int firstCnt = 1;
+ int distanceCnt = 0;
+ for (HappyActivityOption option : happyActivityOptions){
+ if(option.getId().equals(id)){
+ apiActivityOptionVo.setFirstCnt(firstCnt);
+ if( firstCnt == 1 ){
+ apiActivityOptionVo.setDistanceCnt(distanceCnt);
+ }else{
+ apiActivityOptionVo.setDistanceCnt(distanceCnt- option.getLikesCnt());
+ }
+ break;
+ }else{
+ firstCnt = firstCnt + 1;
+ distanceCnt = option.getLikesCnt();
+ }
+ }
+
return new FebsResponse().success().data(apiActivityOptionVo);
}
@@ -254,7 +297,6 @@
new LambdaQueryWrapper<HappyFollow>()
.eq(HappyFollow::getMemberId, memberId)
.eq(HappyFollow::getSourceId, sourceId)
- .eq(HappyFollow::getSourceOptionId, sourceOptionId)
.eq(HappyFollow::getType, type)
.gt(HappyFollow::getCreatedTime, DateUtil.beginOfDay(new Date()))
);
@@ -276,7 +318,7 @@
if(CollUtil.isNotEmpty(records)){
//stream流操作records,获取全部的memberId(全部投票人)
Set<Long> memberIds = records.stream().map(ApiVoteRecordInPageVo::getMemberId).collect(Collectors.toSet());
- if(CollUtil.isEmpty(memberIds)){
+ if(CollUtil.isNotEmpty(memberIds)){
List<MallMember> mallMembers = mallMemberMapper.selectList(
new LambdaQueryWrapper<MallMember>()
.select(MallMember::getId, MallMember::getName, MallMember::getAvatar)
@@ -295,6 +337,31 @@
return new FebsResponse().success().data(voteRecordInPage);
+ }
+
+ @Override
+ public FebsResponse operateValidRegister(ApiOperateValidRegisterActivityDto dto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ HappyActivity happyActivity = this.baseMapper.selectById(dto.getActivityId());
+
+ if (StateUpDownEnum.ACTIVITY_STATE_END.getCode() == happyActivity.getState()) {
+ throw new FebsException("活动已结束");
+ }
+ if (StateUpDownEnum.DOWN.getCode() == happyActivity.getAddState()) {
+ throw new FebsException("活动尚未开启报名");
+ }
+ //判断用户是否重复报名
+ Integer registerCnt = happyActivityOptionMapper.selectCount(
+ new LambdaQueryWrapper<HappyActivityOption>()
+ .eq(HappyActivityOption::getMemberId, memberId)
+ .eq(HappyActivityOption::getActivityId, dto.getActivityId())
+ .ne(HappyActivityOption::getState, StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_REFUSE.getCode())
+ .eq(HappyActivityOption::getDeleteFlag, StateUpDownEnum.DOWN.getCode())
+ );
+ if (registerCnt > 0) {
+ throw new FebsException("您已经报名过了");
+ }
+ return new FebsResponse().success();
}
@Override
@@ -416,6 +483,12 @@
HappyActivity happyActivity = this.baseMapper.selectById(activityId);
if (ObjectUtil.isEmpty(happyActivity)) {
throw new FebsException("活动不存在");
+ }
+ if (StateUpDownEnum.ACTIVITY_STATE_NOT_START.getCode() == happyActivity.getState()) {
+ throw new FebsException("活动尚未开始");
+ }
+ if (StateUpDownEnum.ACTIVITY_STATE_END.getCode() == happyActivity.getState()) {
+ throw new FebsException("活动已结束");
}
Integer joinCnt = happyActivity.getJoinCnt();
@@ -834,6 +907,9 @@
if(0 == integer){
// 根据订单ID查询订单信息
HappyActivityOrder happyActivityOrder = happyActivityOrderMapper.selectById(orderId);
+ if(happyActivityOrder == null){
+ return;
+ }
// 更新订单状态为"已使用"
happyActivityOrder.setState(StateUpDownEnum.ORDER_STATE_USED.getCode());
// 保存更新后的订单信息
@@ -847,9 +923,6 @@
public FebsResponse voteActivityHot(Long id) {
ApiVoteActivityHotVo apiVoteActivityHotVo = new ApiVoteActivityHotVo();
- HappyActivity happyActivity = this.baseMapper.selectById(id);
- apiVoteActivityHotVo.setStartTime(happyActivity.getStartTime());
- apiVoteActivityHotVo.setEndTime(happyActivity.getEndTime());
Integer optionCnt = happyActivityOptionMapper.selectCount(
new LambdaQueryWrapper<HappyActivityOption>()
--
Gitblit v1.9.1