fix
Hentua
2024-01-24 2bcf4cc63c2838213cf580af3b53ca757fe8a374
src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java
@@ -1,6 +1,10 @@
package cc.mrbird.febs.vip.service.impl;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.mall.entity.MallMember;
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;
@@ -8,6 +12,8 @@
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;
@@ -18,8 +24,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
@Slf4j
@Service
@@ -27,6 +32,7 @@
public class MallVipConfigServiceImpl extends ServiceImpl<MallVipConfigMapper, MallVipConfig> implements IMallVipConfigService {
    private final IMallVipConfigBenefitsService mallVipConfigBenefitsService;
    private final MallMemberMapper mallMemberMapper;
    @Override
    public IPage<MallVipConfig> vipConfigList(QueryRequest request) {
@@ -85,4 +91,36 @@
        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 = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0;
        List<MallVipBenefits> benefits = vipConfig.getBenefits();
        Optional<MallVipBenefits> max = benefits.stream().filter(item -> {
            if (item.getScoreMultiple() == null) {
                return false;
            }
            // 生日权益
            if (item.getGainType() == 2 && isBirthday) {
                return true;
            }
            // 会员日
            return item.getGainType() == 1;
        }).max(Comparator.comparing(MallVipBenefits::getScoreMultiple));
        return max.orElseGet(max::get);
    }
}