OETY欧亿|Home

135-2716-3909
网站建设资讯详细

如何实现◉微信小程□□□□序的轮盘•抽奖功能

发表日期:2026-06-19 00:00:01   作者来源:OETY欧亿   浏览:9240   标签:微信小程序    抽奖小程序    
为了吸引□□用户,商家会做□□□□一些活动,利用赠送□□□或充值的□□□积分来进□□行抽奖,现在来讲□□□下微信小丨程序如果✦实现轮盘□□□抽奖的功◈能,先看下图:
 

抽奖

上面展示▽的就是轮□□□盘抽奖,一共有六□□□个奖项,其中一个▽是“不中奖”的,其余五个□□□□均能获得□□□□奖品,奖品的标□□题、奖品类型(实物或积□□□□分)、中奖概率,每次抽奖□□□需要多少□□□□积分等都□□□可以在后□□台设置,如下图所□□示:

抽奖小程序后台设置

每次抽奖□□□时扣除积□□□分,奖品类型▼有实物和◇积分,如果是积□□□□分,直接增加□□□用户账号□□的积分,这个比较✦简单,如果是实□□□物,则要生成□□一个关联□□□商品的礼☆品订单。
中奖率:是指整个◉抽奖的分✦为1万份,所以最低□□□的中奖率◥可以设置□□成0.01%(当然如果□□□□不想用户□□□□抽到某个□□□□奖项,可以设置□□□成0%,这样用户□□□□就永远不□□□□可能抽到),后台的接◇口使用的PHP语言,计算中奖▲率的代码□□□如下图:

抽奖小程序代码

其中$i=rand(1,10000);即从1到10000随机一个◣数。
winning_odds是指某个□□□奖项的中□□奖数值,例如中奖□□□率是10%,则在winning_odds的值为1000.特别提一·下,不中奖的●概率是由100%-其他五个□□奖项的概□□□率而自动□□□□生成的。所以后台□□□修改某个□□□奖项的概○率的时候,需要更新□□□□不中奖的□□□□概率。
 
小程序JS方面:
Page({
  //奖品配置
  awardsConfig: {
    btnDisabled: ‘’,//是否允许□□点击抽奖
    awards: [
      { 'index': 0, 'name': '300积分' },
      { 'index': 1, 'name': '某商品' },
      { 'index': 2, 'name': '1000积分' },
      { 'index': 3, 'name': '100积分' },
      { 'index': 4, 'name': '不中奖' },
      { 'index': 5, 'name': '某实物' }
    ]
  },
  onReady: function (e) {
    this.drawAwardRoundel();
  },
 
//画抽奖圆盘
  drawAwardRoundel: function () {
    var awards = this.awardsConfig.awards;
    var awardsList = [];
    var turnNum = 1 / awards.length;  // 文字旋转 turn 值
    // 奖项列表
    for (var i = 0; i < awards.length; i++) {
      awardsList.push({ turn: i * turnNum + 'turn', lineTurn: i * turnNum + turnNum / 2 + 'turn', award: awards[i].name });
    }
    this.setData({
      btnDisabled: this.awardsConfig.chance ? '' : 'disabled',
      awardsList: awardsList
    });
  },
 
  //发起抽奖
  playReward: function () {
    //中奖index
    var awardIndex = 2;
    var runNum = 8;//旋转8周
    var duration = 4000;//时长
    // 旋转角度
    this.runDeg = this.runDeg || 0;
    this.runDeg = this.runDeg + (360 - this.runDeg % 360) + (360 * runNum - awardIndex * (360 / 6))
    //创建动画
    var animationRun = wx.createAnimation({
      duration: duration,
      timingFunction: 'ease'
    })
    animationRun.rotate(this.runDeg).step();
    this.setData({
      animationData: animationRun.export(),
      btnDisabled: 'disabled'
    });
 
    // 中奖提示
    var awardsConfig = this.awardsConfig;
    setTimeout(function () {
      wx.showModal({
        title: '恭喜',
        content: '获得' + (awardsConfig.awards[awardIndex].name),
        showCancel: false
      });
      this.setData({
        btnDisabled: ''
      });
    }.bind(this), duration);
 
  }
})
小程序的wxml代码如下□□图:

前端代码

我们这里□□□就不详细☆讲如何调□□□□用API接口,如何判断□□□是获取了□□□□哪个奖项□□了,大家可以□□根据初始□□的JS代码来套□□程序,因为改变□□□了awardIndex值,对应的奖□□□项也会出□□□□来,通过后台◎接口的返□□□□回值,可以判断□□□□是积分还◥是实物,然后进行□□□下一步操□□作.为了防止◇用户连续□□□点击“抽奖”的按钮,需要用 btnDisabled来判断用□□户是否可□□以继续抽□□奖,当轮盘尚□□□未转完时,是不允许◎重复点击□□的。
 
以上就是□□□□对微信小☆程序轮盘□□抽奖后台□□□□功能,抽奖概率,小程序JS代码进行□□□讲解,这是只提□□供一种思□□□□路,大家可以□□□□根据实际□□的情况对□□□程序功能※进行调整。
 
 

 
如没特殊注明,文章均为OETY欧亿原创,转载请注明来自https://www.hd-banhen.com/news/4891.html