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