Commit cfbc8b48494e6c6563336de9f54a2d9a660c3f19

Authored by puhui999
1 parent bccd270f

拼团记录(admin-api):增加 page-by-headId 接口获取指定 headId 完整拼团列表分页

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/CombinationRecordController.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.controller.admin.combination; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.controller.admin.combination;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordPageItemRespVO; 5 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordPageItemRespVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPage2VO;
6 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO; 7 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO;
7 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordSummaryVO; 8 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordSummaryVO;
8 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; 9 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert;
@@ -49,6 +50,17 @@ public class CombinationRecordController { @@ -49,6 +50,17 @@ public class CombinationRecordController {
49 return success(CombinationActivityConvert.INSTANCE.convert(recordPage, activities)); 50 return success(CombinationActivityConvert.INSTANCE.convert(recordPage, activities));
50 } 51 }
51 52
  53 + @GetMapping("/page-by-headId")
  54 + @Operation(summary = "获得拼团记录分页")
  55 + @PreAuthorize("@ss.hasPermission('promotion:combination-record:query')")
  56 + public CommonResult<PageResult<CombinationRecordPageItemRespVO>> getBargainRecordPage(@Valid CombinationRecordReqPage2VO pageVO) {
  57 + // 包含团长和团员的分页记录
  58 + PageResult<CombinationRecordDO> recordPage = combinationRecordService.getCombinationRecordPage2(pageVO);
  59 + List<CombinationActivityDO> activities = combinationActivityService.getCombinationActivityListByIds(
  60 + convertSet(recordPage.getList(), CombinationRecordDO::getActivityId));
  61 + return success(CombinationActivityConvert.INSTANCE.convert(recordPage, activities));
  62 + }
  63 +
52 @GetMapping("/get-summary") 64 @GetMapping("/get-summary")
53 @Operation(summary = "获得拼团记录的概要信息", description = "用于拼团记录页面展示") 65 @Operation(summary = "获得拼团记录的概要信息", description = "用于拼团记录页面展示")
54 @PreAuthorize("@ss.hasPermission('promotion:combination-record:query')") 66 @PreAuthorize("@ss.hasPermission('promotion:combination-record:query')")
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/recrod/CombinationRecordReqPage2VO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +
  11 +@Schema(description = "管理后台 - 拼团记录分页 Request VO")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +public class CombinationRecordReqPage2VO extends PageParam {
  16 +
  17 + @Schema(description = "团长编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  18 + @NotNull(message = "团长编号不能为空")
  19 + private Long headId;
  20 +
  21 +}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/combination/CombinationRecordMapper.java
@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 6 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
8 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 8 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  9 +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPage2VO;
9 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO; 10 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO;
10 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO; 11 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO;
11 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 12 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -101,6 +102,13 @@ public interface CombinationRecordMapper extends BaseMapperX&lt;CombinationRecordDO @@ -101,6 +102,13 @@ public interface CombinationRecordMapper extends BaseMapperX&lt;CombinationRecordDO
101 .betweenIfPresent(CombinationRecordDO::getCreateTime, pageVO.getCreateTime())); 102 .betweenIfPresent(CombinationRecordDO::getCreateTime, pageVO.getCreateTime()));
102 } 103 }
103 104
  105 + default PageResult<CombinationRecordDO> selectPage(CombinationRecordReqPage2VO pageVO) {
  106 + return selectPage(pageVO, new LambdaQueryWrapperX<CombinationRecordDO>()
  107 + .eq(CombinationRecordDO::getId, pageVO.getHeadId())
  108 + .or()
  109 + .eq(CombinationRecordDO::getHeadId, pageVO.getHeadId()));
  110 + }
  111 +
