zoukankan      html  css  js  c++  java
  • 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) };
    	}
    }
    

      

  • 相关阅读:
    MSDTC服务出错
    jquery.lazyload.js实现图片延迟加载——wordpress图片随滚动条渐显效果
    js:警惕firstChild
    基于jquery的表格排序
    jquery JSON的解析方式
    用JS jquery取float型小数点后两位
    JQuery之append和appendTo的区别,还有js中的appendChild用法
    js笔记之Math random()、ceil()、floor()、round()
    Oracle笔记
    STL: equal
  • 原文地址:https://www.cnblogs.com/light-zhang/p/14693028.html
Copyright © 2011-2022 走看看