From 529ad9dd8d1876b57e852bc45b602ba3ccc8df2a Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 10 Apr 2024 17:19:08 +0800 Subject: [PATCH] 公告-首页公告调整 --- src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 167 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java index 93374fc..224fd19 100644 --- a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java @@ -1,15 +1,182 @@ 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.exception.FebsException; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; +import cc.mrbird.febs.mall.entity.MallMember; +import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.vip.entity.MallVipBenefits; import cc.mrbird.febs.vip.entity.MallVipConfig; +import cc.mrbird.febs.vip.entity.MallVipConfigBenefits; +import cc.mrbird.febs.vip.mapper.MallVipConfigBenefitsMapper; import cc.mrbird.febs.vip.mapper.MallVipConfigMapper; +import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService; import cc.mrbird.febs.vip.service.IMallVipConfigService; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +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.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor public class MallVipConfigServiceImpl extends ServiceImpl<MallVipConfigMapper, MallVipConfig> implements IMallVipConfigService { + + private final IMallVipConfigBenefitsService mallVipConfigBenefitsService; + private final MallMemberMapper mallMemberMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; + + @Override + public IPage<MallVipConfig> vipConfigList(QueryRequest request) { + Page<MallVipConfig> page = new Page<>(request.getPageNum(), request.getPageSize()); + return this.baseMapper.findVipConfigListInPage(page); + } + + @Override + public List<MallVipConfig> findConfigList() { + List<MallVipConfig> configs = this.baseMapper.selectVipConfigList(); + configs.forEach(item -> { + List<MallVipBenefits> data = item.getBenefits().stream().filter(benefit -> { + return benefit.getIsShow() == 1; + }).peek(benefits -> { + benefits.setIsJump(CollUtil.isEmpty(benefits.getDetails()) ? 2 : 1); + }).collect(Collectors.toList()); + + item.setBenefits(data); + }); + return configs; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addVipConfig(MallVipConfig config) { + List<MallVipConfig> configs = this.baseMapper.selectVipConfigList(); + boolean b = configs.stream().anyMatch(item -> { + return (item.getLevel().equals(config.getLevel()) || config.getCode().equals(item.getCode())); + }); + + if (b) { + throw new FebsException("会员等级或编码已存在"); + } + this.baseMapper.insert(config); + + List<MallVipConfigBenefits> configBenefitsList = new ArrayList<>(); + List<String> benefitsIds = StrUtil.split(config.getBenefitsIds(), ','); + benefitsIds.forEach(item -> { + MallVipConfigBenefits configBenefits = new MallVipConfigBenefits(); + configBenefits.setConfigId(config.getId()); + configBenefits.setBenefitsId(Long.parseLong(item)); + configBenefitsList.add(configBenefits); + }); + + mallVipConfigBenefitsService.saveBatch(configBenefitsList); + } + + @Override + public void editVipConfig(MallVipConfig config) { + MallVipConfig oldConfig = this.baseMapper.selectById(config.getId()); + + List<MallVipConfig> configs = this.baseMapper.selectVipConfigList(); + boolean b = configs.stream().anyMatch(item -> { + return !item.getId().equals(config.getId()) && (item.getLevel().equals(config.getLevel()) || config.getCode().equals(item.getCode())); + }); + + if (b) { + throw new FebsException("会员等级或编码已存在"); + } + + if (!config.getCode().equals(oldConfig.getCode())) { + LambdaQueryWrapper<MallMember> memberQuery = new LambdaQueryWrapper<>(); + memberQuery.eq(MallMember::getLevel, oldConfig.getCode()); + List<MallMember> mallMembers = mallMemberMapper.selectList(memberQuery); + if (CollUtil.isNotEmpty(mallMembers)) { + throw new FebsException("会员编码绑定了客户,请调整后修改"); + } + } + + + this.baseMapper.updateById(config); + + LambdaQueryWrapper<MallVipConfigBenefits> delQuery = new LambdaQueryWrapper<>(); + delQuery.eq(MallVipConfigBenefits::getConfigId, config.getId()); + mallVipConfigBenefitsService.remove(delQuery); + + List<MallVipConfigBenefits> configBenefitsList = new ArrayList<>(); + List<String> benefitsIds = StrUtil.split(config.getBenefitsIds(), ','); + benefitsIds.forEach(item -> { + MallVipConfigBenefits configBenefits = new MallVipConfigBenefits(); + configBenefits.setConfigId(config.getId()); + configBenefits.setBenefitsId(Long.parseLong(item)); + configBenefitsList.add(configBenefits); + }); + + mallVipConfigBenefitsService.saveBatch(configBenefitsList); + } + + @Override + @Transactional + public void delVipConfig(Long id) { + this.baseMapper.deleteById(id); + + LambdaQueryWrapper<MallVipConfigBenefits> delQuery = new LambdaQueryWrapper<>(); + delQuery.eq(MallVipConfigBenefits::getConfigId, id); + this.mallVipConfigBenefitsService.remove(delQuery); + } + + @Override + public MallVipBenefits hasVipBenefits(Long memberId) { + MallMember member = mallMemberMapper.selectById(memberId); + if (member == null) { + throw new FebsException("会员不存在"); + } + + MallVipConfig vipConfig = this.baseMapper.selectVipConfigByCode(member.getLevel()); + if (vipConfig == null) { + throw new FebsException("会员配置不存在"); + } + + String today = DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN); + boolean isBirthday; + if (member.getBirthday() != null) { + isBirthday = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0; + } else { + isBirthday = false; + } + List<MallVipBenefits> benefits = vipConfig.getBenefits(); + Optional<MallVipBenefits> max = benefits.stream().filter(item -> { + if (item.getScoreMultiple() == null) { + return false; + } + + if (item.getGainType() == 3 && item.getScoreMultiple() != null) { + return true; + } + + // 生日权益 + if (item.getGainType() == 2 && isBirthday) { + return true; + } + + DataDictionaryCustom data = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.VIP_DATE.getType(), DataDictionaryEnum.VIP_DATE.getCode()); + + String todayTime = DateUtil.format(new Date(), "MM-dd"); + // 会员日 + return item.getGainType() == 1 && StrUtil.equals(data.getValue(), todayTime); + }).max(Comparator.comparing(MallVipBenefits::getScoreMultiple)); + + return max.orElse(null); + } } -- Gitblit v1.9.1