From 2f67dbf8e585cbff4ed5737c08d0b0061e8b4d50 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 23 Apr 2025 17:50:20 +0800 Subject: [PATCH] refactor(mall): 重构投票活动相关接口和数据结构 --- src/main/java/cc/mrbird/febs/mall/controller/activity/ViewHappyActivityController.java | 7 -- src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java | 24 ++++++++ src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCategoryInfoVo.java | 2 src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityCategoryController.java | 2 src/main/resources/mapper/modules/HappyActivityOptionMapper.xml | 19 ++++++ src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityServiceImpl.java | 45 +++----------- src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java | 14 +--- src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java | 3 src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java | 8 ++ src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityController.java | 7 +- src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java | 7 - 12 files changed, 74 insertions(+), 66 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityCategoryController.java b/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityCategoryController.java index 60eb729..347d96b 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityCategoryController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/activity/ApiHappyActivityCategoryController.java @@ -2,7 +2,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.service.HappyActivityCategoryService; -import cc.mrbird.febs.mall.vo.ApiCategoryInfoVo; +import cc.mrbird.febs.mall.vo.activity.ApiCategoryInfoVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; 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 72ed54a..85fd0bf 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 @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.annotation.Limit; 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.service.HappyActivityService; import cc.mrbird.febs.mall.vo.*; import io.swagger.annotations.Api; @@ -56,10 +57,10 @@ @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiActivityOptionListVo.class) }) - @GetMapping(value = "/voteOptionList/{id}") - public FebsResponse voteOptionList(@PathVariable("id") Long id) { + @GetMapping(value = "/voteOptionInPage") + public FebsResponse voteOptionInPage(@RequestBody @Validated ApiVoteOptionInPageDto dto) { - return happyActivityService.voteOptionList(id); + return happyActivityService.voteOptionInPage(dto); } @ApiOperation(value = "投票活动-选项详情", notes = "投票活动-选项详情") diff --git a/src/main/java/cc/mrbird/febs/mall/controller/activity/ViewHappyActivityController.java b/src/main/java/cc/mrbird/febs/mall/controller/activity/ViewHappyActivityController.java index 7e467c5..97a1e8d 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/activity/ViewHappyActivityController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/activity/ViewHappyActivityController.java @@ -2,8 +2,6 @@ import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsConstant; -import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.entity.HappyActivity; @@ -12,19 +10,14 @@ import cc.mrbird.febs.mall.mapper.HappyActivityCategoryMapper; import cc.mrbird.febs.mall.mapper.HappyActivityOptionMapper; import cc.mrbird.febs.mall.service.IAdminHappyActivityService; -import cc.mrbird.febs.mall.vo.activity.VoteActivityVo; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; - -import java.util.Map; @Controller("votesActivityView") @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/votesActivity") 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 new file mode 100644 index 0000000..21938ef --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java @@ -0,0 +1,24 @@ +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 = "ApiVoteOptionInPageDto", description = "参数") +public class ApiVoteOptionInPageDto { + + + @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; +} 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 440c582..d968a9f 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/HappyActivityMapper.java @@ -1,9 +1,11 @@ package cc.mrbird.febs.mall.mapper; +import cc.mrbird.febs.mall.dto.activity.ApiVoteOptionInPageDto; import cc.mrbird.febs.mall.entity.HappyActivity; import cc.mrbird.febs.mall.dto.ApiActivityInfoDto; import cc.mrbird.febs.mall.vo.ApiActivityInfoVo; import cc.mrbird.febs.mall.dto.ApiVoteRecordInPageDto; +import cc.mrbird.febs.mall.vo.ApiActivityOptionListVo; import cc.mrbird.febs.mall.vo.ApiVoteRecordInPageVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -13,5 +15,9 @@ Page<ApiActivityInfoVo> selectActivityPage(Page<ApiActivityInfoVo> page, @Param("record")ApiActivityInfoDto dto); - Page<ApiVoteRecordInPageVo> getVoteRecordInPage(Page<ApiActivityInfoVo> page, @Param("record")ApiVoteRecordInPageDto dto); + Page<ApiVoteRecordInPageVo> getVoteRecordInPage(Page<ApiVoteRecordInPageVo> page, @Param("record")ApiVoteRecordInPageDto dto); + + void updateHappyActivityOptionLikeCnt(@Param("id")Long sourceOptionId); + + Page<ApiActivityOptionListVo> getVoteOptionInPage(Page<ApiActivityOptionListVo> page, @Param("record")ApiVoteOptionInPageDto 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 0460af0..d7a6612 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/HappyActivityService.java @@ -2,6 +2,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.entity.HappyActivity; import cc.mrbird.febs.mall.dto.ApiOperateDoDto; import cc.mrbird.febs.mall.dto.ApiOperateVoteDto; @@ -14,7 +15,7 @@ FebsResponse activityInfo(ApiActivityDto dto); - FebsResponse voteOptionList(Long id); + FebsResponse voteOptionInPage(ApiVoteOptionInPageDto dto); FebsResponse voteOption(Long id); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java index 13e5f6f..d7cd306 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/HappyActivityCategoryServiceImpl.java @@ -5,7 +5,7 @@ import cc.mrbird.febs.mall.entity.HappyActivityCategory; import cc.mrbird.febs.mall.mapper.HappyActivityCategoryMapper; import cc.mrbird.febs.mall.service.HappyActivityCategoryService; -import cc.mrbird.febs.mall.vo.ApiCategoryInfoVo; +import cc.mrbird.febs.mall.vo.activity.ApiCategoryInfoVo; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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 773d5c5..a0df434 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,6 +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.ApiVoteOptionInPageDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.HappyActivityService; @@ -134,37 +135,11 @@ } @Override - public FebsResponse voteOptionList(Long id) { - ArrayList<ApiActivityOptionListVo> apiActivityOptionListVos = new ArrayList<>(); - - - HappyActivity happyActivity = this.baseMapper.selectById(id); - if(StateUpDownEnum.ACTIVITY_TYPE_VOTE.getCode() != happyActivity.getType()){ - throw new FebsException("投票活动才可获取投票选项"); - } - - List<HappyActivityOption> happyActivityOptions = happyActivityOptionMapper.selectList( - new LambdaQueryWrapper<HappyActivityOption>() - .select( - HappyActivityOption::getId, - HappyActivityOption::getOptionName, - HappyActivityOption::getRank, - HappyActivityOption::getLikesCnt, - HappyActivityOption::getImage - ) - .eq(HappyActivityOption::getActivityId,id) - .eq(HappyActivityOption::getState,StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_SUCCESS.getCode()) - .eq(HappyActivityOption::getDeleteFlag,StateUpDownEnum.DOWN.getCode()) - .orderByAsc(HappyActivityOption::getRank) - ); - if(CollUtil.isNotEmpty(happyActivityOptions)){ - happyActivityOptions.forEach(option -> { - ApiActivityOptionListVo apiActivityOptionListVo = new ApiActivityOptionListVo(); - BeanUtil.copyProperties(option, apiActivityOptionListVo); - apiActivityOptionListVos.add(apiActivityOptionListVo); - }); - } - return new FebsResponse().success().data(apiActivityOptionListVos); + public FebsResponse voteOptionInPage(ApiVoteOptionInPageDto dto) { + // 创建分页对象,传入当前页和每页大小 + Page<ApiActivityOptionListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiActivityOptionListVo> voteRecordInPage = this.baseMapper.getVoteOptionInPage(page, dto); + return new FebsResponse().success().data(voteRecordInPage); } @Override @@ -252,7 +227,7 @@ } HappyActivityOption happyActivityOption = happyActivityOptionMapper.selectById(sourceOptionId); - if (happyActivityOption == null) { + if (null == happyActivityOption) { throw new FebsException("投票对象不存在"); } if (StateUpDownEnum.VOTE_OPTION_STATE_AUDIT_SUCCESS.getCode() != happyActivityOption.getState()) { @@ -268,17 +243,17 @@ .gt(HappyFollow::getCreatedTime, DateUtil.beginOfDay(new Date())) ); if (CollUtil.isNotEmpty(happyFollows) && happyFollows.size() >= happyActivity.getVoteCnt()){ - throw new FebsException("今日已经投票"); + throw new FebsException("今日已经投完票"); } + this.baseMapper.updateHappyActivityOptionLikeCnt(sourceOptionId); this.operateDoVote(memberId, sourceType, sourceId, sourceOptionId, type); - this.addLikeCnt(sourceOptionId); return new FebsResponse().success(); } @Override public FebsResponse voteRecordInPage(ApiVoteRecordInPageDto dto) { // 创建分页对象,传入当前页和每页大小 - Page<ApiActivityInfoVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiVoteRecordInPageVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); Page<ApiVoteRecordInPageVo> voteRecordInPage = this.baseMapper.getVoteRecordInPage(page, dto); List<ApiVoteRecordInPageVo> records = voteRecordInPage.getRecords(); diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java index fa07419..3e296ba 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionListVo.java @@ -14,13 +14,10 @@ @ApiModelProperty(value = "选项名称") private String optionName; - @ApiModelProperty(value = "排名") - private Integer rank; - - @ApiModelProperty(value = "点赞数量") + @ApiModelProperty(value = "投票数量") private Integer likesCnt; - @ApiModelProperty(value = "投票选项图片 URL") + @ApiModelProperty(value = "封面") private String image; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java index 9f9d7e3..763d1a5 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiActivityOptionVo.java @@ -14,23 +14,17 @@ @ApiModelProperty(value = "选项名称") private String optionName; - @ApiModelProperty(value = "排名") - private Integer rank; - - @ApiModelProperty(value = "点赞数量") + @ApiModelProperty(value = "票数") private Integer likesCnt; - @ApiModelProperty(value = "投票选项图片 URL") + @ApiModelProperty(value = "封面头像") private String image; - @ApiModelProperty(value = "投票选项视频URL") + @ApiModelProperty(value = "作品") private String videoUrl; @ApiModelProperty(value = "选项描述") private String description; - - @ApiModelProperty(value = "名称") - private String realName; @ApiModelProperty(value = "性别 0-女1-男 2-保密") private Integer sex; @@ -41,6 +35,4 @@ @ApiModelProperty(value = "是否签约mcn机构 0否 1是") private Integer mcnState; - @ApiModelProperty(value = "投票数量") - private Integer voteCnt; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCategoryInfoVo.java similarity index 93% rename from src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java rename to src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCategoryInfoVo.java index a6ba03a..7dfdef8 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiCategoryInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCategoryInfoVo.java @@ -1,4 +1,4 @@ -package cc.mrbird.febs.mall.vo; +package cc.mrbird.febs.mall.vo.activity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml index 02086bc..af7ebca 100644 --- a/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml +++ b/src/main/resources/mapper/modules/HappyActivityOptionMapper.xml @@ -42,4 +42,23 @@ order by a.id desc </select> + + <update id="updateHappyActivityOptionLikeCnt" > + update happy_activity_option set likes_cnt = likes_cnt + 1 where id = #{id} + </update> + + <select id="getVoteOptionInPage" 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 + a.state = 1 + and a.activity_id = #{record.activityId} + and a.DELETE_FLAG = 1 + order by a.order_cnt asc + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.1