1.优惠券-所有修改方法dto自传id
2.优惠券-积分-批量接口改成post方法
3.优惠券-定时任务-会员优惠券每月一号凌晨未使用自动过期
4.优惠券-优惠券下单接口
已删除1个文件
已修改10个文件
175 ■■■■ 文件已修改
src/main/java/com/mzl/flower/schedule/ScheduleService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateCustomerController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);