From a347e54b3cb4042688215d8c993ed450bb69c270 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 15 Jul 2022 16:51:54 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java          |   17 ++++++++++++++---
 src/test/java/cc/mrbird/febs/MemberTest.java                  |   10 +++++++---
 src/main/java/cc/mrbird/febs/common/contants/AppContants.java |    1 +
 3 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java
index c5075c2..99bc06e 100644
--- a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java
+++ b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -172,4 +172,5 @@
     public static final LinkedList<String> ENCRYPT_METHOD = new LinkedList<>();
 
     public static final String IDO_MEMBER_RECOMMEND_CNT = "IDO_MEMBER_RECOMMEND_CNT";
+    public static final String IDO_BOX_PRIZE = "IDO_BOX_PRIZE";
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java b/src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java
index 4055d35..e8d7ede 100644
--- a/src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java
+++ b/src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java
@@ -1,12 +1,18 @@
 package cc.mrbird.febs.dapp.utils;
 
+import cc.mrbird.febs.common.contants.AppContants;
+import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.common.utils.SpringContextUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.RandomUtil;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author wzy
@@ -15,10 +21,14 @@
 @Slf4j
 public class BoxUtil {
 
-    public static volatile List<Box> boxList = Collections.synchronizedList(new ArrayList<>());
+//    public static volatile List<Box> boxList = Collections.synchronizedList(new ArrayList<>());
 
+    private static final RedisUtils redisUtils = SpringContextUtil.getBean(RedisUtils.class);
     public synchronized static Box openBox() {
+        String redisStr =  redisUtils.getString(AppContants.IDO_BOX_PRIZE);
+        List<Box> boxList = JSONObject.parseArray(redisStr, Box.class);
         if (CollUtil.isEmpty(boxList)) {
+            boxList = Collections.synchronizedList(new ArrayList<>());
             Box box1 = new Box(1, 6);
             Box box2 = new Box(2, 1);
             Box box3 = new Box(3, 1);
@@ -38,7 +48,8 @@
         for (int i = 0; i < boxList.size(); i++) {
             Box box = boxList.get(i);
             if (i != 0) {
-                minIndex += boxList.get(i - 1).getCount();
+                Box lastBox = (Box) boxList.get(i - 1);
+                minIndex += lastBox.getCount();
             }
             max += box.getCount();
             box.setMin(minIndex);
@@ -61,7 +72,7 @@
                 break;
             }
         }
-
+        redisUtils.set(AppContants.IDO_BOX_PRIZE, JSONObject.toJSONString(boxList));
         return result;
     }
 
diff --git a/src/test/java/cc/mrbird/febs/MemberTest.java b/src/test/java/cc/mrbird/febs/MemberTest.java
index 5ca1b85..974693c 100644
--- a/src/test/java/cc/mrbird/febs/MemberTest.java
+++ b/src/test/java/cc/mrbird/febs/MemberTest.java
@@ -9,6 +9,7 @@
 import cc.mrbird.febs.dapp.utils.BoxUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +24,7 @@
  * @author wzy
  * @date 2022-06-09
  **/
+@Slf4j
 @SpringBootTest
 public class MemberTest {
 
@@ -91,15 +93,17 @@
         Runnable runnable = new Runnable() {
             @Override
             public void run() {
-                BoxUtil.openBox();
+                BoxUtil.Box box = BoxUtil.openBox();
+                log.info("====={}==={}=====", box.getIndex(), box.getCount());
             }
         };
 
-        for (int i = 0; i < 12; i++) {
+        for (int i = 0; i < 9; i++) {
             Thread thread = new Thread(runnable);
             thread.start();
+//            BoxUtil.Box box = BoxUtil.openBox();
+//            log.info("====={}==={}=====", box.getIndex(), box.getCount());
         }
-
     }
 
 }

--
Gitblit v1.9.1