| src/main/java/cc/mrbird/febs/common/contants/AppContants.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java | ●●●●● patch | view | raw | blame | history | |
| src/test/java/cc/mrbird/febs/MemberTest.java | ●●●●● patch | view | raw | blame | history |
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"; } 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; } 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()); } } }