Commit cfbc8b48494e6c6563336de9f54a2d9a660c3f19
1 parent
bccd270f
拼团记录(admin-api):增加 page-by-headId 接口获取指定 headId 完整拼团列表分页
Showing
5 changed files
with
60 additions
and
2 deletions
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<CombinationRecordDO | @@ -101,6 +102,13 @@ public interface CombinationRecordMapper extends BaseMapperX<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<CombinationRecordDO | @@ -112,10 +120,11 @@ public interface CombinationRecordMapper extends BaseMapperX<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); |