From 2bcf4cc63c2838213cf580af3b53ca757fe8a374 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Wed, 24 Jan 2024 22:49:38 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java |   42 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 40 insertions(+), 2 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 42db833..957b247 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,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);
+    }
 }

--
Gitblit v1.9.1