中秋活动-根据权重抽奖

简介: 中秋活动-根据权重抽奖
/**
     *
     * @param request 盲盒抽奖
     * @param request
     * @return
     */
 
    @Override
    public BGitf lotteryResults(HttpServletRequest request) {
        BUserInfo userInfo = ibUserInfoService.validationToken(request);
        Long id = userInfo.getId();
        String phoneNum = userInfo.getPhoneNum();
        String nickName = userInfo.getNickName();
        String isNewUser = userInfo.getIsNewUser();
        Assert.isTrue(isNewUser.equals("1"), "抱歉,您不是新用户");
 
        List<BGitf> bGitfs = bGitfMapper.selectBGitfList(   new BGitf());
        BGitf bGitf = mainWeightRandom(bGitfs);
        Long gitfId = bGitf.getGitfId();
        String gitfName = bGitf.getGitfName();
        String gitfImge = bGitf.getGitfImge();
        BUserAwardRecord bUserAwardRecord = new BUserAwardRecord();
        bUserAwardRecord.setUserId(id);
        bUserAwardRecord.setAwardId(gitfId);
        bUserAwardRecord.setAwardName(gitfName);
        bUserAwardRecord.setGitImge(gitfImge);
        bUserAwardRecord.setUserName(nickName);
        bUserAwardRecord.setUserPhone(phoneNum);
        bUserAwardRecord.setCreateTime(new Date());
        bUserAwardRecordMapper.insertBUserAwardRecord(bUserAwardRecord);
        isNewUser = "1";
        userInfo.setIsNewUser(isNewUser);
        bUserInfoMapper.updateBUserInfo(userInfo);
        String token = UUID.randomUUID().toString();
        redisTemplate.opsForValue().set(token, JSON.toJSONString(userInfo),5, TimeUnit.HOURS);
 
        return bGitf;
    }
 
    /**
     * 抽奖方法
     * @param awardEntities
     * @return
     */
    // 权重主方法
 
    public static BGitf mainWeightRandom(List<BGitf> awardEntities) {
        Integer weightSum = 0;
        //计算总权重
        for (BGitf wc : awardEntities) {
            weightSum += wc.getGitfProbability();
        }
 
        if (weightSum <= 0) {
            return null;
        }
        // n in [0, weightSum)
        //产生一个[0, weightSum) 的随机数
        Random random = new Random();
        Integer n = random.nextInt(weightSum);
 
 
        //判断在那个权重区间
        Integer m = 0;
        for (BGitf wc : awardEntities) {
            if (m <= n && n < m + wc.getGitfProbability()) {
 
                return wc;
            }
            m += wc.getGitfProbability();
        }
        return null;
    }
相关文章
|
弹性计算 负载均衡 NoSQL
关于红包雨功能的探索
关于红包雨功能的探索
|
开发者 异构计算 AI芯片
Colab搞了个大会员,每月50刀训练不掉线,10刀会员:我卑微了?
你以为你充了会员就无敌了?其实上面还有大会员、超级会员、至尊会员……
3148 0
Colab搞了个大会员,每月50刀训练不掉线,10刀会员:我卑微了?
盲盒抽奖流程
盲盒抽奖流程
212 0
少林、武当、峨眉三大门派会师,会师成功可得20元猫超卡。活动时间7.25-8.5日。
少林、武当、峨眉三大门派会师,会师成功可得20元猫超卡。活动时间7.25-8.5日。
138 0
少林、武当、峨眉三大门派会师,会师成功可得20元猫超卡。活动时间7.25-8.5日。
|
移动开发 监控 安全
玩归玩,闹归闹,别拿抽奖开玩笑
轻轻的一个稳,已经打动我的心
945 0
|
开发者
【限时活动】阿里云论坛积分(云币)能兑换实物礼品啦!
近日,云栖社区上线了云朵兑换系统,可以用云朵兑换实物。积分商城传送门>> 51看着里面丰富的实物奖励心动不止,一查看积分。心中哇凉哇凉的。我在阿里云论坛这那多云币,难道就只是一个纯数字? 一键查询云币余额>> 然后就找管管一哭二闹三上吊。
6471 1
|
双11 开发者
阿里云开发者社区活动奖品“猫眼电影代金券”使用规则
2020年双11又来了!今年的双11有哪些技术突破?背后的原理都是啥?快来参加“2020阿里巴巴双11技术全观”活动,每天打卡学知识赢好礼吧!
68207 0
阿里云开发者社区活动奖品“猫眼电影代金券”使用规则
|
存储 弹性计算 数据库
下一篇
无影云桌面