src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponRecordAppDTO.java
对比新文件 @@ -0,0 +1,21 @@ package com.mzl.flower.dto.request.coupon; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; @Data public class CreateCouponRecordAppDTO { /** * 优惠券ID */ @ApiModelProperty(value = "优惠券ID") @NotEmpty(message = "优惠券ID不能为空") private String couponId; @ApiModelProperty(value = "商户ID",hidden = true) private Long customerId; } src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateDTO.java
@@ -2,9 +2,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.mzl.flower.base.BaseAutoEntity; import com.mzl.flower.base.BaseEntity; import com.mzl.flower.base.annotation.DictTrans; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -13,7 +10,6 @@ import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Data public class CreateCouponTemplateDTO { @@ -139,9 +135,6 @@ @NotNull(message = "每人限领不能为空") private Integer getLimit; @ApiModelProperty(value = "领取后有效类型名称") private String usageTimeTypeName; } src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java
@@ -87,8 +87,4 @@ @ApiModelProperty(value = "领取后有效类型名称") private String usageTimeTypeName; } src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java
@@ -74,8 +74,4 @@ @NotNull(message = "指定的用户列表id不能为空") private List<Long> pointCostomIdList; @ApiModelProperty(value = "领取后有效类型名称") private String usageTimeTypeName; } src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponRecordDTO.java
@@ -35,4 +35,7 @@ @ApiModelProperty(value = "领取用户类型-全部用户,指定用户") private String getUserType; @ApiModelProperty(value = "优惠券模版ID") private String couponId; } src/main/java/com/mzl/flower/dto/response/coupon/CouponRecordResultVO.java
@@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; import com.mzl.flower.entity.coupon.CouponTemplateDO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -125,5 +124,64 @@ @ApiModelProperty(value = "订单号") private String orderNo; /** * 优惠券ID */ @ApiModelProperty(value = "优惠券ID") private String couponId; /** * 用户id */ @ApiModelProperty(value = "用户id") private String userId; /** * 商户ID */ @ApiModelProperty(value = "商户ID") private Long customerId; /** * 使用订单 */ @ApiModelProperty(value = "使用订单") private String orderId; /** * 使用时间 */ @ApiModelProperty(value = "使用时间") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss" ,timezone="GMT+8") @DateTimeFormat private LocalDateTime usedTime; /** * 优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券) */ @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)") @DictTrans(target = "categoryName",codeType = "COUPON_CATEGORY") private String category; /** * 优惠券代码 */ @ApiModelProperty(value = "优惠券代码") private String couponCode; /** * 积分数量 */ @ApiModelProperty(value = "积分数量") private Integer point; /** * 会员等级 */ @ApiModelProperty(value = "会员等级") private Integer memberId; @ApiModelProperty(value = "优惠券种类名称") private String categoryName; } src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateVipVO.java
@@ -147,4 +147,10 @@ @ApiModelProperty(value = "每人限领") private Integer getLimit; /** * 发放数量 */ @ApiModelProperty(value = "发放数量") private Integer couponAmount; } src/main/java/com/mzl/flower/entity/coupon/CouponRecordDO.java
@@ -100,11 +100,6 @@ private Integer point; /** * 订单号 */ private String orderNo; /** * 会员等级 */ private Integer memberId; src/main/java/com/mzl/flower/schedule/ScheduleService.java
@@ -9,6 +9,7 @@ import com.mzl.flower.mapper.flower.FlowerCategoryMapper; import com.mzl.flower.mapper.partner.PartnerMapper; import com.mzl.flower.mapper.payment.OrderMapper; import com.mzl.flower.service.coupon.CouponRecordService; import com.mzl.flower.service.flower.FlowerCategoryService; import com.mzl.flower.service.flower.FlowerService; import com.mzl.flower.service.menber.impl.GrowthValueDealService; @@ -61,6 +62,9 @@ @Autowired private GrowthValueDealService growthValueDealService; @Autowired private CouponRecordService couponRecordService; @Scheduled(cron = "1 0/20 * * * ?") public void calculateAvePrice() { @@ -210,4 +214,20 @@ log.info("成长值扣除结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); } @Scheduled(cron = "0 30 0 1 * ?") public void grantVipCouponRecordList() { log.info("会员优惠券开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); couponRecordService.grantVipCouponRecordList(); log.info("会员优惠券结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); } @Scheduled(cron = "0 30 0 1 * ?") public void expiredCouponRecordLastMon() { log.info("会员优惠券开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); couponRecordService.expiredCouponRecordLastMon(); log.info("会员优惠券结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); } } src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -41,7 +41,7 @@ * 根据当月日期设置上个月的日期的优惠券过期 * @return */ boolean expiredCouponRecordByListCurMonth(); boolean expiredCouponRecordLastMon(); Integer statisCouponTemplateCount(QueryCouponStatisticsBO queryCouponStatisticsBO); src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -292,6 +292,9 @@ couponTemplateDO.setGetStartDate(firstDayStart); couponTemplateDO.setGetEndDate(lastDayEnd); // 设置总数为当前会员的人数 couponTemplateDO.setCouponAmount(CollectionUtils.isNotEmpty(customerList)?customerList.size():0); // 设置默认类型固定 couponTemplateDO.setUsageType(CouponUsageTypeEnum.FIXED.getType()); @@ -311,7 +314,7 @@ } @Override public boolean expiredCouponRecordByListCurMonth() { public boolean expiredCouponRecordLastMon() { try{ LocalDateTime now = LocalDateTime.now(); @@ -461,9 +464,11 @@ public boolean cancelCouponUsage(String couponId, String orderId) { // 查询订单使用的优惠券 final CouponRecordDO couponRecordDO = getCouponByOrderId(orderId); // TODO couponRecordDO.setStatus(CouponUsedStatusEnum.UNUSED.getType()); couponRecordDO.setUsedTime(null); couponRecordDO.setOrderId(null); return false; return baseMapper.updateById(couponRecordDO)>0; } @Override src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -132,6 +132,8 @@ final List<CouponTemplateCustomerDO> couponCustomList = dto.getPointCostomIdList().stream().map(customId -> { CouponTemplateCustomerDO customReDO = new CouponTemplateCustomerDO(); // 解决本地不加ID不报错,线上报错问题 customReDO.setId(IdUtil.simpleUUID()); customReDO.setCouponId(couponTemplateDO.getId()); customReDO.setCustomId(customId); return customReDO; src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
@@ -42,7 +42,6 @@ private CouponTemplateService2 couponTemplateService; @PostMapping("") @ApiOperation(value = "新增", notes = "新增") public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponRecordDTO dto) { @@ -58,7 +57,6 @@ 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/CouponTemplateActivyController.java
@@ -78,6 +78,7 @@ } CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
@@ -7,22 +7,26 @@ 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.CreateCouponRecordAppDTO; 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.dto.response.customer.CustomerDTO; 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; import com.mzl.flower.enums.CouponUsedStatusEnum; import com.mzl.flower.mapper.customer.CustomerMapper; import com.mzl.flower.service.coupon.CouponRecordService; 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; import org.springframework.validation.annotation.Validated; @@ -44,6 +48,10 @@ @Autowired CouponRecordService couponRecordService; @Autowired CustomerMapper customerMapper; @GetMapping("/home/list") @ApiOperation(value = "查询-首页弹框", notes = "查询-首页弹框") @@ -117,7 +125,7 @@ @PostMapping("/receive") @ApiOperation(value = "优惠券领取", notes = "优惠券领取") public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponRecordDTO dto) { public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponRecordAppDTO dto) { final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId()); if(null==couponTemplateDO){ @@ -131,8 +139,18 @@ throw new ValidationException("优惠券已下架"); } // 根据当前获取获取商户的ID CustomerDTO currentCustomer = customerMapper.getCurrentCustomer(SecurityUtils.getUserId()); if(null==currentCustomer){ throw new ValidationException("当前登录的用户记录不存在"); } // 设置当前用户为登录用户 dto.setCustomerId(currentCustomer.getId()); couponRecordService.createCouponRecord(dto); CreateCouponRecordDTO dtoTrans=new CreateCouponRecordDTO(); BeanUtils.copyProperties(dto,dtoTrans); couponRecordService.createCouponRecord(dtoTrans); return returnData(R.SUCCESS.getCode(), null); } src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
@@ -76,6 +76,7 @@ } CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
@@ -94,6 +94,7 @@ } CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成指定用户 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
@@ -75,6 +75,7 @@ } CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO(); BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO); BeanUtils.copyProperties(dto, couponTemplateBO); // 设置成积分优惠券 src/main/resources/mapper/coupon/CouponRecordMapper.xml
@@ -25,7 +25,6 @@ <result column="coupon_name" property="couponName" /> <result column="point" property="point" /> <result column="order_no" property="orderNo" /> </resultMap> src/main/resources/mapper/coupon/CouponRecordMapperCustom.xml
@@ -28,7 +28,6 @@ <result column="get_user_type" property="getUserType" /> <result column="point" property="point" /> <result column="order_no" property="orderNo" /> </resultMap> <update id="checkCouponExpired"> @@ -116,6 +115,10 @@ AND (t.customerName like concat('%', #{param.keyword},'%') or t.user_id like concat('%', #{param.keyword},'%') ) </if> <if test="param.couponId != null and param.couponId != ''"> and t.coupon_id = #{param.couponId} </if> order by t.create_time desc </sql> src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
@@ -34,8 +34,9 @@ <result column="status" property="status" /> <result column="point" property="point" /> <result column="member_id" property="memberId" /> </resultMap> <update id="activeBatchCouponTemplate"> update t_coupon_template set status='active',update_by=#{param.updateBy},update_time=now() where id in <foreach collection="param.idList" item="item" open="(" separator="," close=")">