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; 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 = "投票活动-选项详情") 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") src/main/java/cc/mrbird/febs/mall/dto/activity/ApiVoteOptionInPageDto.java
New file @@ -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; } 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); } 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); 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; 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(); 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; } 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; } src/main/java/cc/mrbird/febs/mall/vo/activity/ApiCategoryInfoVo.java
File was renamed from src/main/java/cc/mrbird/febs/mall/vo/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; 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>