src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java
@@ -26,4 +26,7 @@ @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)") private String category; @ApiModelProperty(value = "优惠券状态") private String status; } src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
对比新文件 @@ -0,0 +1,19 @@ package com.mzl.flower.dto.request.coupon; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class QueryExistCouponDTO { @ApiModelProperty(value = "优惠券ID") private String customerId; @ApiModelProperty(value = "优惠券ID") private String couponId; @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)") private String category; } src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -1,12 +1,13 @@ package com.mzl.flower.service.coupon; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO; import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO; import com.mzl.flower.dto.request.coupon.QueryCouponStatisticsBO; import com.mzl.flower.dto.request.coupon.QueryExistCouponDTO; import com.mzl.flower.dto.response.coupon.CouponRecordVO; import com.mzl.flower.entity.coupon.CouponRecordDO; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -49,4 +50,12 @@ int statisCouponTemplateCurMonCount(QueryCouponStatisticsBO queryCouponStatisticsBO); int statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO); /** * 根据优惠券种类,优惠券ID,用户的ID查找优惠券的记录数量 * @param queryExistCouponDTO * @return */ int getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO); } src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -9,15 +9,13 @@ import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO; import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO; import com.mzl.flower.dto.request.coupon.QueryCouponStatisticsBO; import com.mzl.flower.dto.request.coupon.QueryExistCouponDTO; import com.mzl.flower.dto.response.coupon.CouponRecordVO; import com.mzl.flower.entity.coupon.CouponRecordDO; import com.mzl.flower.entity.coupon.CouponTemplateDO; import com.mzl.flower.entity.customer.Customer; import com.mzl.flower.entity.system.User; import com.mzl.flower.enums.CouponCategoryEnum; import com.mzl.flower.enums.CouponUsageTimeTypeEnum; import com.mzl.flower.enums.CouponUsageTypeEnum; import com.mzl.flower.enums.CouponUsedStatusEnum; import com.mzl.flower.enums.*; import com.mzl.flower.mapper.coupon.CouponRecordMapper; import com.mzl.flower.mapper.coupon.CouponRecordMapperCustom; import com.mzl.flower.mapper.customer.CustomerMapper; @@ -74,14 +72,27 @@ throw new ValidationException("商户信息不存在"); } final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId()); // TODO 活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发 // TODO 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券 CouponRecordDO couponRecordDO=new CouponRecordDO(); BeanUtils.copyProperties(dto,couponRecordDO); couponRecordDO.create(SecurityUtils.getUserId()); // 设置为待使用状态 couponRecordDO.setStatus(CouponUsedStatusEnum.UNUSED.getType()); // 根据商户设置用户id if(StringUtils.isBlank(dto.getUserId()) && StringUtils.isNotBlank(customer.getUserId())){ couponRecordDO.setUserId(customer.getUserId()); } // 优惠券字段冗余 final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId()); if(null!=couponTemplateDO){ couponRecordDO.setCategory(couponTemplateDO.getGetUserType()); couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode()); @@ -125,11 +136,11 @@ } if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.HOUR.getType())) { // 小时 couponRecordDO.setEffectiveEnd(currentTime.plusDays(couponTemplateDO.getUsageTimeNum())); couponRecordDO.setEffectiveEnd(currentTime.plusHours(couponTemplateDO.getUsageTimeNum())); } if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.MINUTE.getType())) { // 分钟 couponRecordDO.setEffectiveEnd(currentTime.plusDays(couponTemplateDO.getUsageTimeNum())); couponRecordDO.setEffectiveEnd(currentTime.plusMinutes(couponTemplateDO.getUsageTimeNum())); } } @@ -285,4 +296,15 @@ public int statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO) { return couponRecordMapperCustom.statisCouponPointCurMonPointAmonut(queryCouponStatisticsBO); } @Override public int 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(StringUtils.isNotBlank(dto.getCategory()),CouponRecordDO::getCategory,dto.getCategory()); return baseMapper.selectCount(queryWrapper); } } src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
@@ -52,10 +52,10 @@ throw new ValidationException("优惠券不存在"); } if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && !couponTemplateDO.getStatus().equals(CouponStatusEnum.INACTIVE.getStatus())){ if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.INACTIVE.getStatus())){ throw new ValidationException("优惠券还未发布"); } if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && !couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){ if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){ throw new ValidationException("优惠券已下架"); } src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
@@ -11,6 +11,7 @@ import com.mzl.flower.dto.response.coupon.CouponTemplateVO; import com.mzl.flower.entity.coupon.CouponTemplateDO; import com.mzl.flower.enums.CouponCategoryEnum; import com.mzl.flower.enums.CouponStatusEnum; import com.mzl.flower.enums.CouponTypeEnum; import com.mzl.flower.enums.CouponUsageTypeEnum; import com.mzl.flower.service.coupon.CouponTemplateService2; @@ -190,6 +191,15 @@ return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(couponTemplateVO, CouponTemplatePointVO.class)); } @GetMapping("/active/list") @ApiOperation(value = "查询-全部", notes = "查询-全部") public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> activelist() { // 设置只查询积分优惠券的 QueryCouponDTO dto=new QueryCouponDTO(); dto.setCategory(CouponCategoryEnum.POINT.getStatus()); dto.setStatus(CouponStatusEnum.ACTIVE.getStatus()); return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplatePointVO.class)); } private void valid(CreateCouponTemplatePointDTO dto){ src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
@@ -70,11 +70,11 @@ create_by_user.nick_name as createByName, IFNULL(get_num.cnt, 0) as getNum, IFNULL(t.coupon_amount, 0) - IFNULL(get_num.cnt, 0) as unGetNum from t_coupon_template t left join t_user create_by_user on t.create_by =create_by_user.id left join (select coupon_template_id,count(1) as cnt from t_coupon_usage where deleted=0 group by coupon_template_id) get_num on t.id=get_num.coupon_template_id from t_coupon_template t left join t_user create_by_user on t.create_by =create_by_user.id left join (select coupon_id,count(1) as cnt from t_coupon_record where deleted=0 group by coupon_id) get_num on t.id=get_num.coupon_id ) t where t.deleted=0 <if test="param.name != null and param.name != ''"> @@ -95,6 +95,9 @@ <if test="param.category != null and param.category != ''"> AND t.category = #{param.category} </if> <if test="param.status != null and param.status != ''"> AND t.status = #{param.status} </if> order by t.create_time desc </sql>