mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	promotion:优化砍价活动的分页结果
This commit is contained in:
		| @@ -5,13 +5,13 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||
| import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; | ||||
| import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityCreateReqVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityPageReqVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityRespVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.*; | ||||
| import cn.iocoder.yudao.module.promotion.convert.bargain.BargainActivityConvert; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; | ||||
| import cn.iocoder.yudao.module.promotion.enums.bargain.BargainRecordStatusEnum; | ||||
| import cn.iocoder.yudao.module.promotion.service.bargain.BargainActivityService; | ||||
| import cn.iocoder.yudao.module.promotion.service.bargain.BargainHelpService; | ||||
| import cn.iocoder.yudao.module.promotion.service.bargain.BargainRecordService; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||
| @@ -21,7 +21,9 @@ import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import javax.validation.Valid; | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||||
| @@ -33,7 +35,12 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. | ||||
| public class BargainActivityController { | ||||
|  | ||||
|     @Resource | ||||
|     private BargainActivityService activityService; | ||||
|     private BargainActivityService bargainActivityService; | ||||
|     @Resource | ||||
|     private BargainRecordService bargainRecordService; | ||||
|     @Resource | ||||
|     private BargainHelpService bargainHelpService; | ||||
|  | ||||
|     @Resource | ||||
|     private ProductSpuApi spuApi; | ||||
|  | ||||
| @@ -41,14 +48,14 @@ public class BargainActivityController { | ||||
|     @Operation(summary = "创建砍价活动") | ||||
|     @PreAuthorize("@ss.hasPermission('promotion:bargain-activity:create')") | ||||
|     public CommonResult<Long> createBargainActivity(@Valid @RequestBody BargainActivityCreateReqVO createReqVO) { | ||||
|         return success(activityService.createBargainActivity(createReqVO)); | ||||
|         return success(bargainActivityService.createBargainActivity(createReqVO)); | ||||
|     } | ||||
|  | ||||
|     @PutMapping("/update") | ||||
|     @Operation(summary = "更新砍价活动") | ||||
|     @PreAuthorize("@ss.hasPermission('promotion:bargain-activity:update')") | ||||
|     public CommonResult<Boolean> updateBargainActivity(@Valid @RequestBody BargainActivityUpdateReqVO updateReqVO) { | ||||
|         activityService.updateBargainActivity(updateReqVO); | ||||
|         bargainActivityService.updateBargainActivity(updateReqVO); | ||||
|         return success(true); | ||||
|     } | ||||
|  | ||||
| @@ -57,7 +64,7 @@ public class BargainActivityController { | ||||
|     @Parameter(name = "id", description = "编号", required = true) | ||||
|     @PreAuthorize("@ss.hasPermission('promotion:bargain-activity:delete')") | ||||
|     public CommonResult<Boolean> deleteBargainActivity(@RequestParam("id") Long id) { | ||||
|         activityService.deleteBargainActivity(id); | ||||
|         bargainActivityService.deleteBargainActivity(id); | ||||
|         return success(true); | ||||
|     } | ||||
|  | ||||
| @@ -66,23 +73,30 @@ public class BargainActivityController { | ||||
|     @Parameter(name = "id", description = "编号", required = true, example = "1024") | ||||
|     @PreAuthorize("@ss.hasPermission('promotion:bargain-activity:query')") | ||||
|     public CommonResult<BargainActivityRespVO> getBargainActivity(@RequestParam("id") Long id) { | ||||
|         return success(BargainActivityConvert.INSTANCE.convert(activityService.getBargainActivity(id))); | ||||
|         return success(BargainActivityConvert.INSTANCE.convert(bargainActivityService.getBargainActivity(id))); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/page") | ||||
|     @Operation(summary = "获得砍价活动分页") | ||||
|     @PreAuthorize("@ss.hasPermission('promotion:bargain-activity:query')") | ||||
|     public CommonResult<PageResult<BargainActivityRespVO>> getBargainActivityPage( | ||||
|     public CommonResult<PageResult<BargainActivityPageItemRespVO>> getBargainActivityPage( | ||||
|             @Valid BargainActivityPageReqVO pageVO) { | ||||
|         // 查询砍价活动 | ||||
|         PageResult<BargainActivityDO> pageResult = activityService.getBargainActivityPage(pageVO); | ||||
|         PageResult<BargainActivityDO> pageResult = bargainActivityService.getBargainActivityPage(pageVO); | ||||
|         if (CollUtil.isEmpty(pageResult.getList())) { | ||||
|             return success(PageResult.empty(pageResult.getTotal())); | ||||
|         } | ||||
|  | ||||
|         // 拼接数据 | ||||
|         List<ProductSpuRespDTO> spuList = spuApi.getSpuList(convertList(pageResult.getList(), BargainActivityDO::getSpuId)); | ||||
|         return success(BargainActivityConvert.INSTANCE.convertPage(pageResult, spuList)); | ||||
|         // 统计数据 | ||||
|         Collection<Long> activityIds = convertList(pageResult.getList(), BargainActivityDO::getId); | ||||
|         Map<Long, Integer> recordUserCountMap = bargainRecordService.getBargainRecordUserCountMap(activityIds, null); | ||||
|         Map<Long, Integer> recordSuccessUserCountMap = bargainRecordService.getBargainRecordUserCountMap(activityIds, | ||||
|                 BargainRecordStatusEnum.SUCCESS.getStatus()); | ||||
|         Map<Long, Integer> helpUserCountMap = bargainHelpService.getBargainHelpUserCountMap(activityIds); | ||||
|         return success(BargainActivityConvert.INSTANCE.convertPage(pageResult, spuList, | ||||
|                 recordUserCountMap, recordSuccessUserCountMap, helpUserCountMap)); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -36,7 +36,7 @@ public class BargainActivityBaseVO { | ||||
|  | ||||
|     @Schema(description = "砍价底价", requiredMode = Schema.RequiredMode.REQUIRED, example = "23") | ||||
|     @NotNull(message = "砍价底价不能为空") | ||||
|     private Integer bargainPrice; | ||||
|     private Integer bargainMinPrice; | ||||
|  | ||||
|     @Schema(description = "活动库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "23") | ||||
|     @NotNull(message = "活动库存不能为空") | ||||
|   | ||||
| @@ -0,0 +1,46 @@ | ||||
| package cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo; | ||||
|  | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
| import java.time.LocalDateTime; | ||||
|  | ||||
| @Schema(description = "管理后台 - 砍价活动的分页项 Response VO") | ||||
| @Data | ||||
| @EqualsAndHashCode(callSuper = true) | ||||
| @ToString(callSuper = true) | ||||
| public class BargainActivityPageItemRespVO extends BargainActivityBaseVO { | ||||
|  | ||||
|     @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901") | ||||
|     private Long id; | ||||
|  | ||||
|     @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促") | ||||
|     private String spuName; | ||||
|     @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.png") | ||||
|     private String picUrl; | ||||
|  | ||||
|     @Schema(description = "活动状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | ||||
|     @NotNull(message = "活动状态不能为空") | ||||
|     private Integer status; | ||||
|  | ||||
|     @Schema(description = "活动总库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "23") | ||||
|     private Integer totalStock; | ||||
|  | ||||
|     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-01 23:59:59") | ||||
|     private LocalDateTime createTime; | ||||
|  | ||||
|     // ========== 统计字段 ========== | ||||
|  | ||||
|     @Schema(description = "总砍价的用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "999") | ||||
|     private Integer recordUserCount; | ||||
|  | ||||
|     @Schema(description = "成功砍价的用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "500") | ||||
|     private Integer recordSuccessUserCount; | ||||
|  | ||||
|     @Schema(description = "帮助砍价的用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "888") | ||||
|     private Integer helpUserCount; | ||||
|  | ||||
| } | ||||
| @@ -5,7 +5,6 @@ import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
| import java.time.LocalDateTime; | ||||
| @Schema(description = "管理后台 - 砍价活动 Response VO") | ||||
| @Data | ||||
| @@ -13,23 +12,13 @@ import java.time.LocalDateTime; | ||||
| @ToString(callSuper = true) | ||||
| public class BargainActivityRespVO extends BargainActivityBaseVO { | ||||
|  | ||||
|     @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促") | ||||
|     private String spuName; | ||||
|  | ||||
|     @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.png") | ||||
|     private String picUrl; | ||||
|  | ||||
|     @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901") | ||||
|     private Long id; | ||||
|  | ||||
|     @Schema(description = "活动状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | ||||
|     private Integer status; | ||||
|  | ||||
|     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-01 23:59:59") | ||||
|     private LocalDateTime createTime; | ||||
|  | ||||
|     @Schema(description = "砍价成功数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "999") | ||||
|     private Integer successCount; | ||||
|  | ||||
|     @Schema(description = "活动状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | ||||
|     @NotNull(message = "活动状态不能为空") | ||||
|     private Integer status; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -22,6 +22,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| @Validated | ||||
| public class AppActivityController { | ||||
|  | ||||
|     // TODO @puhui999:可以实现下 | ||||
|     @GetMapping("/list-by-spu-id") | ||||
|     @Operation(summary = "获得单个商品,近期参与的每个活动") // 每种活动,只返回一个 | ||||
|     @Parameter(name = "spuId", description = "商品编号", required = true) | ||||
| @@ -41,6 +42,7 @@ public class AppActivityController { | ||||
|         return success(randomList); | ||||
|     } | ||||
|  | ||||
|     // TODO @puhui999:可以实现下 | ||||
|     @GetMapping("/list-by-spu-ids") | ||||
|     @Operation(summary = "获得多个商品,近期参与的每个活动") // 每种活动,只返回一个;key 为 SPU 编号 | ||||
|     @Parameter(name = "spuIds", description = "商品编号数组", required = true) | ||||
|   | ||||
| @@ -32,6 +32,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. | ||||
| @RequestMapping("/promotion/bargain-activity") | ||||
| @Validated | ||||
| public class AppBargainActivityController { | ||||
|  | ||||
|     @Resource | ||||
|     private BargainActivityService bargainActivityService; | ||||
|     @Resource | ||||
|   | ||||
| @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; | ||||
| import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; | ||||
| import cn.iocoder.yudao.module.product.enums.DictTypeConstants; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityBaseVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityPageItemRespVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityRespVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityDetailRespVO; | ||||
| @@ -38,19 +39,23 @@ public interface BargainActivityConvert { | ||||
|  | ||||
|     List<BargainActivityRespVO> convertList(List<BargainActivityDO> list); | ||||
|  | ||||
|     PageResult<BargainActivityRespVO> convertPage(PageResult<BargainActivityDO> page); | ||||
|     PageResult<BargainActivityPageItemRespVO> convertPage(PageResult<BargainActivityDO> page); | ||||
|  | ||||
|     default PageResult<BargainActivityRespVO> convertPage(PageResult<BargainActivityDO> page, List<ProductSpuRespDTO> spuList) { | ||||
|         PageResult<BargainActivityRespVO> result = convertPage(page); | ||||
|     default PageResult<BargainActivityPageItemRespVO> convertPage(PageResult<BargainActivityDO> page, List<ProductSpuRespDTO> spuList, | ||||
|                                                                   Map<Long, Integer> recordUserCountMap, Map<Long, Integer> recordSuccessUserCountMap, | ||||
|                                                                   Map<Long, Integer> helpUserCountMap) { | ||||
|         PageResult<BargainActivityPageItemRespVO> result = convertPage(page); | ||||
|         // 拼接关联属性 | ||||
|         Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); | ||||
|         List<BargainActivityRespVO> list = CollectionUtils.convertList(result.getList(), item -> { | ||||
|         result.getList().forEach(item -> { | ||||
|             findAndThen(spuMap, item.getSpuId(), spu -> { | ||||
|                 item.setPicUrl(spu.getPicUrl()).setSpuName(spu.getName()); | ||||
|             }); | ||||
|             return item; | ||||
|             // 设置统计字段 | ||||
|             item.setRecordUserCount(recordUserCountMap.getOrDefault(item.getId(), 0)) | ||||
|                     .setRecordSuccessUserCount(recordSuccessUserCountMap.getOrDefault(item.getId(), 0)) | ||||
|                     .setHelpUserCount(helpUserCountMap.getOrDefault(item.getId(), 0)); | ||||
|         }); | ||||
|         result.setList(list); | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -67,10 +67,15 @@ public class BargainActivityDO extends BaseDO { | ||||
|      * 砍价底价,单位:分 | ||||
|      */ | ||||
|     private Integer bargainMinPrice; | ||||
|  | ||||
|     /** | ||||
|      * 砍价活动库存 | ||||
|      * 砍价库存(剩余库存砍价时扣减) | ||||
|      */ | ||||
|     private Integer stock; | ||||
|     /** | ||||
|      * 砍价总库存 | ||||
|      */ | ||||
|     private Integer totalStock; | ||||
|  | ||||
|     /** | ||||
|      * 砍价人数 | ||||
| @@ -99,11 +104,4 @@ public class BargainActivityDO extends BaseDO { | ||||
|      */ | ||||
|     private Integer randomMaxPrice; | ||||
|  | ||||
|     // ========== 统计字段 ========== | ||||
|  | ||||
|     /** | ||||
|      * 砍价成功数量 | ||||
|      */ | ||||
|     private Integer successCount; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,10 +1,19 @@ | ||||
| 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.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||||
| 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; | ||||
| import org.apache.ibatis.annotations.Mapper; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| @Mapper | ||||
| public interface BargainHelpMapper extends BaseMapperX<BargainHelpDO> { | ||||
|  | ||||
| @@ -24,4 +33,20 @@ 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>() | ||||
|                 .select("COUNT(DISTINCT(user_id)) AS userCount, activity_id AS activityId") | ||||
|                 .in("activity_id", activityIds) | ||||
|                 .groupBy("activity_id")); | ||||
|         if (CollUtil.isEmpty(result)) { | ||||
|             return Collections.emptyMap(); | ||||
|         } | ||||
|         // 转换数据 | ||||
|         return CollectionUtils.convertMap(result, | ||||
|                 record -> MapUtil.getLong(record, "activityId"), | ||||
|                 record -> MapUtil.getInt(record, "userCount" )); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,11 +1,18 @@ | ||||
| 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.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainRecordDO; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||
| import org.apache.ibatis.annotations.Mapper; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  * 砍价记录 Mapper | ||||
| @@ -42,4 +49,20 @@ public interface BargainRecordMapper extends BaseMapperX<BargainRecordDO> { | ||||
|                 .eq(BargainRecordDO::getBargainPrice, whereBargainPrice)); | ||||
|     } | ||||
|  | ||||
|     default Map<Long, Integer> selectCountByActivityIdsAndStatus(Collection<Long> activityIds, Integer status) { | ||||
|         // SQL count 查询 | ||||
|         List<Map<String, Object>> result = selectMaps(new QueryWrapper<BargainRecordDO>() | ||||
|                 .select("COUNT(DISTINCT(user_id)) AS userCount, activity_id AS activityId") | ||||
|                 .in("activity_id", activityIds) | ||||
|                 .eq(status != null, "status", status) | ||||
|                 .groupBy("activity_id")); | ||||
|         if (CollUtil.isEmpty(result)) { | ||||
|             return Collections.emptyMap(); | ||||
|         } | ||||
|         // 转换数据 | ||||
|         return CollectionUtils.convertMap(result, | ||||
|                 record -> MapUtil.getLong(record, "activityId"), | ||||
|                 record -> MapUtil.getInt(record, "userCount" )); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -52,7 +52,8 @@ public class BargainActivityServiceImpl implements BargainActivityService { | ||||
|  | ||||
|         // 插入砍价活动 | ||||
|         BargainActivityDO activityDO = BargainActivityConvert.INSTANCE.convert(createReqVO) | ||||
|                 .setStatus(CommonStatusEnum.ENABLE.getStatus()).setSuccessCount(0); | ||||
|                 .setTotalStock(createReqVO.getStock()) | ||||
|                 .setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||
|         bargainActivityMapper.insert(activityDO); | ||||
|         return activityDO.getId(); | ||||
|     } | ||||
| @@ -61,9 +62,9 @@ public class BargainActivityServiceImpl implements BargainActivityService { | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void updateBargainActivity(BargainActivityUpdateReqVO updateReqVO) { | ||||
|         // 校验存在 | ||||
|         BargainActivityDO activityDO = validateBargainActivityExists(updateReqVO.getId()); | ||||
|         BargainActivityDO activity = validateBargainActivityExists(updateReqVO.getId()); | ||||
|         // 校验状态 | ||||
|         if (ObjectUtil.equal(activityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus())) { | ||||
|         if (ObjectUtil.equal(activity.getStatus(), CommonStatusEnum.DISABLE.getStatus())) { | ||||
|             throw exception(BARGAIN_ACTIVITY_STATUS_DISABLE); | ||||
|         } | ||||
|         // 校验商品冲突 | ||||
| @@ -73,6 +74,9 @@ public class BargainActivityServiceImpl implements BargainActivityService { | ||||
|  | ||||
|         // 更新 | ||||
|         BargainActivityDO updateObj = BargainActivityConvert.INSTANCE.convert(updateReqVO); | ||||
|         if (updateObj.getStock() > activity.getTotalStock()) { // 如果更新的库存大于原来的库存,则更新总库存 | ||||
|             updateObj.setTotalStock(updateObj.getStock()); | ||||
|         } | ||||
|         bargainActivityMapper.updateById(updateObj); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -3,6 +3,9 @@ package cn.iocoder.yudao.module.promotion.service.bargain; | ||||
| import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.help.AppBargainHelpCreateReqVO; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainHelpDO; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  * 砍价助力 Service 接口 | ||||
|  * | ||||
| @@ -19,4 +22,12 @@ public interface BargainHelpService { | ||||
|      */ | ||||
|     BargainHelpDO createBargainHelp(Long userId, AppBargainHelpCreateReqVO reqVO); | ||||
|  | ||||
|     /** | ||||
|      * 获得助力人数 Map | ||||
|      * | ||||
|      * @param activityIds 活动编号 | ||||
|      * @return 助力人数 Map | ||||
|      */ | ||||
|     Map<Long, Integer> getBargainHelpUserCountMap(Collection<Long> activityIds); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -15,6 +15,9 @@ import org.springframework.validation.annotation.Validated; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
|  | ||||
| import java.util.Collection; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||
| import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*; | ||||
|  | ||||
| @@ -99,4 +102,9 @@ public class BargainHelpServiceImpl implements BargainHelpService { | ||||
|         return reducePrice; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Map<Long, Integer> getBargainHelpUserCountMap(Collection<Long> activityIds) { | ||||
|         return bargainHelpMapper.selectCountByActivityId(activityIds); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -5,6 +5,10 @@ import cn.iocoder.yudao.module.promotion.api.bargain.dto.BargainValidateJoinResp | ||||
| import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.record.AppBargainRecordCreateReqVO; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainRecordDO; | ||||
|  | ||||
| import javax.annotation.Nullable; | ||||
| import java.util.Collection; | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  * 砍价记录 service 接口 | ||||
|  * | ||||
| @@ -55,4 +59,13 @@ public interface BargainRecordService { | ||||
|      */ | ||||
|     BargainRecordDO getBargainRecord(Long id); | ||||
|  | ||||
|     /** | ||||
|      * 获得砍价人数 Map | ||||
|      * | ||||
|      * @param activityIds 活动编号 | ||||
|      * @param status 砍价记录状态 | ||||
|      * @return 砍价人数 Map | ||||
|      */ | ||||
|     Map<Long, Integer> getBargainRecordUserCountMap(Collection<Long> activityIds, @Nullable Integer status); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -12,7 +12,10 @@ import cn.iocoder.yudao.module.promotion.enums.bargain.BargainRecordStatusEnum; | ||||
| import org.springframework.stereotype.Service; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
|  | ||||
| import javax.annotation.Nullable; | ||||
| import javax.annotation.Resource; | ||||
| import java.util.Collection; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||
| @@ -92,4 +95,9 @@ public class BargainRecordServiceImpl implements BargainRecordService { | ||||
|         return bargainRecordMapper.selectById(id); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public Map<Long, Integer> getBargainRecordUserCountMap(Collection<Long> activityIds, @Nullable Integer status) { | ||||
|         return bargainRecordMapper.selectCountByActivityIdsAndStatus(activityIds, status); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV