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