fix
Helius
2022-07-15 a347e54b3cb4042688215d8c993ed450bb69c270
fix
3 files modified
28 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/contants/AppContants.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/utils/BoxUtil.java 17 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/MemberTest.java 10 ●●●● 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());
        }
    }
}