| | |
| | | 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; |
| | |
| | | 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()); |
| | |
| | | } |
| | | 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())); |
| | | } |
| | | |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |