最近要做的功能是用户发布短视频获取随机红包,针对红包领取会有规则限制,下面只说下红包领取的规则
1.用户总共能够获取5个红包
2.用户5个红包都领取完不能超过设置的最大金额
3.每一次领取的金额最小值不能超过设置金额,最大值不能超过设置金额
红包规则代码如下:
采用二倍均数法获取领取红包数最大金额的范围:
不能超过的最大获取的金额 = 剩余红包金额 / 红包剩余数量 * 2
注意:因为有金额计算,所以需要用BigDecimal,浮点会丢失金额准确性
/**
* 发布视频-随机获取红包金额
*
* @param remainRedNum 红包剩余数量
* @param syMoney 剩余金额
* @param minMoney 最小金额
* @Author df
* @Date 2020/9/19 15:45
*/
public static BigDecimal getRedPackageMoney(int remainRedNum, BigDecimal syMoney, double minMoney) {
Random random = new Random();
BigDecimal bdRemainRedNum = BigDecimal.valueOf(remainRedNum);
BigDecimal bdRemainRedNumTow = BigDecimal.valueOf(2);
BigDecimal zero = BigDecimal.valueOf(0.0);
BigDecimal max = syMoney.divide(bdRemainRedNum, 2, RoundingMode.FLOOR).multiply(bdRemainRedNumTow);
// 随机获取金额
Double money = random.nex

最低0.47元/天 解锁文章
1375

被折叠的 条评论
为什么被折叠?



