src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java
@@ -38,4 +38,7 @@ @ApiModelProperty(value = "优惠券模版ID") private String couponId; @ApiModelProperty(value = "优惠券种类") private String category; } src/main/java/com/mzl/flower/enums/CouponGetUserTypeEnum.java
@@ -6,7 +6,7 @@ ALL("all","全部用户"), POINT("point","指定用户"), TARGET("target","指定用户"), ; src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -103,5 +103,11 @@ CouponRecordDO getCouponByOrderId(String orderId) ; /** * 查看当前人员是否已经重复发过此优惠券 * @param couponId * @param customId * @return */ boolean checkUserCouponExists(String couponId, Long customId); } src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -135,7 +135,7 @@ } // 优惠券字段冗余 couponRecordDO.setCategory(couponTemplateDO.getGetUserType()); couponRecordDO.setCategory(couponTemplateDO.getCategory()); couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode()); couponRecordDO.setCouponName(couponTemplateDO.getCouponName()); couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue()); @@ -212,7 +212,7 @@ // 优惠券字段冗余 final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId()); if(null!=couponTemplateDO){ couponRecordDO.setCategory(couponTemplateDO.getGetUserType()); couponRecordDO.setCategory(couponTemplateDO.getCategory()); couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode()); couponRecordDO.setCouponName(couponTemplateDO.getCouponName()); couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue()); @@ -524,4 +524,14 @@ } return null; } @Override public boolean checkUserCouponExists(String couponId, Long customId) { QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>(); queryWrapper.lambda().eq(CouponRecordDO::getDeleted,TrueOrFalseEnum.FALSE.isFlag()) .eq(CouponRecordDO::getCouponId,couponId) .eq(CouponRecordDO::getCustomerId,customId) ; return baseMapper.selectCount(queryWrapper)>0; } } src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -40,6 +40,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** @@ -225,7 +226,7 @@ // 判断当前的优惠券的用户类型是指定用户还是全部用户,如果是指定用户的情况下需要发布优惠券 if (StringUtils.isNotBlank(couponTemplateDO.getGetUserType()) && StringUtils.isNotBlank(couponTemplateDO.getCategory()) && couponTemplateDO.getGetUserType().equals(CouponGetUserTypeEnum.POINT.getType()) && couponTemplateDO.getGetUserType().equals(CouponGetUserTypeEnum.TARGET.getType()) && couponTemplateDO.getCategory().equals(CouponCategoryEnum.USER.getStatus()) ) { @@ -278,7 +279,7 @@ couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode()); couponRecordDO.setCouponName(couponTemplateDO.getCouponName()); // 优惠券种类 couponRecordDO.setCategory(couponTemplateDO.getGetUserType()); couponRecordDO.setCategory(couponTemplateDO.getCategory()); couponRecordDO.setMinOrderAmount(couponTemplateDO.getMinOrderAmount()); couponRecordDO.setCouponDiscountValue(couponTemplateDO.getCouponDiscountValue()); couponRecordDO.setGetType(couponTemplateDO.getGetType()); @@ -290,8 +291,14 @@ // 创建相关信息 couponRecordDO.create(SecurityUtils.getUserId()); return couponRecordDO; }).collect(Collectors.toList()); // 查看当前优惠券是不是已经存在,存在的话则不能添加,防止同一人员重复下发同一张指定的优惠券 if(!couponRecordService.checkUserCouponExists(pointCustomRe.getCouponId(),pointCustomRe.getCustomId())){ return couponRecordDO; }else{ return null; } }).filter(Objects::nonNull).collect(Collectors.toList()); // 批量保存优惠券信息 couponRecordService.saveBatch(couponUsageDOList); src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
@@ -52,7 +52,7 @@ CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 // 设置成活动优惠券 couponTemplateBO.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.ALL.getType()); @@ -81,7 +81,7 @@ BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 // 设置成活动优惠券 couponTemplateBO.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.ALL.getType()); @@ -112,7 +112,7 @@ @GetMapping("/page") @ApiOperation(value = "查询-分页", notes = "查询-分页") public ResponseEntity<ReturnDataDTO<Page<CouponTemplatePointVO>>> page(Page page, QueryCouponDTO dto) { // 设置只查询积分优惠券的 // 设置只查询活动优惠券的 dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto); return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateActivyVO.class)); @@ -121,7 +121,7 @@ @GetMapping("/list") @ApiOperation(value = "查询-全部", notes = "查询-全部") public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> list(QueryCouponDTO dto) { // 设置只查询积分优惠券的 // 设置只查询活动优惠券的 dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateActivyVO.class)); } src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
@@ -13,14 +13,12 @@ import com.mzl.flower.dto.response.coupon.CouponTemplateUserVO; 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.CouponGetUserTypeEnum; import com.mzl.flower.enums.CouponTypeEnum; import com.mzl.flower.enums.CouponUsageTypeEnum; import com.mzl.flower.enums.*; import com.mzl.flower.service.coupon.CouponTemplateService2; import com.mzl.flower.utils.ConverterUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; @@ -60,8 +58,8 @@ BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成指定用户 couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.POINT.getType()); // 设置成积分优惠券 couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.TARGET.getType()); // 设置成用户优惠券 couponTemplateBO.setCategory(CouponCategoryEnum.USER.getStatus()); // 设置默认类型 couponTemplateBO.setUsageType(CouponUsageTypeEnum.GET_AFTER_TIME.getType()); @@ -98,8 +96,8 @@ BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成指定用户 couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.POINT.getType()); // 设置成积分优惠券 couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.TARGET.getType()); // 设置成用户优惠券 couponTemplateBO.setCategory(CouponCategoryEnum.USER.getStatus()); // 设置默认类型 couponTemplateBO.setUsageType(CouponUsageTypeEnum.GET_AFTER_TIME.getType()); @@ -134,7 +132,7 @@ public ResponseEntity<ReturnDataDTO<Page<CouponTemplatePointVO>>> page( Page page, QueryCouponDTO dto ) { // 设置只查询积分优惠券的 // 设置只查询用户优惠券的 dto.setCategory(CouponCategoryEnum.USER.getStatus()); Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto); return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateUserVO.class)); @@ -144,7 +142,7 @@ @ApiOperation(value = "查询-全部", notes = "查询-全部") public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> list(QueryCouponDTO dto ) { // 设置只查询积分优惠券的 // 设置只查询用户优惠券的 dto.setCategory(CouponCategoryEnum.USER.getStatus()); return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateUserVO.class)); } @@ -159,6 +157,16 @@ throw new ValidationException("优惠券不存在"); } if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.ACTIVE.getStatus())){ throw new ValidationException("已发布的的商品不可重复发布"); } if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){ throw new ValidationException("已下架的商品不可重复上架"); } couponTemplateService.activeCouponTemplate(id); return returnData(R.SUCCESS.getCode(), null); src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
@@ -53,7 +53,7 @@ CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 // 设置成会员优惠券 couponTemplateBO.setCategory(CouponCategoryEnum.MEMBER.getStatus()); couponTemplateService.createCouponTemplate(couponTemplateBO); @@ -78,7 +78,7 @@ BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 // 设置成会员优惠券 couponTemplateBO.setCategory(CouponCategoryEnum.MEMBER.getStatus()); couponTemplateService.updateCouponTemplate(couponTemplateBO); @@ -110,7 +110,7 @@ public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVipVO>>> page( Page page, QueryCouponDTO dto ) { // 设置只查询积分优惠券的 // 设置只查询会员优惠券的 dto.setCategory(CouponCategoryEnum.MEMBER.getStatus()); Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto); return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateVipVO.class)); @@ -125,6 +125,34 @@ return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateVipVO.class)); } @PutMapping("/active/{id}") @ApiOperation(value = "发布", notes = "发布") public ResponseEntity<ReturnDataDTO> active(@PathVariable String id) { CouponTemplateDO couponTemplateDO = couponTemplateService.getById(id); if (null == couponTemplateDO) { throw new ValidationException("优惠券不存在"); } couponTemplateService.activeCouponTemplate(id); return returnData(R.SUCCESS.getCode(), null); } @PutMapping("/expire/{id}") @ApiOperation(value = "下架", notes = "下架") public ResponseEntity<ReturnDataDTO> expire(@PathVariable String id) { CouponTemplateDO couponTemplateDO = couponTemplateService.getById(id); if (null == couponTemplateDO) { throw new ValidationException("优惠券不存在"); } couponTemplateService.expireCouponTemplate(id); return returnData(R.SUCCESS.getCode(), null); } private void valid(CreateCouponTemplateVipDTO dto){ src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml
@@ -118,6 +118,11 @@ <if test="param.couponId != null and param.couponId != ''"> and t.coupon_id = #{param.couponId} </if> <if test="param.category != null and param.category != ''"> and t.category = #{param.category} </if> order by t.create_time desc </sql> src/main/resources/mapper/flower/FlowerMapper.xml
@@ -320,7 +320,7 @@ </choose> </when> <otherwise> order by c.create_time desc order by c.update_time desc </otherwise> </choose> </select>