From 047774fc1cf296f992da5bdefc093d09702ea4e4 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Thu, 25 Jan 2024 22:52:23 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java |   71 ++++++++++++++++++++++++++++++++++-
 1 files changed, 68 insertions(+), 3 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 d40e769..e3d030d 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,13 @@
 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;
@@ -8,6 +15,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 +27,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 +35,8 @@
 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) {
@@ -40,9 +50,29 @@
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void addVipConfig(MallVipConfig config) {
         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) {
+        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(), ',');
@@ -65,4 +95,39 @@
         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;
+            }
+
+            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.orElseGet(max::get);
+    }
 }

--
Gitblit v1.9.1