promotion:新增助力记录列表

This commit is contained in:
YunaiV
2023-10-05 12:43:14 +08:00
parent 269da3d56d
commit 6a04d6c458
9 changed files with 273 additions and 82 deletions

View File

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.promotion.controller.admin.bargain;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help.BargainHelpPageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help.BargainHelpRespVO;
import cn.iocoder.yudao.module.promotion.convert.bargain.BargainHelpConvert;
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainHelpDO;
import cn.iocoder.yudao.module.promotion.service.bargain.BargainHelpService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@Tag(name = "管理后台 - 砍价助力")
@RestController
@RequestMapping("/promotion/bargain-help")
@Validated
public class BargainHelpController {
@Resource
private BargainHelpService bargainHelpService;
@Resource
private MemberUserApi memberUserApi;
@GetMapping("/page")
@Operation(summary = "获得砍价助力分页")
@PreAuthorize("@ss.hasPermission('promotion:bargain-help:query')")
public CommonResult<PageResult<BargainHelpRespVO>> getBargainHelpPage(@Valid BargainHelpPageReqVO pageVO) {
PageResult<BargainHelpDO> pageResult = bargainHelpService.getBargainHelpPage(pageVO);
if (CollUtil.isEmpty(pageResult.getList())) {
return success(PageResult.empty(pageResult.getTotal()));
}
// 拼接数据
Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(
convertSet(pageResult.getList(), BargainHelpDO::getUserId));
return success(BargainHelpConvert.INSTANCE.convertPage(pageResult, userMap));
}
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 砍价助力 Base VO提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class BargainHelpBaseVO {
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5402")
private Long userId;
@Schema(description = "砍价活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "16825")
private Long activityId;
@Schema(description = "砍价记录编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1800")
private Long recordId;
@Schema(description = "减少砍价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "32300")
private Integer reducePrice;
}

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - 砍价助力分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BargainHelpPageReqVO extends PageParam {
@Schema(description = "砍价记录编号", example = "1800")
private Long recordId;
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 砍价助力 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BargainHelpRespVO extends BargainHelpBaseVO {
@Schema(description = "砍价助力编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25860")
private Long id;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
// ========== 用户相关 ==========
@Schema(description = "用户昵称", example = "老芋艿")
private String nickname;
@Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
private String avatar;
}

View File

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.promotion.convert.bargain;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help.BargainHelpRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainHelpDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.Map;
/**
* 砍价助力 Convert
*
* @author 芋道源码
*/
@Mapper
public interface BargainHelpConvert {
BargainHelpConvert INSTANCE = Mappers.getMapper(BargainHelpConvert.class);
default PageResult<BargainHelpRespVO> convertPage(PageResult<BargainHelpDO> page,
Map<Long, MemberUserRespDTO> userMap) {
PageResult<BargainHelpRespVO> pageResult = convertPage(page);
// 拼接数据
pageResult.getList().forEach(record ->
MapUtils.findAndThen(userMap, record.getUserId(),
user -> record.setNickname(user.getNickname()).setAvatar(user.getAvatar())));
return pageResult;
}
PageResult<BargainHelpRespVO> convertPage(PageResult<BargainHelpDO> page);
}

View File

@ -2,8 +2,11 @@ package cn.iocoder.yudao.module.promotion.dal.mysql.bargain;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help.BargainHelpPageReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainHelpDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -33,7 +36,6 @@ public interface BargainHelpMapper extends BaseMapperX<BargainHelpDO> {
.eq(BargainHelpDO::getRecordId, recordId));
}
default Map<Long, Integer> selectCountByActivityId(Collection<Long> activityIds) {
// SQL count 查询
List<Map<String, Object>> result = selectMaps(new QueryWrapper<BargainHelpDO>()
@ -64,4 +66,10 @@ public interface BargainHelpMapper extends BaseMapperX<BargainHelpDO> {
record -> MapUtil.getInt(record, "userCount" ));
}
default PageResult<BargainHelpDO> selectPage(BargainHelpPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BargainHelpDO>()
.eqIfPresent(BargainHelpDO::getRecordId, reqVO.getRecordId())
.orderByDesc(BargainHelpDO::getId));
}
}

View File

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.promotion.service.bargain;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help.BargainHelpPageReqVO;
import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.help.AppBargainHelpCreateReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainHelpDO;
@ -38,4 +40,12 @@ public interface BargainHelpService {
*/
Map<Long, Integer> getBargainHelpUserCountMapByRecord(Collection<Long> recordIds);
/**
* 获得砍价助力分页
*
* @param pageReqVO 分页查询
* @return 砍价助力分页
*/
PageResult<BargainHelpDO> getBargainHelpPage(BargainHelpPageReqVO pageReqVO);
}

View File

@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.promotion.service.bargain;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.help.BargainHelpPageReqVO;
import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.help.AppBargainHelpCreateReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainHelpDO;
@ -112,4 +114,9 @@ public class BargainHelpServiceImpl implements BargainHelpService {
return bargainHelpMapper.selectCountByRecordId(recordIds);
}
@Override
public PageResult<BargainHelpDO> getBargainHelpPage(BargainHelpPageReqVO pageReqVO) {
return bargainHelpMapper.selectPage(pageReqVO);
}
}