【红包雨】活动红包雨实现逻辑(ionic+springboot)

前言

活动形式:参与活动人员通过红包雨活动抢积分,通过积分可进行相应的奖品兑换
  活动当天,我负责完成的功能包括:发红包,红包雨,排行榜

我的考虑

在这里插入图片描述

实现逻辑

一、发红包(拆分)

我们采取的是可控情况的不等额金额分配,这种情况下参数共需4个:总金额,红包个数,最大值,最小值,具体拆分形式
多种多样,这里举个栗子(可限定最大值,最小值):

// 每一份随机金额范围(除最后一份),最小值为1,最大值为当前剩余平均金额的3倍
// 当前剩余平均金额=剩余总金额/剩余红包
public ArrayList<Integer> divide(int totalMoney, int count) {
    //创建保存各个红包金额的集合
    ArrayList<Integer> list = new ArrayList <>();
    //定义循环次数,总个数‐1次
    int time = count‐1;
    //创建随机数对象
    Random random = new Random();
    //循环分配
    for (int i = 0; i < time; i++) {
        /*
         *每次重新计算,生成随机金额
         *随机范围:totalMoney/count*3,totalMoney不断的减少,
         *count也不断的减少,所以这是一个可变化的范围.
         */
        int money = random.nextInt(totalMoney / count * 3) + 1;
        //金额添加到集合
        list.add(money);
        //总金额扣除已分配金额
        total Money‐=money;
        //红包个数‐1
        count‐‐;
    }
    //剩余的金额,为最后一个红包
    list.add(totalMoney);
    return list;
}
二、抢红包(含关键逻辑的代码)

(一)逻辑
抢红包的关键点:抢、存
抢:

  1. 什么时候抢
    • 有红包活动
    • 当前时间晚于红包开抢时间
  2. 抢什么
    • 积分
    • 语录

部分代码

 private static AtomicInteger count = new AtomicInteger(0);
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值