package cn.iocoder.yudao.module.promotion.controller.app.combination; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; 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.app.combination.vo.activity.AppCombinationActivityDetailRespVO; import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.activity.AppCombinationActivityRespVO; import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.annotation.security.PermitAll; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; @Tag(name = "用户 APP - 拼团活动") @RestController @RequestMapping("/promotion/combination-activity") @Validated public class AppCombinationActivityController { @Resource private CombinationActivityService activityService; @Resource private ProductSpuApi spuApi; @GetMapping("/page") @Operation(summary = "获得拼团活动分页") @PermitAll public CommonResult> getCombinationActivityPage(PageParam pageParam) { PageResult pageResult = activityService.getCombinationActivityPage(pageParam); if (CollUtil.isEmpty(pageResult.getList())) { return success(PageResult.empty(pageResult.getTotal())); } // 拼接返回 List productList = activityService.getCombinationProductListByActivityIds( convertList(pageResult.getList(), CombinationActivityDO::getId)); List spuList = spuApi.getSpuList(convertList(pageResult.getList(), CombinationActivityDO::getSpuId)); return success(CombinationActivityConvert.INSTANCE.convertAppPage(pageResult, productList, spuList)); } @GetMapping("/list-by-ids") @Operation(summary = "获得拼团活动列表,基于活动编号数组") @Parameter(name = "ids", description = "活动编号数组", required = true, example = "[1024, 1025]") @PermitAll public CommonResult> getCombinationActivityListByIds(@RequestParam("ids") List ids) { // 1. 获得开启的活动列表 List activityList = activityService.getCombinationActivityListByIds(ids); activityList.removeIf(activity -> CommonStatusEnum.isDisable(activity.getStatus())); if (CollUtil.isEmpty(activityList)) { return success(Collections.emptyList()); } // 2. 拼接返回 List productList = activityService.getCombinationProductListByActivityIds( convertList(activityList, CombinationActivityDO::getId)); List spuList = spuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId)); return success(CombinationActivityConvert.INSTANCE.convertAppList(activityList, productList, spuList)); } @GetMapping("/get-detail") @Operation(summary = "获得拼团活动明细") @Parameter(name = "id", description = "活动编号", required = true, example = "1024") @PermitAll public CommonResult getCombinationActivityDetail(@RequestParam("id") Long id) { // 1. 获取活动 CombinationActivityDO activity = activityService.getCombinationActivity(id); if (activity == null || ObjectUtil.equal(activity.getStatus(), CommonStatusEnum.DISABLE.getStatus())) { return success(null); } // 2. 获取活动商品 List products = activityService.getCombinationProductsByActivityId(activity.getId()); return success(CombinationActivityConvert.INSTANCE.convert3(activity, products)); } }