gongzuming
2024-09-19 b61182b5c602d0bb4af7c68cb51dbfa1eb5a755f
src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -264,6 +264,7 @@
                List<CouponRecordDO> couponUsageDOList = couponTemplateCustomerDOList.stream().map(pointCustomRe -> {
                    CouponRecordDO couponRecordDO = new CouponRecordDO();
                    couponRecordDO.setId(IdUtil.simpleUUID());
                    couponRecordDO.setCouponId(pointCustomRe.getCouponId());
                    couponRecordDO.setCustomerId(pointCustomRe.getCustomId());
@@ -290,7 +291,8 @@
                    couponRecordDO.setCouponDiscountType(couponTemplateDO.getCouponDiscountType());
                    couponRecordDO.setGetUserType(couponTemplateDO.getGetUserType());
                    couponRecordDO.setPoint(couponTemplateDO.getPoint());
                    couponRecordDO.setMemberId(couponRecordDO.getMemberId());
                    couponRecordDO.setMemberId(couponTemplateDO.getMemberId());
                    couponRecordDO.setImageUrl(couponTemplateDO.getImageUrl());
                    // 创建相关信息
                    couponRecordDO.create(SecurityUtils.getUserId());
@@ -308,6 +310,15 @@
                couponRecordService.saveBatch(couponUsageDOList);
            }
        }
        // 如果是活动优惠券且领取渠道是Home类型的,那么只能设置当前优惠券为激活状态,其他优惠券是激活状态的设置为下架状态
        if (StringUtils.isNotBlank(couponTemplateDO.getCategory())  && couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus())
                && StringUtils.isNotBlank(couponTemplateDO.getGetType()) && couponTemplateDO.getGetType().equals(CouponGetTypeEnum.HOME.getType())
        ) {
            couponTemplateMapperCustom.expireHomeActivityCouponTemplate();
        }
        return baseMapper.updateById(couponTemplateDO) > 0;
    }
@@ -410,7 +421,9 @@
            if(couponTemplateDO==null){
                throw new ValidationException("优惠券不存在");
            }
            if(couponTemplateDO.getCouponAmount()<=0 ){
               throw new ValidationException("优惠券已兑换完");
            }
            CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
                    .eq(CustomerPoint::getUserId, SecurityUtils.getUserId()));
            if(cp == null || (cp.getTotalPoint()-cp.getUsedPoint()-cp.getExpiredPoint()- cp.getExpiredPoint()) < couponTemplateDO.getPoint() * dto.getNum()){
@@ -428,6 +441,10 @@
            recordDTO.setCustomerId(customer.getId());
            couponRecordService.createCouponRecord(recordDTO);
//            //更新优惠券数量
//            couponTemplateDO.setCouponAmount(couponTemplateDO.getCouponAmount()-dto.getNum());
//            couponTemplateService.updateById(couponTemplateDO);
            //更新积分汇总
            cp.setUsedPoint(cp.getUsedPoint()+couponTemplateDO.getPoint());
            customerPointMapper.updateById(cp);
@@ -443,8 +460,6 @@
            detail.setRemarks(couponTemplateDO.getCouponName());
            detail.create(SecurityUtils.getUserId());
            customerPointDetailMapper.insert(detail);
        }catch (Exception e){
            throw new ValidationException("兑换失败");
        }finally {
            lockService.releaseObjectLock(key,"");
        }
@@ -452,6 +467,28 @@
    }
    @Override
    public CouponTemplateVO getHomeActivityEffectAlert(QueryActivityEffectCouponDTO dto) {
        // 存在用户是空的情况
        final CouponTemplateVO homeActivityEffectAlert = couponTemplateMapperCustom.getHomeActivityEffectAlert(dto);
        if(null!=homeActivityEffectAlert ){
            if(StringUtils.isNotBlank(SecurityUtils.getUserId()) ){
                // 查看当前已经领取了几张
                final Integer getCnt = couponRecordService.getUserGainCouponRecordAmountByUserId(homeActivityEffectAlert.getId(), SecurityUtils.getUserId());
                // 如果当前领取的数量小于限制领取的数量的时候,可以再次领取
                if(null!=homeActivityEffectAlert.getGetLimit() && null!=getCnt
                        && homeActivityEffectAlert.getGetLimit().compareTo(getCnt)>0){
                    return homeActivityEffectAlert;
                }
            }else{
                return homeActivityEffectAlert;
            }
        }
        return null;
    }
    @Override
    public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) {
        return couponTemplateMapperCustom.getActivityEffectList(dto);