java spring 用户等级乘阶算法

import java.math.BigDecimal;

import cn.hutool.core.lang.Console;
import cn.hutool.core.thread.ConcurrencyTester;
import cn.hutool.core.thread.ThreadUtil;

/**
 * 根据剩阶计算出当前用户的单日提现额度
 */
public class LevelUtil {
	public static void main(String[] args) {
		ConcurrencyTester tester = ThreadUtil.concurrencyTest(1, () -> {
			// 测试的逻辑内容
			for (int i = 0; i <= 65000; i += 500) {
				BigDecimal[] data = LevelUtil.level(BigDecimal.valueOf(i));
				ThreadUtil.sleep(200);
				Console.log("充值金额:{},等级:{},提现额度: {}", i, data[0], data[1]);
			}
		});
		// 获取总的执行时间,单位毫秒
		Console.log(tester.getInterval());
	}

	// 每个等级,每次提现的额度配置
	private final static BigDecimal[] levels = { // 提现额度升级
			BigDecimal.valueOf(10), // level-1
			BigDecimal.valueOf(100), // level-2
			BigDecimal.valueOf(500), // level-3
			BigDecimal.valueOf(800), // level-4
			BigDecimal.valueOf(1200), // level-5
			BigDecimal.valueOf(2000), // level-6
			BigDecimal.valueOf(2800), // level-7
			BigDecimal.valueOf(3200), // level-8
			BigDecimal.valueOf(3700), // level-9
			BigDecimal.valueOf(4000), // level-10
			BigDecimal.valueOf(4500), // level-11
			BigDecimal.valueOf(5500), // level-12
			BigDecimal.valueOf(6000), // level-13
			BigDecimal.valueOf(6500), // level-14
			BigDecimal.valueOf(7500), // level-15
			BigDecimal.valueOf(8000), // level-16
			BigDecimal.valueOf(8500), // level-17
			BigDecimal.valueOf(9000), // level-18
			BigDecimal.valueOf(20000), // level-19
			BigDecimal.valueOf(30000), // level-20
			BigDecimal.valueOf(40000), // level-21
			BigDecimal.valueOf(60000)// level-22
	};
	// 充值金额*倍数=能提现额度
	private static final BigDecimal MULTIPLE = BigDecimal.valueOf(5);

	public static BigDecimal[] level(BigDecimal currency) {
		int currentlevel = 0;
		for (BigDecimal quota : levels) {
			if (currency.compareTo(quota) > -1) {
				currentlevel++;
			}
		}
		BigDecimal range = levels[currentlevel];// 当前充值额度范围
		if (currentlevel < levels.length) {
			return new BigDecimal[] { BigDecimal.valueOf(currentlevel), range.multiply(MULTIPLE) };
		}
		return new BigDecimal[] { BigDecimal.valueOf(currentlevel), range.multiply(MULTIPLE) };
	}
}

  

posted @ 2021-04-23 11:26  light-zhang  阅读(440)  评论(0编辑  收藏  举报