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<PageResult<AppCombinationActivityRespVO>> getCombinationActivityPage(PageParam pageParam) {
|
PageResult<CombinationActivityDO> pageResult = activityService.getCombinationActivityPage(pageParam);
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
return success(PageResult.empty(pageResult.getTotal()));
|
}
|
// 拼接返回
|
List<CombinationProductDO> productList = activityService.getCombinationProductListByActivityIds(
|
convertList(pageResult.getList(), CombinationActivityDO::getId));
|
List<ProductSpuRespDTO> 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<List<AppCombinationActivityRespVO>> getCombinationActivityListByIds(@RequestParam("ids") List<Long> ids) {
|
// 1. 获得开启的活动列表
|
List<CombinationActivityDO> activityList = activityService.getCombinationActivityListByIds(ids);
|
activityList.removeIf(activity -> CommonStatusEnum.isDisable(activity.getStatus()));
|
if (CollUtil.isEmpty(activityList)) {
|
return success(Collections.emptyList());
|
}
|
// 2. 拼接返回
|
List<CombinationProductDO> productList = activityService.getCombinationProductListByActivityIds(
|
convertList(activityList, CombinationActivityDO::getId));
|
List<ProductSpuRespDTO> 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<AppCombinationActivityDetailRespVO> 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<CombinationProductDO> products = activityService.getCombinationProductsByActivityId(activity.getId());
|
return success(CombinationActivityConvert.INSTANCE.convert3(activity, products));
|
}
|
|
}
|