104 /** 112 /**
105 * 查询指定条件的记录数 113 * 查询指定条件的记录数
106 * 如果参数都为 null 时则查询用户拼团记录(DISTINCT 去重),也就是说查询会员表中的用户有多少人参与过拼团活动每个人只统计一次 114 * 如果参数都为 null 时则查询用户拼团记录(DISTINCT 去重),也就是说查询会员表中的用户有多少人参与过拼团活动每个人只统计一次
@@ -112,10 +120,11 @@ public interface CombinationRecordMapper extends BaseMapperX&lt;CombinationRecordDO @@ -112,10 +120,11 @@ public interface CombinationRecordMapper extends BaseMapperX&lt;CombinationRecordDO
112 */ 120 */
113 default Long selectCountByHeadAndStatusAndVirtualGroup(Integer status, Boolean virtualGroup, Long headId) { 121 default Long selectCountByHeadAndStatusAndVirtualGroup(Integer status, Boolean virtualGroup, Long headId) {
114 return selectCount(new QueryWrapper<CombinationRecordDO>() 122 return selectCount(new QueryWrapper<CombinationRecordDO>()
115 - .select(status == null && virtualGroup == null && headId == null, "COUNT(DISTINCT(user_id))") 123 + .select(status == null && virtualGroup == null && headId == null, "DISTINCT (user_id)")
116 .eq(status != null, "status", status) 124 .eq(status != null, "status", status)
117 .eq(virtualGroup != null, "virtual_group", virtualGroup) 125 .eq(virtualGroup != null, "virtual_group", virtualGroup)
118 - .eq(headId != null, "head_id", headId)); 126 + .eq(headId != null, "head_id", headId)
  127 + .groupBy("user_id"));
119 } 128 }
120 129
121 default List<CombinationRecordDO> selectListByHeadIdAndStatusAndExpireTimeLt(Long headId, Integer status, LocalDateTime dateTime) { 130 default List<CombinationRecordDO> selectListByHeadIdAndStatusAndExpireTimeLt(Long headId, Integer status, LocalDateTime dateTime) {
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordService.java
@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.core.KeyValue; @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.core.KeyValue;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO; 5 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO;
6 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationValidateJoinRespDTO; 6 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationValidateJoinRespDTO;
  7 +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPage2VO;
7 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO; 8 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO;
8 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; 9 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO;
9 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; 10 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO;
@@ -138,6 +139,15 @@ public interface CombinationRecordService { @@ -138,6 +139,15 @@ public interface CombinationRecordService {
138 PageResult<CombinationRecordDO> getCombinationRecordPage(CombinationRecordReqPageVO pageVO); 139 PageResult<CombinationRecordDO> getCombinationRecordPage(CombinationRecordReqPageVO pageVO);
139 140
140 /** 141 /**
  142 + * 获取拼团记录分页数据(通过团长查询)
  143 + *
  144 + * @param pageVO 分页请求
  145 + * @return 拼团记录分页数据(包括团长的)
  146 + */
  147 + PageResult<CombinationRecordDO> getCombinationRecordPage2(CombinationRecordReqPage2VO pageVO);
  148 +
  149 +
  150 + /**
141 * 【拼团活动】获得拼团记录数量 Map 151 * 【拼团活动】获得拼团记录数量 Map
142 * 152 *
143 * @param activityIds 活动记录编号数组 153 * @param activityIds 活动记录编号数组
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
@@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; @@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
14 import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; 14 import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
15 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO; 15 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO;
16 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationValidateJoinRespDTO; 16 import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationValidateJoinRespDTO;
  17 +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPage2VO;
17 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO; 18 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.recrod.CombinationRecordReqPageVO;
18 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; 19 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert;
19 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; 20 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO;
@@ -281,6 +282,11 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -281,6 +282,11 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
281 } 282 }
282 283
283 @Override 284 @Override
  285 + public PageResult<CombinationRecordDO> getCombinationRecordPage2(CombinationRecordReqPage2VO pageVO) {
  286 + return combinationRecordMapper.selectPage(pageVO);
  287 + }
  288 +
  289 + @Override
284 public Map<Long, Integer> getCombinationRecordCountMapByActivity(Collection<Long> activityIds, 290 public Map<Long, Integer> getCombinationRecordCountMapByActivity(Collection<Long> activityIds,
285 @Nullable Integer status, @Nullable Long headId) { 291 @Nullable Integer status, @Nullable Long headId) {
286 return combinationRecordMapper.selectCombinationRecordCountMapByActivityIdAndStatusAndHeadId(activityIds, status, headId); 292 return combinationRecordMapper.selectCombinationRecordCountMapByActivityIdAndStatusAndHeadId(activityIds, status, headId);