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 | 121 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 108 insertions(+), 13 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 c442e39..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) { @@ -187,9 +208,11 @@ orderInfo.setOrderNo(orderNo); orderInfo.setOrderTime(new Date()); orderInfo.setMemberId(member.getId()); + orderInfo.setPayTime(new Date()); 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()); @@ -199,6 +222,7 @@ orderInfo.setAddress(address.getProvince()+address.getCity()+address.getArea() + address.getAddress()); orderInfo.setLatitude(address.getLatitude()); orderInfo.setLongitude(address.getLongitude()); + mallOrderInfoMapper.insert(orderInfo); MallOrderItem orderItem = new MallOrderItem(); if (goods.getGoodsType() == 2) { @@ -220,10 +244,10 @@ orderItem.setOrderId(orderInfo.getId()); orderItem.setPrice(sku.getPresentPrice()); orderItem.setGoodsId(sku.getGoodsId()); - orderItem.setGoodsName(sku.getGoodsName()); + orderItem.setGoodsName(goods.getGoodsName()); orderItem.setSkuId(sku.getId()); orderItem.setState(1); - orderItem.setStyleName(sku.getStyleName()); + orderItem.setStyleName(goods.getStyles().get(0).getName()); orderItem.setSkuName(sku.getSkuName()); orderItem.setSkuImage(sku.getSkuImage()); orderItem.setIsNormal(goods.getIsNormal()); @@ -231,7 +255,6 @@ } record.setReceiveName(goods.getGoodsName()); - mallOrderInfoMapper.insert(orderInfo); mallOrderItemMapper.insert(orderItem); } @@ -247,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