From b1bb9bcbe6a451855a298478a6d9690183e2e991 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期五, 30 八月 2024 14:33:50 +0800 Subject: [PATCH] 1.优惠券customerId 改成Long --- src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java | 11 ++ src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java | 4 src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java | 2 src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java | 2 src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java | 29 +++++++ src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java | 9 ++ src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java | 53 ++++++++++++- src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java | 4 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java | 77 +++++++++++++++++++ src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java | 27 ++++++ src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java | 3 src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | 6 + src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml | 5 + 13 files changed, 220 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java index 01a29b8..5d34ca0 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java @@ -72,6 +72,6 @@ @ApiModelProperty(value = "指定的用户列表id") @NotNull(message = "指定的用户列表id不能为空") - private List<String> pointCostomIdList; + private List<Long> pointCostomIdList; } diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java new file mode 100644 index 0000000..a309696 --- /dev/null +++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java @@ -0,0 +1,29 @@ +package com.mzl.flower.dto.request.coupon; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +@ApiModel("App活动优惠券实体类") +public class QueryActivityEffectCouponDTO { + + + @ApiModelProperty(value = "优惠券类型(COUPON_TYPE)" ,hidden = true) + private String couponDiscountType; + + @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)",hidden = true) + private String getType; + + @ApiModelProperty(value = "领取用户类型(COUPON_GET_USER_TYPE)",hidden = true) + private String getUserType; + + @ApiModelProperty(value = "优惠券种类(COUPON_CATEGORY)",hidden = true) + private String category; + + @ApiModelProperty(value = "优惠券状态(COUPON_STATUS)",hidden = true) + private String status; + + +} diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java index 1ea37c0..7f473a7 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java @@ -5,7 +5,7 @@ @Data -public class QueryCouponDTO extends QueryCouponVipDTO { +public class QueryCouponDTO { @ApiModelProperty(value = "id") @@ -29,4 +29,6 @@ @ApiModelProperty(value = "优惠券状态") private String status; + + } diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java index 9abcb4c..76fb073 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java @@ -13,9 +13,7 @@ @ApiModelProperty(value = "优惠券类型") private String couponDiscountType; - @ApiModelProperty(value = "id") private String id; - } diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java index bc9145b..8c3d62a 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java @@ -7,8 +7,8 @@ @Data public class QueryExistCouponDTO { - @ApiModelProperty(value = "优惠券ID") - private String customerId; + @ApiModelProperty(value = "商户ID") + private Long customerId; @ApiModelProperty(value = "优惠券ID") private String couponId; diff --git a/src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java b/src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java new file mode 100644 index 0000000..918f2a5 --- /dev/null +++ b/src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java @@ -0,0 +1,27 @@ +package com.mzl.flower.enums; + +import lombok.Getter; + +/** + * 优惠券领取渠道 + */ +public enum CouponGetTypeEnum { + + + HOME("home","首页弹框"), + ACTIVITY("activity","活动入口"), + CENTER("center","领券中心"), + + + ; + + @Getter + private String type; + + private String desc; + private CouponGetTypeEnum(String type, String desc){ + this.type=type; + this.desc=desc; + } + +} diff --git a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java index 5122677..142bbfa 100644 --- a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java +++ b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.coupon.BatchCouponTemplateDTO; import com.mzl.flower.dto.request.coupon.QueryActivePointCouponDTO; +import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO; import com.mzl.flower.dto.request.coupon.QueryCouponDTO; import com.mzl.flower.dto.response.coupon.CouponTemplateVO; import com.mzl.flower.entity.coupon.CouponTemplateDO; @@ -46,4 +47,6 @@ List<CouponTemplateVO> getCouponPointList(@Param("param") QueryActivePointCouponDTO dto); Page<CouponTemplateVO> getPointPage(Page page,@Param("param") QueryActivePointCouponDTO dto); + + List<CouponTemplateVO> getActivityEffectList(@Param("param") QueryActivityEffectCouponDTO dto); } diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java index 28a7355..46fe72b 100644 --- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java +++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java @@ -56,6 +56,15 @@ * @param queryExistCouponDTO * @return */ - int getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO); + Integer getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO); + + /** + * 根据优惠券的ID来查找已经领取的优惠券的数量 + * @param couponId + * @return + */ + Integer getExistGainCouponRecordAmountById(String couponId); + + Integer getUserGainCouponRecordAmountById(String couponId,Long customerId); } diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java index 648effb..a1b7339 100644 --- a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java +++ b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java @@ -82,5 +82,14 @@ */ Page<CouponTemplateVO> getPointPage(Page page, QueryActivePointCouponDTO dto); + /** + * 获取活动优惠券 + * 1.需要领取时间在有效期内的 + * 2.已经发布的 + * @param dto + * @return + */ + List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto); + void exchangeCoupon(ExchangeCouponDTO dto); } diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java index a56b81e..68ce170 100644 --- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java @@ -67,6 +67,8 @@ @Override public boolean createCouponRecord(CreateCouponRecordDTO dto) { + // TODO 需要控制超领 + final Customer customer = customerMapper.selectById(dto.getCustomerId()); if(null==customer){ throw new ValidationException("商户信息不存在"); @@ -77,10 +79,32 @@ throw new ValidationException("优惠券不存在"); } - // TODO 活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发 + // 活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发 + if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && ( + couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) || couponTemplateDO.getCategory().equals(CouponCategoryEnum.POINT.getStatus()) + )){ + // 获取当前优惠券已经领取的数量 + final Integer gainTotal = getExistGainCouponRecordAmountById(couponTemplateDO.getId()); + if(couponTemplateDO.getCouponAmount().compareTo(gainTotal)<=0){ + throw new ValidationException("当前优惠券已经领完!"); + } + } + // 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券 + if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) ){ + // 查看当前优惠券的领取时间在不在设置的领取时间范围类 + LocalDateTime now = LocalDateTime.now(); + // 判断当前时间是否在领取时间范围内 + if (!(now.isAfter(couponTemplateDO.getGetStartDate()) && now.isBefore(couponTemplateDO.getGetEndDate()))) { + throw new ValidationException("当前时间不在优惠券的领取时间范围内,无法操作!"); + } - // TODO 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券 + // 获取当前优惠券已经领取的数量 + final Integer customGainTotal = getUserGainCouponRecordAmountById(couponTemplateDO.getId(),customer.getId()); + if(couponTemplateDO.getGetLimit().compareTo(customGainTotal)<=0){ + throw new ValidationException("超出个人领取限制,每人限领"+couponTemplateDO.getGetLimit()+"张!"); + } + } CouponRecordDO couponRecordDO=new CouponRecordDO(); @@ -146,7 +170,6 @@ } } - return baseMapper.insert(couponRecordDO)>0; } @@ -297,13 +320,33 @@ } @Override - public int getExistCouponAmount(QueryExistCouponDTO dto) { + public Integer getExistCouponAmount(QueryExistCouponDTO dto) { QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>(); queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag()) .eq(StringUtils.isNotBlank(dto.getCouponId()), CouponRecordDO::getCouponId,dto.getCouponId()) - .eq(StringUtils.isNotBlank(dto.getCustomerId()),CouponRecordDO::getCustomerId,dto.getCustomerId()) + .eq(null!=dto.getCustomerId(),CouponRecordDO::getCustomerId,dto.getCustomerId()) .eq(StringUtils.isNotBlank(dto.getCategory()),CouponRecordDO::getCategory,dto.getCategory()); return baseMapper.selectCount(queryWrapper); } + + @Override + public Integer getExistGainCouponRecordAmountById(String couponId) { + QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag()) + .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId) + ; + return baseMapper.selectCount(queryWrapper); + } + + @Override + public Integer getUserGainCouponRecordAmountById(String couponId, Long customerId) { + QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag()) + .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId) + .eq(null!=customerId,CouponRecordDO::getCustomerId,customerId) + ; + + return baseMapper.selectCount(queryWrapper); + } } diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java index d5df0b5..6364853 100644 --- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java +++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java @@ -382,4 +382,10 @@ customerPointDetailMapper.insert(detail); } + @Override + public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) { + + return couponTemplateMapperCustom.getActivityEffectList(dto); + } + } diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java new file mode 100644 index 0000000..7108d92 --- /dev/null +++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java @@ -0,0 +1,77 @@ +package com.mzl.flower.web.v2.coupon; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.base.BaseController; +import com.mzl.flower.base.R; +import com.mzl.flower.base.ReturnDataDTO; +import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO; +import com.mzl.flower.dto.request.coupon.QueryCouponDTO; +import com.mzl.flower.dto.response.coupon.CouponTemplateVO; +import com.mzl.flower.enums.CouponCategoryEnum; +import com.mzl.flower.enums.CouponGetTypeEnum; +import com.mzl.flower.enums.CouponStatusEnum; +import com.mzl.flower.service.coupon.CouponTemplateService2; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +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.RestController; + + +/** + * @author @TaoJie + * @since 2024-08-22 + */ +@RestController +@RequestMapping("/api/v2/coupon/app") +@Api(value = "优惠券管理-小程序", tags = "优惠券管理-小程序") +@Validated +public class CouponTemplateAppController extends BaseController { + + @Autowired + CouponTemplateService2 couponTemplateService; + + @GetMapping("/home/list") + @ApiOperation(value = "查询-首页弹框", notes = "查询-首页弹框") + public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> homeList(QueryActivityEffectCouponDTO dto) { + // TODO 需要查找到领取时间优惠券的开始时间和结束时间内的优惠券 + + // 活动优惠券 + dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); + // 已经发布 + dto.setStatus(CouponStatusEnum.ACTIVE.getStatus()); + // 首页弹窗 + dto.setGetType(CouponGetTypeEnum.HOME.getType()); + + couponTemplateService.getActivityEffectList(dto); + + return returnData(R.SUCCESS.getCode(),null); + } + + @GetMapping("/activy/list") + @ApiOperation(value = "查询-活动", notes = "查询-活动") + public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> activyList(QueryActivityEffectCouponDTO dto) { + // TODO + + return returnData(R.SUCCESS.getCode(),null); + } + + @GetMapping("/center/list") + @ApiOperation(value = "查询-中心", notes = "查询-中心") + public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> centerList(QueryActivityEffectCouponDTO dto) { + // TODO + + return returnData(R.SUCCESS.getCode(),null); + } + + + + + + + +} diff --git a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml index 1fca610..6340109 100644 --- a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml +++ b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml @@ -69,6 +69,11 @@ <include refid="QueryPointSql" /> </select> +<!-- app活动优惠券--> + <select id="getActivityEffectList" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO"> + + </select> + <sql id="QueryPointSql"> select * from t_coupon_template -- Gitblit v1.9.3