diff --git a/play-admin/src/main/java/com/starry/admin/modules/shop/controller/PlayCouponInfoController.java b/play-admin/src/main/java/com/starry/admin/modules/shop/controller/PlayCouponInfoController.java index 0ce05bc..4cc61f4 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/shop/controller/PlayCouponInfoController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/shop/controller/PlayCouponInfoController.java @@ -18,12 +18,10 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; - import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import javax.annotation.Resource; - import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -146,6 +144,10 @@ public class PlayCouponInfoController { } entity.setDiscountContent(discountContent); entity.setCouponOnLineState("1"); + // 领取白名单校验:当为2时必须配置白名单 + if ("2".equals(vo.getClaimConditionType()) && (vo.getCustomWhitelist() == null || vo.getCustomWhitelist().isEmpty())) { + throw new CustomException("领取条件为白名单时,必须设置领取白名单"); + } boolean success = playCouponInfoService.create(entity); if (success) { return R.ok(); diff --git a/play-admin/src/main/java/com/starry/admin/modules/shop/module/entity/PlayCouponInfoEntity.java b/play-admin/src/main/java/com/starry/admin/modules/shop/module/entity/PlayCouponInfoEntity.java index f22e149..5d0ed94 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/shop/module/entity/PlayCouponInfoEntity.java +++ b/play-admin/src/main/java/com/starry/admin/modules/shop/module/entity/PlayCouponInfoEntity.java @@ -118,10 +118,16 @@ public class PlayCouponInfoEntity extends BaseEntity { private Integer clerkObtainedMaxQuantity; /** - * 领取条件类型(0:所有人可领取,1:指定条件领取) + * 领取条件类型:0=所有人可领取;1=按条件领取;2=仅白名单可领取。 */ private String claimConditionType; + /** + * 领取白名单(claimConditionType=2 生效)。JSON存储用户ID列表。 + */ + @TableField(typeHandler = StringTypeHandler.class) + private List customWhitelist; + /** * 顾客等级选择状态(0:未选择,1:选择) */ diff --git a/play-admin/src/main/java/com/starry/admin/modules/shop/module/enums/CouponClaimConditionType.java b/play-admin/src/main/java/com/starry/admin/modules/shop/module/enums/CouponClaimConditionType.java new file mode 100644 index 0000000..299646b --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/shop/module/enums/CouponClaimConditionType.java @@ -0,0 +1,25 @@ +package com.starry.admin.modules.shop.module.enums; + +/** + * 优惠券领取条件类型 + */ +public enum CouponClaimConditionType { + ALL("0"), + FILTER("1"), + WHITELIST("2"); + + private final String code; + + CouponClaimConditionType(String code) { + this.code = code; + } + + public String code() { return code; } + + public static CouponClaimConditionType of(String code) { + for (CouponClaimConditionType t : values()) { + if (t.code.equals(code)) return t; + } + return ALL; + } +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoAddVo.java b/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoAddVo.java index 972dbd4..34f474c 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoAddVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoAddVo.java @@ -120,12 +120,17 @@ public class PlayCouponInfoAddVo { private Integer clerkObtainedMaxQuantity; /** - * 领取条件类型(0:所有人可领取,1:指定条件领取) + * 领取条件类型:0=所有人;1=按条件;2=白名单。 */ @NotNull(message = "领取条件类型不能为空") - @Pattern(regexp = "[0|1]", message = "店员范围只能为0或者1") + @Pattern(regexp = "^(0|1|2)$", message = "领取条件类型只能为0或1或2") private String claimConditionType; + /** + * 领取白名单(claimConditionType=2 时校验):用户ID列表 + */ + private List customWhitelist; + /** * 顾客等级选择状态(0:未选择,1:选择) */ diff --git a/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoReturnVo.java index 8e00e02..18bb1d1 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoReturnVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/shop/module/vo/PlayCouponInfoReturnVo.java @@ -109,10 +109,16 @@ public class PlayCouponInfoReturnVo { private Integer clerkObtainedMaxQuantity; /** - * 领取条件类型(0:所有人可领取,1:指定条件领取) + * 领取条件类型:0=所有人;1=按条件;2=白名单。 */ private String claimConditionType; + /** + * 领取白名单(claimConditionType=2 生效) + */ + @TableField(typeHandler = StringTypeHandler.class) + private List customWhitelist; + /** * 顾客等级选择状态(0:未选择,1:选择) */ diff --git a/play-admin/src/main/java/com/starry/admin/modules/shop/service/impl/PlayCouponInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/shop/service/impl/PlayCouponInfoServiceImpl.java index c7a3911..9dbbb9d 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/shop/service/impl/PlayCouponInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/shop/service/impl/PlayCouponInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.starry.admin.common.exception.CustomException; import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity; import com.starry.admin.modules.shop.mapper.PlayCouponInfoMapper; import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity; +import com.starry.admin.modules.shop.module.enums.CouponClaimConditionType; import com.starry.admin.modules.shop.module.vo.PlayCouponInfoQueryVo; import com.starry.admin.modules.shop.module.vo.PlayCouponInfoReturnVo; import com.starry.admin.modules.shop.service.IPlayCouponInfoService; @@ -84,26 +85,32 @@ public class PlayCouponInfoServiceImpl extends ServiceImpl