From 800c109fbc380dcd2cc42570a46b4329c4840366 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Thu, 25 Jan 2024 21:24:45 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java index 636c8c4..51b6be0 100644 --- a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.vip.service.impl; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; @@ -11,14 +12,18 @@ import cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo; import cc.mrbird.febs.vip.entity.MallVipBenefits; import cc.mrbird.febs.vip.entity.MallVipBenefitsDetails; +import cc.mrbird.febs.vip.entity.MallVipBenefitsRecord; import cc.mrbird.febs.vip.mapper.MallVipBenefitsDetailsMapper; import cc.mrbird.febs.vip.mapper.MallVipBenefitsMapper; +import cc.mrbird.febs.vip.mapper.MallVipBenefitsRecordMapper; import cc.mrbird.febs.vip.service.IMallVipBenefitsDetailsService; import cc.mrbird.febs.vip.service.IMallVipBenefitsService; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; @@ -31,6 +36,7 @@ import java.math.BigDecimal; import java.util.Date; +import java.util.List; @Slf4j @Service @@ -44,6 +50,8 @@ private final MallAddressInfoMapper mallAddressInfoMapper; private final MallOrderInfoMapper mallOrderInfoMapper; private final MallOrderItemMapper mallOrderItemMapper; + private final MallVipBenefitsRecordMapper mallVipBenefitsRecordMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override public IPage<MallVipBenefits> vipBenefitsListInPage(QueryRequest request) { @@ -115,7 +123,48 @@ throw new FebsException("权益不存在"); } + MallVipBenefits vipBenefits = this.baseMapper.selectById(benefits.getId()); + if (vipBenefits == null) { + throw new FebsException("权益不存在"); + } + + Integer linkType = benefits.getLinkType(); + + if (vipBenefits.getGainType() == 2) { + String today = DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN); + boolean isBirthday = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0; + if (!isBirthday) { + throw new FebsException("未达到权益领取条件:未到生日"); + } + } + + if (vipBenefits.getGainType() == 3) { + DataDictionaryCustom data = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.VIP_DATE.getType(), DataDictionaryEnum.VIP_DATE.getCode()); + + String today = DateUtil.format(new Date(), "MM-dd"); + if (!StrUtil.equals(data.getValue(), today)) { + throw new FebsException("未达到权益领取条件:未到会员日"); + } + } + + LambdaQueryWrapper<MallVipBenefitsRecord> recordQuery = new LambdaQueryWrapper<>(); + recordQuery.ge(MallVipBenefitsRecord::getReceiveTime, DateUtil.beginOfDay(new Date())) + .le(MallVipBenefitsRecord::getReceiveTime, DateUtil.endOfDay(new Date())) + .eq(MallVipBenefitsRecord::getMemberId, member.getId()) + .eq(MallVipBenefitsRecord::getBenefitsType, vipBenefits.getType()) + .eq(MallVipBenefitsRecord::getReceiveId, Long.parseLong(benefits.getContent())); + List<MallVipBenefitsRecord> mallVipBenefitsRecords = mallVipBenefitsRecordMapper.selectList(recordQuery); + if (CollUtil.isNotEmpty(mallVipBenefitsRecords)) { + throw new FebsException("已领取过权益"); + } + + MallVipBenefitsRecord record = new MallVipBenefitsRecord(); + record.setBenefitsType(vipBenefits.getGainType()); + record.setBenefitsName(vipBenefits.getName()); + record.setReceiveTime(new Date()); + record.setReceiveType(linkType); + record.setReceiveId(Long.parseLong(benefits.getContent())); // 商品 if (linkType == 2) { @@ -181,6 +230,7 @@ orderItem.setCostPrice(sku.getCostPrice()); } + record.setReceiveName(goods.getGoodsName()); mallOrderInfoMapper.insert(orderInfo); mallOrderItemMapper.insert(orderItem); } @@ -200,7 +250,11 @@ memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), coupon.getExpireDay())); memberCoupon.setMemberId(member.getId()); mallMemberCouponMapper.insert(memberCoupon); + + record.setReceiveName(coupon.getName()); } + + mallVipBenefitsRecordMapper.insert(record); } } -- Gitblit v1.9.1