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