| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | 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) { |
| | |
| | | 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) { |
| | |
| | | orderItem.setCostPrice(sku.getCostPrice()); |
| | | } |
| | | |
| | | record.setReceiveName(goods.getGoodsName()); |
| | | mallOrderInfoMapper.insert(orderInfo); |
| | | mallOrderItemMapper.insert(orderItem); |
| | | } |
| | |
| | | memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), coupon.getExpireDay())); |
| | | memberCoupon.setMemberId(member.getId()); |
| | | mallMemberCouponMapper.insert(memberCoupon); |
| | | |
| | | record.setReceiveName(coupon.getName()); |
| | | } |
| | | |
| | | mallVipBenefitsRecordMapper.insert(record); |
| | | } |
| | | |
| | | } |