From 664184af3e070dee665ee736caffa0297804975f Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 18 Mar 2025 11:46:02 +0800 Subject: [PATCH] perf(mall): 移除会员利润计算中的异步执行 --- src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java | 101 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 86 insertions(+), 15 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 ed529c1..59dc779 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 @@ -8,13 +8,10 @@ import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; -import cc.mrbird.febs.mall.vo.AdminMailGoodsDetailVo; -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.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; @@ -24,11 +21,9 @@ 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -37,9 +32,8 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -76,15 +70,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()); } @@ -170,7 +166,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)) { @@ -269,14 +265,89 @@ 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()); + if(null == member.getBirthday()){ + return new HashMap<>(); + } + + 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