From e187e18fc4fd2f120b67a9fdba4d9d2864f293fb Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 24 Apr 2025 18:05:30 +0800
Subject: [PATCH] feat(mall): 添加投票活动排行榜功能并优化相关接口

---
 src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java            |    3 +
 src/main/java/cc/mrbird/febs/mall/vo/activity/ApiVoteActivityHotVo.java               |   10 -----
 src/main/resources/mapper/modules/HappyActivityOptionMapper.xml                       |   44 ++++++++++++++++++++--
 src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java          |   12 ++++-
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java     |    2 
 src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java                   |    3 +
 src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionRecordInPageDto.java      |   28 ++++++++++++++
 src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java                     |    3 +
 src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityController.java |   13 ++++++
 9 files changed, 99 insertions(+), 19 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityController.java b/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityController.java
index 73f3936..a33b9e2 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityController.java
@@ -4,6 +4,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto;
+import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionRecordInPageDto;
 import cc.mrbird.febs.mall.service.HappyActivityService;
 import cc.mrbird.febs.mall.vo.*;
 import cc.mrbird.febs.mall.vo.activity.ApiVoteActivityHotVo;
@@ -58,12 +59,22 @@
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = ApiActivityOptionListVo.class)
     })
-    @GetMapping(value = "/voteOptionInPage")
+    @PostMapping(value = "/voteOptionInPage")
     public FebsResponse voteOptionInPage(@RequestBody @Validated ApiVoteOptionInPageDto dto) {
 
         return happyActivityService.voteOptionInPage(dto);
     }
 
+    @ApiOperation(value = "投票活动-排行榜", notes = "投票活动-排行榜")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiActivityOptionListVo.class)
+    })
+    @PostMapping(value = "/voteOptionRecordInPage")
+    public FebsResponse voteOptionRecordInPage(@RequestBody @Validated ApiVoteOptionRecordInPageDto dto) {
+
+        return happyActivityService.voteOptionRecordInPage(dto);
+    }
+
     @ApiOperation(value = "投票活动-活动热度", notes = "投票活动-活动热度")
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = ApiVoteActivityHotVo.class)
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java
index 21938ef..a6f49f2 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java
@@ -21,4 +21,7 @@
     @NotNull(message = "活动ID不能为空")
     @ApiModelProperty(value = "活动ID")
     private Long activityId;
+
+    @ApiModelProperty(value = "搜索条件")
+    private String query;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionRecordInPageDto.java b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionRecordInPageDto.java
new file mode 100644
index 0000000..c787250
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionRecordInPageDto.java
@@ -0,0 +1,28 @@
+package cc.mrbird.febs.mall.dto.activity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiVoteOptionRecordInPageDto", description = "参数")
+public class ApiVoteOptionRecordInPageDto {
+
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @NotNull(message = "活动ID不能为空")
+    @ApiModelProperty(value = "活动ID")
+    private Long activityId;
+
+    @ApiModelProperty(value = "搜索条件")
+    private String query;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java
index cd9e132..123c059 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.mall.dto.activity.AdminHappyActivityOrderDto;
 import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto;
+import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionRecordInPageDto;
 import cc.mrbird.febs.mall.entity.HappyActivity;
 import cc.mrbird.febs.mall.dto.ApiActivityInfoDto;
 import cc.mrbird.febs.mall.entity.HappyActivityOrder;
@@ -24,4 +25,6 @@
     Page<ApiActivityOptionListVo> getVoteOptionInPage(Page<ApiActivityOptionListVo> page, @Param("record")ApiVoteOptionInPageDto dto);
 
     Page<HappyActivityOrder> selectOrderInPage(Page<HappyActivityOrder> page, @Param("record")AdminHappyActivityOrderDto dto);
+
+    Page<ApiActivityOptionListVo> getVoteOptionRecordInPage(Page<ApiActivityOptionListVo> page, ApiVoteOptionRecordInPageDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java b/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
index 72bff4a..c4e5e2e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java
@@ -5,6 +5,7 @@
 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.entity.HappyActivity;
 import cc.mrbird.febs.mall.dto.ApiOperateDoDto;
 import cc.mrbird.febs.mall.dto.ApiOperateVoteDto;
@@ -19,6 +20,8 @@
 
     FebsResponse voteOptionInPage(ApiVoteOptionInPageDto dto);
 
+    FebsResponse voteOptionRecordInPage(ApiVoteOptionRecordInPageDto dto);
+
     FebsResponse voteActivityHot(Long id);
 
     FebsResponse voteOption(Long id);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
index dbff9d8..e1dddd9 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminHappyActivityServiceImpl.java
@@ -380,7 +380,7 @@
             );
             if(CollUtil.isNotEmpty(happyActivityOrderItems)){
                 happyActivityOrderItems.forEach(happyActivityOrderItem -> {
-                    happyActivityOrderItem.setState(StateUpDownEnum.ORDER_STATE_USED.getCode());
+                    happyActivityOrderItem.setState(StateUpDownEnum.UP.getCode());
                     happyActivityOrderItemMapper.updateById(happyActivityOrderItem);
                 });
             }
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 d84f1e8..f42ac00 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
@@ -10,6 +10,7 @@
 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.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.HappyActivityService;
@@ -149,6 +150,14 @@
         // 创建分页对象,传入当前页和每页大小
         Page<ApiActivityOptionListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
         Page<ApiActivityOptionListVo> voteRecordInPage = this.baseMapper.getVoteOptionInPage(page, dto);
+        return new FebsResponse().success().data(voteRecordInPage);
+    }
+
+    @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);
     }
 
@@ -850,9 +859,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>()
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiVoteActivityHotVo.java b/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiVoteActivityHotVo.java
index 2151316..0385093 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiVoteActivityHotVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiVoteActivityHotVo.java
@@ -17,14 +17,4 @@
     @ApiModelProperty(value = "累计总票数")
     private Integer followVoteCnt;
 
-    @ApiModelProperty(value = "活动开始时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date startTime;
-
-
-    @ApiModelProperty(value = "活动结束时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date endTime;
-
-
 }
diff --git a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
index dd13bc2..5a464a5 100644
--- a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
+++ b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml
@@ -56,10 +56,20 @@
             a.image as image,
             a.likes_cnt as likesCnt
         from happy_activity_option a
-        where
-            a.state = 1
-          and a.activity_id = #{record.activityId}
-          and a.DELETE_FLAG = 1
+        <where>
+            and a.state = 1
+            and a.activity_id = #{record.activityId}
+            and a.DELETE_FLAG = 0
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    a.name like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    or
+                    a.order_cnt = #{record.query}
+                    )
+                </if>
+            </if>
+        </where>
         order by a.order_cnt asc
     </select>
 
@@ -88,4 +98,30 @@
         order by a.id desc
     </select>
 
+
+
+    <select id="getVoteOptionRecordInPage" resultType="cc.mrbird.febs.mall.vo.ApiActivityOptionListVo">
+        select
+        a.id as id,
+        a.option_name as optionName,
+        a.image as image,
+        a.likes_cnt as likesCnt
+        from happy_activity_option a
+        <where>
+            and a.state = 1
+            and a.activity_id = #{record.activityId}
+            and a.DELETE_FLAG = 0
+            <if test="record != null">
+                <if test="record.query != null and record.query != ''">
+                    and (
+                    a.name like CONCAT('%', CONCAT(#{record.query}, '%'))
+                    or
+                    a.order_cnt = #{record.query}
+                    )
+                </if>
+            </if>
+        </where>
+        order by a.likes_cnt desc
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1