Commit 6e111540101da844f3b83a4557f92203ff9fdfc2
1 parent
ffbf9278
SPU: 添加选择优惠卷
Showing
14 changed files
with
180 additions
and
29 deletions
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java
| ... | ... | @@ -34,8 +34,9 @@ public interface ErrorCodeConstants { |
| 34 | 34 | // ========== 商品 SPU 1-008-005-000 ========== |
| 35 | 35 | ErrorCode SPU_NOT_EXISTS = new ErrorCode(1_008_005_000, "商品 SPU 不存在"); |
| 36 | 36 | ErrorCode SPU_SAVE_FAIL_CATEGORY_LEVEL_ERROR = new ErrorCode(1_008_005_001, "商品分类不正确,原因:必须使用第二级的商品分类及以下"); |
| 37 | - ErrorCode SPU_NOT_ENABLE = new ErrorCode(1_008_005_002, "商品 SPU【{}】不处于上架状态"); | |
| 38 | - ErrorCode SPU_NOT_RECYCLE = new ErrorCode(1_008_005_003, "商品 SPU 不处于回收站状态"); | |
| 37 | + ErrorCode SPU_SAVE_FAIL_COUPON_TEMPLATE_NOT_EXISTS = new ErrorCode(1_008_005_002, "商品 SPU 保存失败,原因:优惠卷不存在"); | |
| 38 | + ErrorCode SPU_NOT_ENABLE = new ErrorCode(1_008_005_003, "商品 SPU【{}】不处于上架状态"); | |
| 39 | + ErrorCode SPU_NOT_RECYCLE = new ErrorCode(1_008_005_004, "商品 SPU 不处于回收站状态"); | |
| 39 | 40 | |
| 40 | 41 | // ========== 商品 SKU 1-008-006-000 ========== |
| 41 | 42 | ErrorCode SKU_NOT_EXISTS = new ErrorCode(1_008_006_000, "商品 SKU 不存在"); | ... | ... |
yudao-module-mall/yudao-module-product-biz/pom.xml
| ... | ... | @@ -28,6 +28,11 @@ |
| 28 | 28 | <artifactId>yudao-module-member-api</artifactId> |
| 29 | 29 | <version>${revision}</version> |
| 30 | 30 | </dependency> |
| 31 | + <dependency> | |
| 32 | + <groupId>cn.iocoder.boot</groupId> | |
| 33 | + <artifactId>yudao-module-promotion-api</artifactId> | |
| 34 | + <version>${revision}</version> | |
| 35 | + </dependency> | |
| 31 | 36 | |
| 32 | 37 | <!-- 业务组件 --> |
| 33 | 38 | <dependency> | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java
| ... | ... | @@ -11,6 +11,8 @@ import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; |
| 11 | 11 | import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; |
| 12 | 12 | import cn.iocoder.yudao.module.product.service.sku.ProductSkuService; |
| 13 | 13 | import cn.iocoder.yudao.module.product.service.spu.ProductSpuService; |
| 14 | +import cn.iocoder.yudao.module.promotion.api.coupon.CouponTemplateApi; | |
| 15 | +import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 14 | 16 | import io.swagger.v3.oas.annotations.Operation; |
| 15 | 17 | import io.swagger.v3.oas.annotations.Parameter; |
| 16 | 18 | import io.swagger.v3.oas.annotations.tags.Tag; |
| ... | ... | @@ -43,6 +45,9 @@ public class ProductSpuController { |
| 43 | 45 | @Resource |
| 44 | 46 | private ProductSkuService productSkuService; |
| 45 | 47 | |
| 48 | + @Resource | |
| 49 | + private CouponTemplateApi couponTemplateApi; | |
| 50 | + | |
| 46 | 51 | @PostMapping("/create") |
| 47 | 52 | @Operation(summary = "创建商品 SPU") |
| 48 | 53 | @PreAuthorize("@ss.hasPermission('product:spu:create')") |
| ... | ... | @@ -87,7 +92,10 @@ public class ProductSpuController { |
| 87 | 92 | } |
| 88 | 93 | // 查询商品 SKU |
| 89 | 94 | List<ProductSkuDO> skus = productSkuService.getSkuListBySpuId(spu.getId()); |
| 90 | - return success(ProductSpuConvert.INSTANCE.convertForSpuDetailRespVO(spu, skus)); | |
| 95 | + // 查询优惠卷 | |
| 96 | + List<CouponTemplateRespDTO> couponTemplateList = couponTemplateApi.getCouponTemplateListByIds( | |
| 97 | + spu.getGiveCouponTemplateIds()); | |
| 98 | + return success(ProductSpuConvert.INSTANCE.convertForSpuDetailRespVO(spu, skus, couponTemplateList)); | |
| 91 | 99 | } |
| 92 | 100 | |
| 93 | 101 | @GetMapping("/list-all-simple") | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuBaseVO.java
| ... | ... | @@ -96,19 +96,31 @@ public class ProductSpuBaseVO { |
| 96 | 96 | @NotNull(message = "商品赠送积分不能为空") |
| 97 | 97 | private Integer giveIntegral; |
| 98 | 98 | |
| 99 | - @Schema(description = "赠送的优惠劵编号的数组", example = "[1, 10]") // TODO 这块前端还未实现 | |
| 100 | - private List<Long> giveCouponTemplateIds; | |
| 99 | + @Schema(description = "赠送的优惠劵数组包含优惠券编号和名称") | |
| 100 | + private List<GiveCouponTemplate> giveCouponTemplate; | |
| 101 | 101 | |
| 102 | 102 | @Schema(description = "分销类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") |
| 103 | 103 | @NotNull(message = "商品分销类型不能为空") |
| 104 | 104 | private Boolean subCommissionType; |
| 105 | 105 | |
| 106 | - @Schema(description = "活动展示顺序", example = "[1, 3, 2, 4, 5]") // TODO 这块前端还未实现 | |
| 106 | + @Schema(description = "活动展示顺序", example = "[1, 3, 2, 4, 5]") | |
| 107 | 107 | private List<Integer> activityOrders; |
| 108 | 108 | |
| 109 | 109 | // ========== 统计相关字段 ========= |
| 110 | 110 | |
| 111 | - @Schema(description = "虚拟销量", example = "芋道") | |
| 111 | + @Schema(description = "虚拟销量", example = "66") | |
| 112 | 112 | private Integer virtualSalesCount; |
| 113 | 113 | |
| 114 | + @Schema(description = "管理后台 - 商品 SPU 赠送的优惠卷") | |
| 115 | + @Data | |
| 116 | + public static class GiveCouponTemplate { | |
| 117 | + | |
| 118 | + @Schema(description = "模板编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | |
| 119 | + private Long id; | |
| 120 | + | |
| 121 | + @Schema(description = "优惠劵名", requiredMode = Schema.RequiredMode.REQUIRED, example = "春节送送送") | |
| 122 | + private String name; | |
| 123 | + | |
| 124 | + } | |
| 125 | + | |
| 114 | 126 | } | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/spu/ProductSpuConvert.java
| ... | ... | @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert; |
| 12 | 12 | import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; |
| 13 | 13 | import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; |
| 14 | 14 | import cn.iocoder.yudao.module.product.enums.DictTypeConstants; |
| 15 | +import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 15 | 16 | import org.mapstruct.Mapper; |
| 16 | 17 | import org.mapstruct.Mapping; |
| 17 | 18 | import org.mapstruct.Named; |
| ... | ... | @@ -100,10 +101,14 @@ public interface ProductSpuConvert { |
| 100 | 101 | |
| 101 | 102 | List<AppProductSpuDetailRespVO.Sku> convertListForGetSpuDetail(List<ProductSkuDO> skus); |
| 102 | 103 | |
| 103 | - default ProductSpuDetailRespVO convertForSpuDetailRespVO(ProductSpuDO spu, List<ProductSkuDO> skus) { | |
| 104 | - ProductSpuDetailRespVO detailRespVO = convert03(spu); | |
| 105 | - detailRespVO.setSkus(ProductSkuConvert.INSTANCE.convertList(skus)); | |
| 106 | - return detailRespVO; | |
| 104 | + List<ProductSpuDetailRespVO.GiveCouponTemplate> convertList04(List<CouponTemplateRespDTO> couponTemplateList); | |
| 105 | + | |
| 106 | + default ProductSpuDetailRespVO convertForSpuDetailRespVO(ProductSpuDO spu, List<ProductSkuDO> skus, | |
| 107 | + List<CouponTemplateRespDTO> couponTemplateList) { | |
| 108 | + ProductSpuDetailRespVO respVO = convert03(spu); | |
| 109 | + respVO.setSkus(ProductSkuConvert.INSTANCE.convertList(skus)); | |
| 110 | + respVO.setGiveCouponTemplate(convertList04(couponTemplateList)); | |
| 111 | + return respVO; | |
| 107 | 112 | } |
| 108 | 113 | |
| 109 | 114 | default List<ProductSpuDetailRespVO> convertForSpuDetailRespListVO(List<ProductSpuDO> spus, List<ProductSkuDO> skus) { | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java
| ... | ... | @@ -16,8 +16,10 @@ import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper; |
| 16 | 16 | import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; |
| 17 | 17 | import cn.iocoder.yudao.module.product.service.brand.ProductBrandService; |
| 18 | 18 | import cn.iocoder.yudao.module.product.service.category.ProductCategoryService; |
| 19 | -import cn.iocoder.yudao.module.product.service.property.ProductPropertyValueService; | |
| 20 | 19 | import cn.iocoder.yudao.module.product.service.sku.ProductSkuService; |
| 20 | +import cn.iocoder.yudao.module.promotion.api.coupon.CouponTemplateApi; | |
| 21 | +import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 22 | +import cn.iocoder.yudao.module.promotion.enums.common.PromotionTypeEnum; | |
| 21 | 23 | import com.google.common.collect.Maps; |
| 22 | 24 | import org.springframework.context.annotation.Lazy; |
| 23 | 25 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -26,10 +28,10 @@ import org.springframework.validation.annotation.Validated; |
| 26 | 28 | |
| 27 | 29 | import javax.annotation.Resource; |
| 28 | 30 | import java.util.*; |
| 31 | +import java.util.stream.Collectors; | |
| 29 | 32 | |
| 30 | 33 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 31 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getMinValue; | |
| 32 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue; | |
| 34 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | |
| 33 | 35 | import static cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO.CATEGORY_LEVEL; |
| 34 | 36 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; |
| 35 | 37 | |
| ... | ... | @@ -52,9 +54,9 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 52 | 54 | private ProductBrandService brandService; |
| 53 | 55 | @Resource |
| 54 | 56 | private ProductCategoryService categoryService; |
| 57 | + | |
| 55 | 58 | @Resource |
| 56 | - @Lazy // 循环依赖,避免报错 | |
| 57 | - private ProductPropertyValueService productPropertyValueService; | |
| 59 | + private CouponTemplateApi couponTemplateApi; | |
| 58 | 60 | |
| 59 | 61 | @Override |
| 60 | 62 | @Transactional(rollbackFor = Exception.class) |
| ... | ... | @@ -62,6 +64,9 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 62 | 64 | // 校验分类、品牌 |
| 63 | 65 | validateCategory(createReqVO.getCategoryId()); |
| 64 | 66 | brandService.validateProductBrand(createReqVO.getBrandId()); |
| 67 | + // 校验优惠券 | |
| 68 | + Set<Long> giveCouponTemplateIds = convertSet(createReqVO.getGiveCouponTemplate(), ProductSpuCreateReqVO.GiveCouponTemplate::getId); | |
| 69 | + validateCouponTemplate(giveCouponTemplateIds); | |
| 65 | 70 | // 校验 SKU |
| 66 | 71 | List<ProductSkuCreateOrUpdateReqVO> skuSaveReqList = createReqVO.getSkus(); |
| 67 | 72 | productSkuService.validateSkuList(skuSaveReqList, createReqVO.getSpecType()); |
| ... | ... | @@ -69,6 +74,8 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 69 | 74 | ProductSpuDO spu = ProductSpuConvert.INSTANCE.convert(createReqVO); |
| 70 | 75 | // 初始化 SPU 中 SKU 相关属性 |
| 71 | 76 | initSpuFromSkus(spu, skuSaveReqList); |
| 77 | + // 设置优惠券 | |
| 78 | + spu.setGiveCouponTemplateIds(CollUtil.newArrayList(giveCouponTemplateIds)); | |
| 72 | 79 | // 插入 SPU |
| 73 | 80 | productSpuMapper.insert(spu); |
| 74 | 81 | // 插入 SKU |
| ... | ... | @@ -85,6 +92,9 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 85 | 92 | // 校验分类、品牌 |
| 86 | 93 | validateCategory(updateReqVO.getCategoryId()); |
| 87 | 94 | brandService.validateProductBrand(updateReqVO.getBrandId()); |
| 95 | + // 校验优惠券 | |
| 96 | + Set<Long> giveCouponTemplateIds = convertSet(updateReqVO.getGiveCouponTemplate(), ProductSpuUpdateReqVO.GiveCouponTemplate::getId); | |
| 97 | + validateCouponTemplate(giveCouponTemplateIds); | |
| 88 | 98 | // 校验SKU |
| 89 | 99 | List<ProductSkuCreateOrUpdateReqVO> skuSaveReqList = updateReqVO.getSkus(); |
| 90 | 100 | productSkuService.validateSkuList(skuSaveReqList, updateReqVO.getSpecType()); |
| ... | ... | @@ -92,6 +102,8 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 92 | 102 | // 更新 SPU |
| 93 | 103 | ProductSpuDO updateObj = ProductSpuConvert.INSTANCE.convert(updateReqVO); |
| 94 | 104 | initSpuFromSkus(updateObj, skuSaveReqList); |
| 105 | + // 设置优惠券 | |
| 106 | + updateObj.setGiveCouponTemplateIds(CollUtil.newArrayList(giveCouponTemplateIds)); | |
| 95 | 107 | productSpuMapper.updateById(updateObj); |
| 96 | 108 | // 批量更新 SKU |
| 97 | 109 | productSkuService.updateSkuList(updateObj.getId(), updateReqVO.getSkus()); |
| ... | ... | @@ -125,6 +137,10 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 125 | 137 | // 默认商品浏览量 |
| 126 | 138 | spu.setBrowseCount(0); |
| 127 | 139 | } |
| 140 | + // 如果活动顺序为空则默认初始化 | |
| 141 | + if (CollUtil.isEmpty(spu.getActivityOrders())) { | |
| 142 | + spu.setActivityOrders(Arrays.stream(PromotionTypeEnum.ARRAYS).boxed().collect(Collectors.toList())); | |
| 143 | + } | |
| 128 | 144 | } |
| 129 | 145 | |
| 130 | 146 | /** |
| ... | ... | @@ -140,6 +156,13 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 140 | 156 | } |
| 141 | 157 | } |
| 142 | 158 | |
| 159 | + private void validateCouponTemplate(Collection<Long> ids) { | |
| 160 | + List<CouponTemplateRespDTO> couponTemplateList = couponTemplateApi.getCouponTemplateListByIds(ids); | |
| 161 | + if (couponTemplateList.size() != ids.size()) { | |
| 162 | + throw exception(SPU_SAVE_FAIL_COUPON_TEMPLATE_NOT_EXISTS); | |
| 163 | + } | |
| 164 | + } | |
| 165 | + | |
| 143 | 166 | @Override |
| 144 | 167 | public List<ProductSpuDO> validateSpuList(Collection<Long> ids) { |
| 145 | 168 | if (CollUtil.isEmpty(ids)) { | ... | ... |
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/CouponTemplateApi.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.api.coupon; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 4 | + | |
| 5 | +import java.util.Collection; | |
| 6 | +import java.util.List; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * 优惠劵模版 API 接口 | |
| 10 | + * | |
| 11 | + * @author HUIHUI | |
| 12 | + */ | |
| 13 | +public interface CouponTemplateApi { | |
| 14 | + | |
| 15 | + /** | |
| 16 | + * 获得优惠券模版的精简信息列表 | |
| 17 | + * | |
| 18 | + * @param ids 优惠券模版编号 | |
| 19 | + * @return 优惠券模版的精简信息列表 | |
| 20 | + */ | |
| 21 | + List<CouponTemplateRespDTO> getCouponTemplateListByIds(Collection<Long> ids); | |
| 22 | + | |
| 23 | +} | ... | ... |
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/dto/CouponTemplateRespDTO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.api.coupon.dto; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 4 | +import lombok.Data; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * 优惠券模版 Response DTO | |
| 8 | + * | |
| 9 | + * @author HUIHUI | |
| 10 | + */ | |
| 11 | +@Data | |
| 12 | +public class CouponTemplateRespDTO { | |
| 13 | + /** | |
| 14 | + * 模板编号,自增唯一 | |
| 15 | + */ | |
| 16 | + | |
| 17 | + private Long id; | |
| 18 | + /** | |
| 19 | + * 优惠劵名 | |
| 20 | + */ | |
| 21 | + private String name; | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 状态 | |
| 25 | + * | |
| 26 | + * 枚举 {@link CommonStatusEnum} | |
| 27 | + */ | |
| 28 | + private Integer status; | |
| 29 | + | |
| 30 | +} | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/api/coupon/CouponTemplateApiImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.api.coupon; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 4 | +import cn.iocoder.yudao.module.promotion.convert.coupon.CouponTemplateConvert; | |
| 5 | +import cn.iocoder.yudao.module.promotion.service.coupon.CouponTemplateService; | |
| 6 | +import org.springframework.stereotype.Service; | |
| 7 | + | |
| 8 | +import javax.annotation.Resource; | |
| 9 | +import java.util.Collection; | |
| 10 | +import java.util.List; | |
| 11 | + | |
| 12 | +/** | |
| 13 | + * 优惠劵模版 API 接口实现类 | |
| 14 | + * | |
| 15 | + * @author HUIHUI | |
| 16 | + */ | |
| 17 | +@Service | |
| 18 | +public class CouponTemplateApiImpl implements CouponTemplateApi { | |
| 19 | + | |
| 20 | + @Resource | |
| 21 | + private CouponTemplateService couponTemplateService; | |
| 22 | + | |
| 23 | + @Override | |
| 24 | + public List<CouponTemplateRespDTO> getCouponTemplateListByIds(Collection<Long> ids) { | |
| 25 | + return CouponTemplateConvert.INSTANCE.convertList(couponTemplateService.getCouponTemplateListByIds(ids)); | |
| 26 | + } | |
| 27 | + | |
| 28 | +} | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/coupon/CouponTemplateConvert.java
| ... | ... | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.promotion.convert.coupon; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.map.MapUtil; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | +import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponTemplateRespDTO; | |
| 5 | 6 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateCreateReqVO; |
| 6 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplatePageReqVO; |
| 7 | 8 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateRespVO; |
| ... | ... | @@ -58,4 +59,6 @@ public interface CouponTemplateConvert { |
| 58 | 59 | } |
| 59 | 60 | } |
| 60 | 61 | |
| 62 | + List<CouponTemplateRespDTO> convertList(List<CouponTemplateDO> list); | |
| 63 | + | |
| 61 | 64 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/coupon/CouponTemplateMapper.java
| ... | ... | @@ -8,10 +8,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplatePageReqVO; |
| 9 | 9 | import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponTemplateDO; |
| 10 | 10 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 11 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |
| 11 | 12 | import org.apache.ibatis.annotations.Mapper; |
| 12 | -import org.apache.ibatis.annotations.Param; | |
| 13 | 13 | |
| 14 | 14 | import java.time.LocalDateTime; |
| 15 | +import java.util.Collection; | |
| 15 | 16 | import java.util.List; |
| 16 | 17 | import java.util.function.Consumer; |
| 17 | 18 | |
| ... | ... | @@ -39,7 +40,11 @@ public interface CouponTemplateMapper extends BaseMapperX<CouponTemplateDO> { |
| 39 | 40 | .orderByDesc(CouponTemplateDO::getId)); |
| 40 | 41 | } |
| 41 | 42 | |
| 42 | - void updateTakeCount(@Param("id") Long id, @Param("incrCount") Integer incrCount); | |
| 43 | + default void updateTakeCount(Long id, Integer incrCount) { | |
| 44 | + update(null, new LambdaUpdateWrapper<CouponTemplateDO>() | |
| 45 | + .eq(CouponTemplateDO::getId, id) | |
| 46 | + .setSql("take_count = take_count + " + incrCount)); | |
| 47 | + } | |
| 43 | 48 | |
| 44 | 49 | default List<CouponTemplateDO> selectListByTakeType(Integer takeType) { |
| 45 | 50 | return selectList(CouponTemplateDO::getTakeType, takeType); |
| ... | ... | @@ -70,4 +75,8 @@ public interface CouponTemplateMapper extends BaseMapperX<CouponTemplateDO> { |
| 70 | 75 | return canTakeConsumer; |
| 71 | 76 | } |
| 72 | 77 | |
| 78 | + default List<CouponTemplateDO> selectListByIds(Collection<Long> ids) { | |
| 79 | + return selectList(new LambdaQueryWrapperX<CouponTemplateDO>().in(CouponTemplateDO::getId, ids)); | |
| 80 | + } | |
| 81 | + | |
| 73 | 82 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateService.java
| ... | ... | @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponTemplateDO; |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTakeTypeEnum; |
| 9 | 9 | |
| 10 | 10 | import javax.validation.Valid; |
| 11 | +import java.util.Collection; | |
| 11 | 12 | import java.util.List; |
| 12 | 13 | |
| 13 | 14 | /** |
| ... | ... | @@ -91,4 +92,12 @@ public interface CouponTemplateService { |
| 91 | 92 | List<CouponTemplateDO> getCouponTemplateList(List<Integer> canTakeTypes, Integer productScope, |
| 92 | 93 | Long productScopeValue, Integer count); |
| 93 | 94 | |
| 95 | + /** | |
| 96 | + * 获得优惠券模版列表 | |
| 97 | + * | |
| 98 | + * @param ids 优惠券模版编号 | |
| 99 | + * @return 优惠券模版列表 | |
| 100 | + */ | |
| 101 | + List<CouponTemplateDO> getCouponTemplateListByIds(Collection<Long> ids); | |
| 102 | + | |
| 94 | 103 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImpl.java
| ... | ... | @@ -16,6 +16,7 @@ import org.springframework.stereotype.Service; |
| 16 | 16 | import org.springframework.validation.annotation.Validated; |
| 17 | 17 | |
| 18 | 18 | import javax.annotation.Resource; |
| 19 | +import java.util.Collection; | |
| 19 | 20 | import java.util.List; |
| 20 | 21 | import java.util.Objects; |
| 21 | 22 | |
| ... | ... | @@ -126,4 +127,9 @@ public class CouponTemplateServiceImpl implements CouponTemplateService { |
| 126 | 127 | return couponTemplateMapper.selectList(canTakeTypes, productScope, productScopeValue, count); |
| 127 | 128 | } |
| 128 | 129 | |
| 130 | + @Override | |
| 131 | + public List<CouponTemplateDO> getCouponTemplateListByIds(Collection<Long> ids) { | |
| 132 | + return couponTemplateMapper.selectListByIds(ids); | |
| 133 | + } | |
| 134 | + | |
| 129 | 135 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/resources/mapper/coupon/CouponTemplateMapper.xml deleted
| 1 | -<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
| 3 | -<mapper namespace="cn.iocoder.yudao.module.promotion.dal.mysql.coupon.CouponTemplateMapper"> | |
| 4 | - | |
| 5 | - <update id="updateTakeCount"> | |
| 6 | - UPDATE promotion_coupon_template | |
| 7 | - SET take_count = take_count + #{incrCount} | |
| 8 | - WHERE id = #{id} | |
| 9 | - </update> | |
| 10 | - | |
| 11 | -</mapper> |