From a259e032e15e44361b4db1522330aa63f5680cd7 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 6 Jan 2024 20:42:32 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20MALL=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8=E7=9A=84=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E6=95=B0=E7=BB=84=E3=80=81=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E7=9A=84=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../category/ProductCategoryController.java | 4 +- .../category/vo/ProductCategoryListReqVO.java | 5 +++ .../app/spu/vo/AppProductSpuPageReqVO.java | 9 ++++- .../mysql/category/ProductCategoryMapper.java | 1 + .../category/ProductCategoryService.java | 2 +- .../category/ProductCategoryServiceImpl.java | 2 +- .../service/spu/ProductSpuServiceImpl.java | 17 ++++++--- .../common/PromotionActivityStatusEnum.java | 1 + .../app/activity/AppActivityController.java | 1 + .../reward/AppRewardActivityController.java | 37 +++++++++++++++++++ .../reward/vo/AppRewardActivityRespVO.java | 34 +++++++++++++++++ 11 files changed, 102 insertions(+), 11 deletions(-) create mode 100755 yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/AppRewardActivityController.java create mode 100755 yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/vo/AppRewardActivityRespVO.java diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java index 16e6a4e6b..631f48915 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java @@ -67,8 +67,8 @@ public class ProductCategoryController { @GetMapping("/list") @Operation(summary = "获得商品分类列表") @PreAuthorize("@ss.hasPermission('product:category:query')") - public CommonResult> getCategoryList(@Valid ProductCategoryListReqVO treeListReqVO) { - List list = categoryService.getEnableCategoryList(treeListReqVO); + public CommonResult> getCategoryList(@Valid ProductCategoryListReqVO listReqVO) { + List list = categoryService.getCategoryList(listReqVO); list.sort(Comparator.comparing(ProductCategoryDO::getSort)); return success(ProductCategoryConvert.INSTANCE.convertList(list)); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java index 16f5df857..9e5364c90 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.product.controller.admin.category.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.Collection; + @Schema(description = "管理后台 - 商品分类列表查询 Request VO") @Data public class ProductCategoryListReqVO { @@ -16,4 +18,7 @@ public class ProductCategoryListReqVO { @Schema(description = "父分类编号", example = "1") private Long parentId; + @Schema(description = "父分类编号数组", example = "1,2,3") + private Collection parentIds; + } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java index a6b53e4de..94079d73d 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java @@ -4,11 +4,12 @@ import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageParam; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.AssertTrue; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import jakarta.validation.constraints.AssertTrue; +import java.util.List; @Schema(description = "用户 App - 商品 SPU 分页 Request VO") @Data @@ -26,9 +27,15 @@ public class AppProductSpuPageReqVO extends PageParam { public static final String RECOMMEND_TYPE_NEW = "new"; public static final String RECOMMEND_TYPE_GOOD = "good"; + @Schema(description = "商品 SPU 编号数组", example = "1,3,5") + private List ids; + @Schema(description = "分类编号", example = "1") private Long categoryId; + @Schema(description = "分类编号数组", example = "1,2,3") + private List categoryIds; + @Schema(description = "关键字", example = "好看") private String keyword; diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/category/ProductCategoryMapper.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/category/ProductCategoryMapper.java index 50d47104c..4c212de94 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/category/ProductCategoryMapper.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/category/ProductCategoryMapper.java @@ -21,6 +21,7 @@ public interface ProductCategoryMapper extends BaseMapperX { return selectList(new LambdaQueryWrapperX() .likeIfPresent(ProductCategoryDO::getName, listReqVO.getName()) .eqIfPresent(ProductCategoryDO::getParentId, listReqVO.getParentId()) + .inIfPresent(ProductCategoryDO::getId, listReqVO.getParentIds()) .eqIfPresent(ProductCategoryDO::getStatus, listReqVO.getStatus()) .orderByDesc(ProductCategoryDO::getId)); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryService.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryService.java index 3a064f466..08138b53a 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryService.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryService.java @@ -67,7 +67,7 @@ public interface ProductCategoryService { * @param listReqVO 查询条件 * @return 商品分类列表 */ - List getEnableCategoryList(ProductCategoryListReqVO listReqVO); + List getCategoryList(ProductCategoryListReqVO listReqVO); /** * 获得开启状态的商品分类列表 diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java index ae69e87b5..bfcebf696 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java @@ -161,7 +161,7 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { } @Override - public List getEnableCategoryList(ProductCategoryListReqVO listReqVO) { + public List getCategoryList(ProductCategoryListReqVO listReqVO) { return productCategoryMapper.selectList(listReqVO); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java index 1d4e1999e..894576e20 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java @@ -18,17 +18,16 @@ import cn.iocoder.yudao.module.product.service.brand.ProductBrandService; import cn.iocoder.yudao.module.product.service.category.ProductCategoryService; import cn.iocoder.yudao.module.product.service.sku.ProductSkuService; import com.google.common.collect.Maps; +import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import jakarta.annotation.Resource; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getMinValue; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; import static cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO.CATEGORY_LEVEL; import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; @@ -215,9 +214,15 @@ public class ProductSpuServiceImpl implements ProductSpuService { Set categoryIds = new HashSet<>(); if (pageReqVO.getCategoryId() != null && pageReqVO.getCategoryId() > 0) { categoryIds.add(pageReqVO.getCategoryId()); - List categoryChildren = categoryService.getEnableCategoryList(new ProductCategoryListReqVO() - .setParentId(pageReqVO.getCategoryId()).setStatus(CommonStatusEnum.ENABLE.getStatus())); - categoryIds.addAll(CollectionUtils.convertList(categoryChildren, ProductCategoryDO::getId)); + List categoryChildren = categoryService.getCategoryList(new ProductCategoryListReqVO() + .setStatus(CommonStatusEnum.ENABLE.getStatus()).setParentId(pageReqVO.getCategoryId())); + categoryIds.addAll(convertList(categoryChildren, ProductCategoryDO::getId)); + } + if (CollUtil.isNotEmpty(pageReqVO.getCategoryIds())) { + categoryIds.addAll(pageReqVO.getCategoryIds()); + List categoryChildren = categoryService.getCategoryList(new ProductCategoryListReqVO() + .setStatus(CommonStatusEnum.ENABLE.getStatus()).setParentIds(pageReqVO.getCategoryIds())); + categoryIds.addAll(convertList(categoryChildren, ProductCategoryDO::getId)); } // 分页查询 return productSpuMapper.selectPage(pageReqVO, categoryIds); diff --git a/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/common/PromotionActivityStatusEnum.java b/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/common/PromotionActivityStatusEnum.java index db79f871b..e45e37beb 100644 --- a/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/common/PromotionActivityStatusEnum.java +++ b/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/common/PromotionActivityStatusEnum.java @@ -6,6 +6,7 @@ import lombok.Getter; import java.util.Arrays; +// TODO 芋艿:弱化这个状态 /** * 促销活动的状态枚举 * diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java index f95945627..4ec685aab 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/activity/AppActivityController.java @@ -145,6 +145,7 @@ public class AppActivityController { } private void getRewardActivities(Collection spuIds, LocalDateTime now, List activityList) { + // TODO @puhui999:有 3 范围,不只 spuId,还有 categoryId,全部 List rewardActivityList = rewardActivityService.getRewardActivityBySpuIdsAndStatusAndDateTimeLt( spuIds, PromotionActivityStatusEnum.RUN.getStatus(), now); if (CollUtil.isEmpty(rewardActivityList)) { diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/AppRewardActivityController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/AppRewardActivityController.java new file mode 100755 index 000000000..88cdcd8af --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/AppRewardActivityController.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.promotion.controller.app.reward; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.promotion.controller.app.reward.vo.AppRewardActivityRespVO; +import cn.iocoder.yudao.module.promotion.dal.dataobject.reward.RewardActivityDO; +import cn.iocoder.yudao.module.promotion.service.reward.RewardActivityService; +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 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 static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "用户 App - 满减送活动") +@RestController +@RequestMapping("/promotion/reward-activity") +@Validated +public class AppRewardActivityController { + + @Resource + private RewardActivityService rewardActivityService; + + @GetMapping("/get") + @Operation(summary = "获得满减送活动") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getRewardActivity(@RequestParam("id") Long id) { + RewardActivityDO rewardActivity = rewardActivityService.getRewardActivity(id); + return success(BeanUtils.toBean(rewardActivity, AppRewardActivityRespVO.class)); + } + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/vo/AppRewardActivityRespVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/vo/AppRewardActivityRespVO.java new file mode 100755 index 000000000..acaa5225d --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/reward/vo/AppRewardActivityRespVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.promotion.controller.app.reward.vo; + +import cn.iocoder.yudao.module.promotion.controller.admin.reward.vo.RewardActivityBaseVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "用户 App - 满减送活动 Response VO") +@Data +public class AppRewardActivityRespVO { + + @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Integer id; + + @Schema(description = "活动状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer status; + + @Schema(description = "活动标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "满啦满啦") + private String name; + + @Schema(description = "条件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer conditionType; + + @Schema(description = "商品范围", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer productScope; + + @Schema(description = "商品 SPU 编号的数组", example = "1,2,3") + private List productSpuIds; + + @Schema(description = "优惠规则的数组") + private List rules; + +}