From c3a122ccd2b641d875873864055225064b190fbb Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 07 六月 2024 14:48:58 +0800
Subject: [PATCH] 1.提交【管理后台】大屏操作台相关接口 2.提交【管理后台】营销管理-视频管理相关接口

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java |   79 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 1 deletions(-)

diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
index 101fcbb..1459ee3 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
@@ -1,7 +1,11 @@
 package com.ruoyi.member.service.async;
 
+import com.google.common.collect.Lists;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.member.domain.MemberLevel;
 import com.ruoyi.member.service.IMemberService;
+import com.ruoyi.system.api.domain.Member;
+import java.math.BigDecimal;
 import java.util.List;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -26,6 +30,79 @@
      */
     @Async
     public void handleMemberLevel(List<MemberLevel> memberLevels) {
-        memberService.list();
+        List<Member> list = memberService.list();
+        if (StringUtils.isEmpty(memberLevels)) {
+            // 如果memberLevels为空或为null,则无需进一步处理
+            return;
+        }
+
+        List<Member> members = memberService.list();
+        if (StringUtils.isEmpty(members)) {
+            // 如果成员列表为空或为null,则无需进一步处理
+            return;
+        }
+
+        for (Member member : members) {
+            BigDecimal money = member.getMoney();
+            member.setLevel(findAppropriateLevel(memberLevels, money));
+        }
+    }
+
+    private static int findAppropriateLevel(List<MemberLevel> memberLevels, BigDecimal money) {
+        // 对于最开始的level,设置为0(假设0是最低等级)
+        int level = 0;
+
+        for (int i = 0; i < memberLevels.size(); i++) {
+            MemberLevel currentLevel = memberLevels.get(i);
+            BigDecimal currentCumulativeConsumption = currentLevel.getCumulativeConsumption();
+
+            // 如果当前成员的消费额小于等于当前等级的累积消费额
+            if (money.compareTo(currentCumulativeConsumption) < 0) {
+                return level;
+            }
+
+            // 更新level为当前等级,准备下一次比较
+            level = currentLevel.getLevel();
+        }
+
+        // 如果遍历完成后还没有返回,说明该成员的消费额高于所有已定义等级的累积消费额
+        level = memberLevels.get(memberLevels.size() - 1).getLevel();
+        return level;
+    }
+
+    public static void main(String[] args) {
+        MemberLevel build1 = MemberLevel.builder().id(1L).level(1)
+                .cumulativeConsumption(BigDecimal.valueOf(100))
+                .build();
+        MemberLevel build2 = MemberLevel.builder().id(2L).level(2)
+                .cumulativeConsumption(BigDecimal.valueOf(200))
+                .build();
+        MemberLevel build3 = MemberLevel.builder().id(3L).level(3)
+                .cumulativeConsumption(BigDecimal.valueOf(300))
+                .build();
+        MemberLevel build4 = MemberLevel.builder().id(4L).level(4)
+                .cumulativeConsumption(BigDecimal.valueOf(500))
+                .build();
+        MemberLevel build5 = MemberLevel.builder().id(5L).level(5)
+                .cumulativeConsumption(BigDecimal.valueOf(500))
+                .build();
+        MemberLevel build6 = MemberLevel.builder().id(6L).level(6)
+                .cumulativeConsumption(BigDecimal.valueOf(600))
+                .build();
+        MemberLevel build7 = MemberLevel.builder().id(7L).level(7)
+                .cumulativeConsumption(BigDecimal.valueOf(700))
+                .build();
+        MemberLevel build8 = MemberLevel.builder().id(8L).level(8)
+                .cumulativeConsumption(BigDecimal.valueOf(800))
+                .build();
+        MemberLevel build9 = MemberLevel.builder().id(9L).level(9)
+                .cumulativeConsumption(BigDecimal.valueOf(900))
+                .build();
+        MemberLevel build10 = MemberLevel.builder().id(10L).level(10)
+                .cumulativeConsumption(BigDecimal.valueOf(1000))
+                .build();
+        List<MemberLevel> memberLevels = Lists.newArrayList(build1, build2, build3, build4,
+                build5, build6, build7, build8, build9, build10);
+        System.out.println(findAppropriateLevel(memberLevels, BigDecimal.valueOf(50)));
     }
 }

--
Gitblit v1.7.1