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) }; } }