src/main/java/com/mzl/flower/schedule/ScheduleService.java
@@ -197,4 +197,11 @@ log.info("会员优惠券结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); } @Scheduled(cron = "0 30 0 1 * ?") public void expiredVipCouponRecordList() { log.info("会员优惠券过期开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); couponRecordService.expiredCouponRecordByListCurMonth(); log.info("会员优惠券过期结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); } } src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -75,5 +75,31 @@ boolean checkCurMonVipCouponExists(String couponId, Long customId, LocalDateTime startDateTime,LocalDateTime endDateTime); /** * 优惠券使用 * @param couponId * @param orderId * @return */ boolean useCoupon(String couponId,String orderId); /** * 优惠券退单 * @param couponId * @param orderId * @return */ boolean cancelCouponUsage(String couponId,String orderId); /** * 根据订单号查找优惠券信息 * @param orderId * @return */ List<CouponRecordDO> getCouponListByOrderId(String orderId) ; CouponRecordDO getCouponByOrderId(String orderId) ; } src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -249,6 +249,7 @@ public boolean grantVipCouponRecordList() { try{ LocalDateTime now = LocalDateTime.now(); LocalDateTime firstDayStart = now.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0).withNano(0); LocalDateTime lastDayEnd = now.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59).withNano(0); @@ -424,4 +425,62 @@ return baseMapper.selectCount(queryWrapper)>0; } @Transactional @Override public boolean useCoupon(String couponId, String orderId) { // 优惠券为空 if(StringUtils.isBlank(couponId)){ throw new IllegalArgumentException("无效的优惠券"); } // 验证优惠券存在且有效 final CouponRecordDO couponRecordDO = baseMapper.selectById(couponId); if(null==couponRecordDO || StringUtils.isBlank(couponRecordDO.getOrderId()) ){ throw new IllegalArgumentException("无效的优惠券"); } if(couponRecordDO.getStatus().equals(CouponUsedStatusEnum.USED.getType())){ throw new IllegalArgumentException("优惠券已经被使用"); } if(couponRecordDO.getStatus().equals(CouponUsedStatusEnum.EXPIRED.getType()) || LocalDateTime.now().isAfter(couponRecordDO.getEffectiveEnd())){ throw new IllegalArgumentException("优惠券已过期"); } if(StringUtils.isBlank(orderId)){ throw new IllegalArgumentException("订单id不能为空"); } // 优惠券使用操作 couponRecordDO.setStatus(CouponUsedStatusEnum.USED.getType()); couponRecordDO.setUsedTime(LocalDateTime.now()); couponRecordDO.setOrderId(orderId); return baseMapper.updateById(couponRecordDO)>0; } @Transactional @Override public boolean cancelCouponUsage(String couponId, String orderId) { // 查询订单使用的优惠券 final CouponRecordDO couponRecordDO = getCouponByOrderId(orderId); // TODO return false; } @Override public List<CouponRecordDO> getCouponListByOrderId(String orderId) { QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>(); queryWrapper.lambda().eq(CouponRecordDO::getDeleted,TrueOrFalseEnum.FALSE.isFlag()) .eq(CouponRecordDO::getOrderId,orderId); return baseMapper.selectList(queryWrapper); } @Override public CouponRecordDO getCouponByOrderId(String orderId) { final List<CouponRecordDO> couponRecordDOList = getCouponListByOrderId(orderId); if(CollectionUtils.isNotEmpty(couponRecordDOList)){ return couponRecordDOList.get(0); } return null; } } src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
@@ -66,7 +66,9 @@ @PutMapping("/{id}") @ApiOperation(value = "修改", notes = "修改") public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponRecordDTO dto) { public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponRecordDTO dto) { dto.setId(id); CouponRecordDO couponRecordDO= couponRecordService.getById(dto.getId()); if(null==couponRecordDO){ src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
@@ -65,8 +65,10 @@ @PutMapping("/{id}") @ApiOperation(value = "修改", notes = "修改") public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateActivyDTO dto) { public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateActivyDTO dto) { // 手动设置id值 dto.setId(id); // 信息验证 valid(dto); src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
@@ -5,11 +5,14 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO; import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO; import com.mzl.flower.dto.request.coupon.QueryMineCouponRecordDTO; import com.mzl.flower.dto.response.coupon.CouponTemplateAppVO; 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.CouponGetTypeEnum; import com.mzl.flower.enums.CouponStatusEnum; @@ -19,12 +22,11 @@ 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.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; import org.springframework.web.bind.annotation.*; /** @@ -113,5 +115,26 @@ } @PostMapping("/receive") @ApiOperation(value = "优惠券领取", notes = "优惠券领取") public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponRecordDTO dto) { final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId()); if(null==couponTemplateDO){ throw new ValidationException("优惠券不存在"); } 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())){ throw new ValidationException("优惠券已下架"); } couponRecordService.createCouponRecord(dto); return returnData(R.SUCCESS.getCode(), null); } } src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java
@@ -46,8 +46,10 @@ @PutMapping("/{id}") @ApiOperation(value = "修改", notes = "修改") public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateDTO dto) { public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateDTO dto) { // 手动设置id值 dto.setId(id); CouponTemplateDO couponTemplateDO= couponTemplateService.getById(dto.getId()); if(null==couponTemplateDO){ throw new ValidationException("优惠券不存在"); src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateCustomerController.java
文件已删除 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
@@ -65,8 +65,9 @@ @PutMapping("/{id}") @ApiOperation(value = "修改", notes = "修改") public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplatePointDTO dto) { public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplatePointDTO dto) { // 信息校验 dto.setId(id); valid(dto); CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getId()); @@ -153,9 +154,9 @@ return returnData(R.SUCCESS.getCode(), null); } @PutMapping("/batch/expire") @PostMapping("/batch/expire") @ApiOperation(value = "批量下架", notes = "批量下架") public ResponseEntity<ReturnDataDTO> expireBatch(BatchCouponTemplateDTO dto) { public ResponseEntity<ReturnDataDTO> expireBatch(@RequestBody BatchCouponTemplateDTO dto) { couponTemplateService.expireBatchCouponTemplate(dto); @@ -165,9 +166,9 @@ @PutMapping("/batch/active") @PostMapping("/batch/active") @ApiOperation(value = "批量发布", notes = "批量发布") public ResponseEntity<ReturnDataDTO> activeBatch(BatchCouponTemplateDTO dto) { public ResponseEntity<ReturnDataDTO> activeBatch(@RequestBody BatchCouponTemplateDTO dto) { couponTemplateService.activeBatchCouponTemplate(dto); @@ -175,9 +176,9 @@ } @DeleteMapping("/batch/del") @PostMapping("/batch/del") @ApiOperation(value = "批量删除", notes = "批量删除") public ResponseEntity<ReturnDataDTO> deleteBatch(BatchCouponTemplateDTO dto) { public ResponseEntity<ReturnDataDTO> deleteBatch(@RequestBody BatchCouponTemplateDTO dto) { couponTemplateService.deleteBatchCouponTemplate(dto); return returnData(R.SUCCESS.getCode(), null); src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
@@ -7,7 +7,6 @@ import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.dto.request.coupon.CreateCouponTemplateBO; import com.mzl.flower.dto.request.coupon.CreateCouponTemplatePointDTO; import com.mzl.flower.dto.request.coupon.CreateCouponTemplateUserDTO; import com.mzl.flower.dto.request.coupon.QueryCouponDTO; import com.mzl.flower.dto.response.coupon.CouponTemplatePointVO; @@ -29,11 +28,6 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** @@ -81,8 +75,9 @@ @PutMapping("/{id}") @ApiOperation(value = "修改", notes = "修改") public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateUserDTO dto) { public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateUserDTO dto) { dto.setId(id); if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) { throw new ValidationException("订单金额不能小于折扣金额"); src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
@@ -63,8 +63,9 @@ @PutMapping("/{id}") @ApiOperation(value = "修改", notes = "修改") public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateVipDTO dto) { public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateVipDTO dto) { dto.setId(id); // 信息验证 valid(dto);