From f16f74cacb9ef0ae4be89ed15353b6a449479d8c Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 28 May 2025 13:38:09 +0800 Subject: [PATCH] feat(mall): 添加轮播图背景图片功能 --- src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 104 insertions(+), 10 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 dde27c1..e82887b 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 @@ -13,9 +13,11 @@ 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.entity.MallVipConfig; 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.mapper.MallVipConfigMapper; import cc.mrbird.febs.vip.service.IMallVipBenefitsDetailsService; import cc.mrbird.febs.vip.service.IMallVipBenefitsService; import cn.hutool.core.collection.CollUtil; @@ -35,8 +37,8 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -52,6 +54,8 @@ private final MallOrderItemMapper mallOrderItemMapper; private final MallVipBenefitsRecordMapper mallVipBenefitsRecordMapper; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; + private final MallMemberMapper mallMemberMapper; + private final MallVipConfigMapper mallVipConfigMapper; @Override public IPage<MallVipBenefits> vipBenefitsListInPage(QueryRequest request) { @@ -71,15 +75,17 @@ return; } - if (CollUtil.isEmpty(mallVipBenefits.getDetails())) { - throw new FebsException("权益明细不能为空"); - } +// if (CollUtil.isEmpty(mallVipBenefits.getDetails())) { +// throw new FebsException("权益明细不能为空"); +// } this.baseMapper.insert(mallVipBenefits); - mallVipBenefits.getDetails().forEach(item -> { - item.setBenefitsId(mallVipBenefits.getId()); - }); + if (CollUtil.isNotEmpty(mallVipBenefits.getDetails())) { + mallVipBenefits.getDetails().forEach(item -> { + item.setBenefitsId(mallVipBenefits.getId()); + }); + } this.mallVipBenefitsDetailsService.saveBatch(mallVipBenefits.getDetails()); } @@ -116,11 +122,16 @@ @Override public void getBenefits(Long id) { - MallMember member = LoginUserUtil.getLoginUser(); + MallMember loginUser = LoginUserUtil.getLoginUser(); + MallMember member = mallMemberMapper.selectById(loginUser.getId()); MallVipBenefitsDetails benefits = mallVipBenefitsDetailsService.getById(id); if (benefits == null) { throw new FebsException("权益不存在"); + } + + if (benefits.getIsClick() == 2) { + throw new FebsException("请联系客服,检查权益设置"); } MallVipBenefits vipBenefits = this.baseMapper.selectById(benefits.getBenefitsId()); @@ -128,6 +139,14 @@ throw new FebsException("权益不存在"); } + + MallVipConfig config = mallVipConfigMapper.selectVipConfigByCode(member.getLevel()); + boolean b = config.getBenefits().stream().anyMatch(item -> { + return Objects.equals(item.getId(), benefits.getBenefitsId()); + }); + if (!b) { + throw new FebsException("未达到等级不能领取该权益"); + } Integer linkType = benefits.getLinkType(); @@ -152,7 +171,7 @@ 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::getBenefitsType, vipBenefits.getGainType()) .eq(MallVipBenefitsRecord::getReceiveId, Long.parseLong(benefits.getContent())); List<MallVipBenefitsRecord> mallVipBenefitsRecords = mallVipBenefitsRecordMapper.selectList(recordQuery); if (CollUtil.isNotEmpty(mallVipBenefitsRecords)) { @@ -165,6 +184,8 @@ record.setReceiveTime(new Date()); record.setReceiveType(linkType); record.setReceiveId(Long.parseLong(benefits.getContent())); + record.setMemberId(member.getId()); + record.setReceiveCnt(1); // 商品 if (linkType == 2) { @@ -191,6 +212,7 @@ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setOrderType(goods.getGoodsType()); orderInfo.setDeliveryType(2); + orderInfo.setIsFree(1); orderInfo.setCarriage(BigDecimal.ZERO); orderInfo.setAmount(BigDecimal.ZERO); orderInfo.setAddressId(address.getId()); @@ -248,14 +270,86 @@ memberCoupon.setInviteId(member.getInviteId()); memberCoupon.setCouponUuid(IdUtil.simpleUUID()); memberCoupon.setState(1); + memberCoupon.setFromType(2); memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), coupon.getExpireDay())); memberCoupon.setMemberId(member.getId()); mallMemberCouponMapper.insert(memberCoupon); record.setReceiveName(coupon.getName()); + record.setStatus(1); } mallVipBenefitsRecordMapper.insert(record); } + @Override + public void switchBenefitsShow(Long id) { + MallVipBenefits vipBenefits = this.baseMapper.selectById(id); + + MallVipBenefits update = new MallVipBenefits(); + if (vipBenefits.getIsShow() == 1) { + update.setIsShow(2); + } else { + update.setIsShow(1); + } + + update.setId(vipBenefits.getId()); + this.baseMapper.updateById(update); + } + + @Override + public Map<String, Object> birthdayEvent() { + MallMember loginUser = LoginUserUtil.getLoginUser(); + MallMember member = this.mallMemberMapper.selectById(loginUser.getId()); + + String today = DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN); + boolean isBirthday = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0; + if (!isBirthday) { + return new HashMap<>(); + } + + MallVipConfig configList = mallVipConfigMapper.selectVipConfigByCode(member.getLevel()); + + List<MallVipBenefits> benefits = configList.getBenefits().stream().filter(item -> item.getGainType() == 2 && item.getType() != 1).collect(Collectors.toList()); + if (CollUtil.isEmpty(benefits)) { + return new HashMap<>(); + } + + List<String> ids = new ArrayList<>(); + benefits.forEach(item -> { + ids.addAll(item.getDetails().stream().filter(detail -> detail.getLinkType() == 2 || detail.getLinkType() == 3).map(MallVipBenefitsDetails::getContent).collect(Collectors.toList())); + }); + + LambdaQueryWrapper<MallVipBenefitsRecord> recordQuery = new LambdaQueryWrapper<>(); + recordQuery.in(MallVipBenefitsRecord::getReceiveId, ids) + .eq(MallVipBenefitsRecord::getMemberId, member.getId()) + .ge(MallVipBenefitsRecord::getReceiveTime, DateUtil.beginOfDay(new Date())) + .le(MallVipBenefitsRecord::getReceiveTime, DateUtil.endOfDay(new Date())); + List<MallVipBenefitsRecord> hasRecieveList = mallVipBenefitsRecordMapper.selectList(recordQuery); + + Map<String, Object> map = new HashMap<>(); + if (CollUtil.isEmpty(hasRecieveList)) { + map.put("benefit", benefits.get(0)); + return map; + } + + List<Long> hasIds = hasRecieveList.stream().map(MallVipBenefitsRecord::getReceiveId).collect(Collectors.toList()); + List<MallVipBenefits> collect1 = benefits.stream().peek(item -> { + List<MallVipBenefitsDetails> collect = item.getDetails().stream().filter(detail -> (detail.getLinkType() == 2 || detail.getLinkType() == 3) && !hasIds.contains(Long.parseLong(detail.getContent()))).collect(Collectors.toList()); + item.setDetails(collect); + }).filter(item -> CollUtil.isNotEmpty(item.getDetails())).collect(Collectors.toList()); + + if (CollUtil.isEmpty(collect1)) { + return map; + } + + map.put("benefit", collect1.get(0)); + return map; + } + + @Override + public IPage<MallVipBenefitsRecord> findVipBenefitsInPage(MallVipBenefitsRecord record, QueryRequest request) { + Page<MallVipBenefitsRecord> page = new Page<>(request.getPageNum(), request.getPageSize()); + return mallVipBenefitsRecordMapper.selectMemberBenefitsRecordInPage(record, page); + } } -- Gitblit v1.9.1