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 |   72 ++++++++++++++++++++++++++++++++---
 1 files changed, 65 insertions(+), 7 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 13ca39c..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,10 +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.ApiVoteOptionRecordInPageDto;
+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;
@@ -80,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())
@@ -169,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);
     }
 
@@ -263,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()))
         );
@@ -285,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)
@@ -307,6 +340,31 @@
     }
 
     @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
     public FebsResponse operateRegister(ApiOperateRegisterActivityDto dto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
 

--
Gitblit v1.9.1