文档
测试

08-幸运抽奖接口

POST
https://www.likefitone.com/chicken/public/index.php/index/index/UserLucky

接口描述

方法:UserLucky 出现-错误101

说明 / 示例

```php /** * [UserLucky 幸运抽奖] */ public function UserLucky(Request $Request) { if ($Request->isPost()) { $param = (new CheckParam())->CheckParam(['uid'], 'post'); $UserModel = model('user'); // 用户的抽奖次数 $start = strtotime(date("Y-m-d 00:00:00")); $stop = strtotime(date("Y-m-d 24:00:00")); $count = model('lotteryRecord')->where(['user_id' => $param['uid'], 'create_time' => ['between', [$start, $stop]]])->count(); $UserModel = model('user'); // 用户每日抽奖次数 $Luckydraw = model('config')->field('Luckydraw,lacku_num')->where(['id' => 1])->find(); // 剩余次数 $num = $Luckydraw['Luckydraw'] - $count; if ($count >= $Luckydraw['Luckydraw']) { $this->error('您当天抽奖次数不足!'); } if ($count >= $Luckydraw['lacku_num']) { $data['msg'] = "看广告获取抽奖,当天抽奖次数还剩:{$num}次!,点击确定观看广告即可再次抽奖"; $data['code'] = 2; return $data; } $prize_arr = Db::name('prize')->select(); foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = $this->get_rand($arr); //根据概率获取奖项id $res['yes']['name'] = $prize_arr[$rid - 1]['name']; //中奖项 $res['yes']['pic'] = $prize_arr[$rid - 1]['pic']; //中奖项 $res['yes']['type'] = $prize_arr[$rid - 1]['type']; //中奖项 $res['yes']['id'] = $prize_arr[$rid - 1]['id']; //中奖项 //将中奖项从数组中剔除,剩下未中奖项,如果是数据库验证,这里可以省掉 unset($prize_arr[$rid - 1]); shuffle($prize_arr); //打乱数组顺序 for ($i = 0; $i < count($prize_arr); $i++) { $pr[] = $prize_arr[$i]['name']; } $save['user_id'] = $param['uid']; $save['name'] = $res['yes']['name']; $save['type'] = $res['yes']['type']; $save['create_time'] = time(); $return = Db::name('lotteryRecord')->insert($save); if ($return) { // 用户的抽奖次数 $start = strtotime(date("Y-m-d 00:00:00")); $stop = strtotime(date("Y-m-d 24:00:00")); $count = model('lotteryRecord')->where(['user_id' => $param['uid'], 'create_time' => ['between', [$start, $stop]]])->count(); $UserModel = model('user'); // 用户每日抽奖次数 $Luckydraw = model('config')->field('Luckydraw,lacku_num')->where(['id' => 1])->find(); // 剩余次数 $num = $Luckydraw['Luckydraw'] - $count; $res['number'] = $num; $this->success("{$res['yes']['name']}", '', $res); } } else { $this->error('请求错误!'); } } public function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset($proArr); return $result; } ```