201, 'msg' => '功能关闭中', 'data' => null]; } if($config['explore_box_status'] != 1){ return ['code' => 201, 'msg' => '奖池关闭中!', 'data' => null]; } $redis = connectionRedis(); if(intval($pay_amount) != $pay_amount) { return ['code' => 201, 'msg' => '投入金币只能为整数', 'data' => null]; } $pay_amount_num = bcdiv($pay_amount, 10, 1); if(ceil($pay_amount_num) != $pay_amount_num) { return ['code' => 201, 'msg' => '投入金币只能为10的整数倍', 'data' => null]; } $unique_key = $nbl_id; $path = './lock/lock_new_box' . $unique_key . '.txt'; $fh = fopen($path, 'w'); flock($fh, LOCK_EX); $keyname = 'user:new:box:nbl_id:'. $nbl_id; $info = Db::name('new_box_log')->where('id', $nbl_id)->find(); if(empty($info)) { $this->file_unlock($fh); return ['code' => 201, 'msg' => '数据不存在', 'data' => null]; } //活动队列名称 $keyname_num_sn = 'new:box:nb_id:'. $info['nb_id']; if($info['status'] != 1) { $this->file_unlock($fh); return ['code' => 201, 'msg' => '本期已结束', 'data' => null]; } if(($info['total_amount'] - $info['amount']) < $pay_amount) { $this->file_unlock($fh); return ['code' => 201, 'msg' => '投入金币过多', 'data' => null]; } $user_info = Db::name('user')->where('uid', $uid)->field('uid,integral,base64_nick_name,is_tester')->find(); if(empty($user_info)) { $this->file_unlock($fh); return ['code' => 201, 'msg' => '用户数据不存在', 'data' => null]; } if($user_info['is_tester'] != 1) { $this->file_unlock($fh); return ['code' => 201, 'msg' => '测试号不支持该玩法', 'data' => null]; } if($user_info['integral'] < $pay_amount) { $this->file_unlock($fh); return ['code' => 201, 'msg' => '用户金币不足', 'data' => null]; } //是否需要回退redis数据 $is_call_back_redis = 0; //如果投入金币等于总投入本期结束 $is_over = 0; $gift_price = Db::name('gift')->where('gid', $info['gid'])->value('gift_price'); //是否可回退编号 $is_call_back_redis_num_sn = 0; //用户编号 $user_new_box_num_sn = []; //回退数 $user_new_box_num_sn_reids_list = []; //赢取礼物人id $win_uid = 0; // dump($redis->lrange($keyname_num_sn, 0, -1));die; Db::startTrans(); try { //在该奖池总投入 $reslut = model('admin/User')->change_user_money_by_uid($uid, ($pay_amount * -1), 2, 61, "龙蛋神谕玩法", $uid, 0, $rid); if ($reslut['code'] != 200) { Db::rollback(); $this->file_unlock($fh); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } // $reslut = model('admin/User')->change_user_money_by_uid($uid, ($pay_amount), 5, 51, "钥匙增加", $uid, 0, $rid); // if ($reslut['code'] != 200) { // Db::rollback(); // $this->file_unlock($fh); // return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; // } $map = []; $map[] = ['uid', '=', $uid]; $map[] = ['nbl_id', '=', $nbl_id]; $user_new_box_account_info = Db::name('user_new_box_account')->where($map)->find(); if($user_new_box_account_info) { Db::name('user_new_box_account')->where('id', $user_new_box_account_info['id'])->inc('pay_amount', $pay_amount)->update(['update_time' => time()]); } else { $insert_account = [ 'uid' => $uid, 'nbl_id' => $nbl_id, 'pay_amount' => $pay_amount, 'update_time' => time(), ]; Db::name('user_new_box_account')->insert($insert_account); } //弹出随机编号 for ($i = 0; $i < $pay_amount_num; $i++) { $num_data = $redis->blpop($keyname_num_sn, 2); //1s 超时 if (empty($num_data)) { $this->redis_new_box_log_rollback($redis, $keyname_num_sn, $user_new_box_num_sn_reids_list); return ['code' => 201, 'msg' => '奖池数量不足', 'data' => null]; } else { $num_data_data = explode('-', $num_data[1]); $nbl_ids = $num_data_data[0]; $num_sn = $num_data_data[1]; $user_new_box_num_sn_reids_list[] = $num_data[1]; if($nbl_ids == $nbl_id) { $user_new_box_num_sn[] = $uid . '-'. $num_sn; $is_call_back_redis_num_sn = 1; } else { $this->redis_new_box_log_rollback($redis, $keyname_num_sn, $user_new_box_num_sn_reids_list); return ['code' => 201, 'msg' => '奖池参数错误', 'data' => null]; } } } //用户投入记录 $user_new_box_log = [ 'uid' => $uid, 'nbl_id' => $nbl_id, 'pay_amount' => $pay_amount, 'rid' => $rid, 'add_time' => time() ]; $unbl_id = Db::name('user_new_box_log')->insertGetId($user_new_box_log); //本次投注获取号码 $insert_user_new_box_log_sn = []; foreach($user_new_box_num_sn as $v) { $arr = explode('-', $v); $num_sn = $arr[1]; $temp = [ 'nbl_id' => $nbl_id, 'num_sn' => $num_sn, 'uid' => $uid, 'add_time' => time() ]; $insert_user_new_box_log_sn[] = $temp; } Db::name('user_new_box_log_num')->insertAll($insert_user_new_box_log_sn); $update_data = ['update_time' => time()]; if(($info['amount'] + $pay_amount) == $info['total_amount']) { //生成新的奖池 $update_data['status'] = 2; $update_data['over_time'] = time(); //插入队列数据 $result = $this->add_box_user_queue($redis, $keyname, $uid, $user_new_box_num_sn); if($result['code'] == 201) { Db::rollback(); $this->redis_new_box_log_rollback($redis, $keyname_num_sn, $user_new_box_num_sn_reids_list); $this->file_unlock($fh); return ['code' => 201, 'msg' => '请重新投注', 'data' => null]; } else { $is_call_back_redis = 1; } //查找获取胜利的人 $win_uid_str = $this->compute_new_box_log($redis, $keyname); $win_uid_arr = explode('-', $win_uid_str); $win_uid = $win_uid_arr[0]; $win_num_sn = $win_uid_arr[1]; //插入背包 $now_time = time(); $map = []; $map[] = ['uid', '=', $win_uid]; $map[] = ['gid', '=', $info['gid']]; $data = []; $data['gid'] = $info['gid']; $data['update_time'] = $now_time; $reslut = db::name('user_gift_pack')->where($map)->inc('num', 1)->inc('total_num', 1)->update($data); if (!$reslut) { $data = []; $data['uid'] = $win_uid; $data['gid'] = $info['gid']; $data['total_num'] = 1; $data['num'] = 1; $data['is_tester'] = 1; $data['add_time'] = $now_time; $data['update_time'] = $now_time; $reslut = db::name('user_gift_pack')->insert($data); if (!$reslut) { Db::rollback(); $this->redis_new_box_log_rollback($redis, $keyname_num_sn, $user_new_box_num_sn_reids_list); $this->file_unlock($fh); return ['code' => 201, 'msg' => '请重试', 'data' => null]; } } $data = []; $data['uid'] = $win_uid; $data['type'] = 5; $data['bl_id'] = $nbl_id; $data['gid'] = $info['gid']; $data['gift_price'] = $gift_price; $data['change_num'] = 1; $data['total_gift_price'] = $gift_price; $data['after_num'] = 1; $data['is_tester'] = 1; $data['remarks'] = "开宝箱获得"; $data['add_time'] = $now_time; $data['update_time'] = $now_time; db::name('user_gift_pack_log')->insert($data); $update_data['win_uid'] = $win_uid; $update_data['win_num_sn'] = $win_num_sn; $is_over = 1; } else { $result = $this->add_box_user_queue($redis, $keyname, $uid, $user_new_box_num_sn); if($result['code'] == 201) { Db::rollback(); $this->redis_new_box_log_rollback($redis, $keyname_num_sn, $user_new_box_num_sn_reids_list); $this->file_unlock($fh); return ['code' => 201, 'msg' => '请重新投注', 'data' => null]; } else { $is_call_back_redis = 1; } } //更新期数 Db::name('new_box_log')->where('id', $nbl_id)->inc('amount', $pay_amount)->update($update_data); //创建新期数 if($is_over == 1) { } //开奖全服播报 if($is_over == 1) { //推送礼物信息 $user_charm_info = model('User')->get_user_charm_contribution_info($win_uid); $win_user_info = Db::name('user')->where('uid', $win_uid)->field('uid,base64_nick_name,head_pic')->find(); $push_all_gift_data = []; $push_group_gift_data = []; $push_sqb_gift_data = []; $push_all_gift_data['user_info']['uid'] = $win_user_info['uid']; $push_all_gift_data['user_info']['nick_name'] = mb_convert_encoding(base64_decode($win_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $push_all_gift_data['user_info']['head_pic'] = localpath_to_netpath($win_user_info['head_pic']); $push_all_gift_data['user_info']['contribution_level_image'] = $user_charm_info['data']['contribution_level_image']; $sqb_gift_info = db::name('gift')->field('gid,gift_name,gift_price,base_image,play_image,gift_type')->where('gid', $info['gid'])->find(); $sqb_gift_info['base_image'] = localpath_to_netpath($sqb_gift_info['base_image']); $sqb_gift_info['play_image'] = localpath_to_netpath($sqb_gift_info['play_image']); $sqb_gift_info['open_num'] = 1; $sqb_gift_info['uid'] = $win_user_info['uid']; $sqb_gift_info['nick_name'] = mb_convert_encoding(base64_decode($win_user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); $sqb_gift_info['head_pic'] = localpath_to_netpath($win_user_info['head_pic']); $sqb_gift_info['num'] = 1; $sqb_gift_info['total_open_num'] = 1; $sqb_gift_info['box_type_name'] = '龙蛋神谕'; $sqb_gift_info['type_name'] = '龙蛋神谕'; $sqb_gift_info['box_type'] = 99; $sqb_gift_info['surprise'] = 0; $push_all_gift_data['gift_list'][] = $sqb_gift_info; $push_data = []; $push_data['code'] = 304; $push_data['msg'] = "开宝箱全服播报数据"; $push_data['data'] = $push_all_gift_data; model('api/WebSocketPush')->send_to_all($push_data); $this->clear_queue_list($redis, $keyname); $new_box_info = Db::name('new_box')->find($info['nb_id']); $this->create_new_box_log($new_box_info); $push_data_result = $this->get_new_box_log_info($uid,$info['nb_id']); $push_data_result['is_over'] = 1; $push_data = []; $push_data['code'] = 343; $push_data['msg'] = "开宝箱全服播报数据"; $push_data['data'] = $push_data_result; model('api/WebSocketPush')->send_to_all($push_data); } else { $push_data_result = $this->get_new_box_log_info($uid,$info['nb_id']); $push_data_result['is_over'] = 2; $push_data = []; $push_data['code'] = 343; $push_data['msg'] = "开宝箱全服播报数据"; $push_data['data'] = $push_data_result; model('api/WebSocketPush')->send_to_all($push_data); } Db::commit(); $integral = $user_info['integral'] - $pay_amount; $this->file_unlock($fh); return ['code' => 200, 'msg' => '开启成功', 'data' => ['integral' => $integral]]; } catch (\Exception $e) { // 回滚事务 if($is_call_back_redis == 1) { $this->redis_gift_data_rollback($redis, $keyname, $pay_amount_num); } if($is_call_back_redis_num_sn == 1) { $this->redis_new_box_log_rollback($redis, $keyname_num_sn, $user_new_box_num_sn_reids_list); } Db::rollback(); // dump($user_new_box_num_sn_reids_list); // dump($e); return ['code' => 201, 'msg' => '开启失败', 'data' => null]; } } //回退编号 public function redis_new_box_log_rollback($redis, $keyname, $arr) { if(!empty($arr)) { array_unshift($arr, $keyname); //右侧取 右侧插入 call_user_func_array([$redis, 'lPush'], $arr); } } //奖池归属算法 public function compute_new_box_log($redis, $keyname) { $uid_arr = $redis->lrange($keyname, 0, -1); shuffle($uid_arr); $key = mt_rand(0, (count($uid_arr) - 1)); // dump($uid_arr);die; return $uid_arr[$key]; } //清空队列 public function clear_queue_list($redis, $keyname) { $redis->del($keyname); } //获取奖池信息 public function get_new_box_log_info($uid, $nb_id) { $info = Db::name('new_box_log') ->alias('a') ->join('yy_gift b', 'a.gid = b.gid') ->field('a.total_amount,a.amount,a.nb_id,a.nbl_sn,a.id as nbl_id,b.gift_name,b.base_image,b.gift_price') ->where('nb_id', $nb_id) ->where('a.status', 1) ->order('id', 'desc') ->find(); if($info) { $my_pay_amount = Db::name('user_new_box_account')->where(['uid' => $uid, 'nbl_id' => $info['nbl_id']])->value('pay_amount'); $info['my_pay_amount'] = $my_pay_amount ? $my_pay_amount : 0; $info['base_image'] = localpath_to_netpath($info['base_image']); $info['gift_name'] = $info['gift_name'] . '(' . intval($info['gift_price']) . ')'; $info['uid'] = $uid; } return $info; } //插入队列数据 private function add_box_user_queue($redis, $keyname, $uid, $uid_arr) { if($uid_arr) { array_unshift($uid_arr, $keyname); //右侧取 右侧插入 call_user_func_array([$redis, 'lPush'], $uid_arr); } return ['code' => 200, 'msg' => '入队成功', 'data' => null]; } //返还用户抽中礼物到奖池 public function redis_gift_data_rollback($redis, $keyname, $pay_amount) { for($i=0; $i < $pay_amount; $i++) { $redis->lpop($keyname); } return ['code' => 200, 'msg' => '返还成功', 'data' => null]; } public function get_new_box_list($uid) { //第一个奖池 $one_nb_id = 1; $one_box_log_info = $this->get_new_box_log_info($uid,$one_nb_id); $one_nb_id_show = true; $one_box_info = Db::name('new_box')->find($one_nb_id); if($one_box_info['new_box_status'] == 2){ $one_nb_id_show = false; } if(empty($one_box_log_info)) { $this->create_new_box_log($one_box_info); $one_box_log_info = $this->get_new_box_log_info($uid,$one_nb_id); } //第二个奖池 $two_nb_id = 2; $two_box_log_info = $this->get_new_box_log_info($uid,$two_nb_id); $two_nb_id_show = true; $two_box_info = Db::name('new_box')->find($two_nb_id); if($two_box_info['new_box_status'] == 2){ $two_nb_id_show = false; } if(empty($two_box_log_info)) { $this->create_new_box_log($two_box_info); $two_box_log_info = $this->get_new_box_log_info($uid,$two_nb_id); } //第三个奖池 $three_nb_id = 3; $three_box_log_info = $this->get_new_box_log_info($uid,$three_nb_id); $three_nb_id_show = true; $three_box_info = Db::name('new_box')->find($three_nb_id); if($three_box_info['new_box_status'] == 2){ $three_nb_id_show = false; } if(empty($three_box_log_info)) { $this->create_new_box_log($three_box_info); $three_box_log_info = $this->get_new_box_log_info($uid,$three_nb_id); } //第四个奖池 $four_nb_id = 4; $four_box_log_info = $this->get_new_box_log_info($uid,$four_nb_id); $four_nb_id_show = true; $four_box_info = Db::name('new_box')->find($four_nb_id); if($four_box_info['new_box_status'] == 2){ $four_nb_id_show = false; } if(empty($four_box_log_info)) { $this->create_new_box_log($four_box_info); $four_box_log_info = $this->get_new_box_log_info($uid,$four_nb_id); } //第五个奖池 $five_nb_id = 5; $five_box_log_info = $this->get_new_box_log_info($uid,$five_nb_id); $five_nb_id_show = true; $five_box_info = Db::name('new_box')->find($five_nb_id); if($five_box_info['new_box_status'] == 2){ $five_nb_id_show = false; } if(empty($five_box_log_info)) { $this->create_new_box_log($five_box_info); $five_box_log_info = $this->get_new_box_log_info($uid,$five_nb_id); } //第六个奖池 $six_nb_id = 6; $six_box_log_info = $this->get_new_box_log_info($uid,$six_nb_id); $six_nb_id_show = true; $six_box_info = Db::name('new_box')->find($six_nb_id); if($six_box_info['new_box_status'] == 2){ $six_nb_id_show = false; } if(empty($six_box_log_info)) { $this->create_new_box_log($six_box_info); $six_box_log_info = $this->get_new_box_log_info($uid,$six_nb_id); } //第七个奖池 $seven_nb_id = 7; $seven_box_log_info = $this->get_new_box_log_info($uid,$seven_nb_id); $seven_nb_id_show = true; $seven_box_info = Db::name('new_box')->find($seven_nb_id); if($seven_box_info['new_box_status'] == 2){ $seven_nb_id_show = false; } if(empty($seven_box_log_info)) { $this->create_new_box_log($seven_box_info); $seven_box_log_info = $this->get_new_box_log_info($uid,$seven_nb_id); } //第八个奖池 $eight_nb_id = 8; $eight_box_log_info = $this->get_new_box_log_info($uid,$eight_nb_id); $eight_nb_id_show = true; $eight_box_info = Db::name('new_box')->find($eight_nb_id); if($eight_box_info['new_box_status'] == 2){ $eight_nb_id_show = false; } if(empty($eight_box_log_info)) { $this->create_new_box_log($eight_box_info); $eight_box_log_info = $this->get_new_box_log_info($uid,$eight_nb_id); } // //第九个奖池 $nine_nb_id = 9; $nine_box_log_info = $this->get_new_box_log_info($uid,$nine_nb_id); $nine_nb_id_show = true; $nine_box_info = Db::name('new_box')->find($nine_nb_id); if($nine_box_info['new_box_status'] == 2){ $nine_nb_id_show = false; } if(empty($nine_box_log_info)) { $this->create_new_box_log($nine_box_info); $nine_box_log_info = $this->get_new_box_log_info($uid,$nine_nb_id); } $list = []; if($one_nb_id_show){ $list[] = $one_box_log_info; } if($two_nb_id_show){ $list[] = $two_box_log_info; } if($three_nb_id_show){ $list[] = $three_box_log_info; } if($four_nb_id_show){ $list[] = $four_box_log_info; } if($five_nb_id_show){ $list[] = $five_box_log_info; } if($six_nb_id_show){ $list[] = $six_box_log_info; } if($seven_nb_id_show){ $list[] = $seven_box_log_info; } if($eight_nb_id_show){ $list[] = $eight_box_log_info; } if($nine_nb_id_show){ $list[] = $nine_box_log_info; } // $list = [ // $one_box_log_info, // $two_box_log_info, // $three_box_log_info, // $four_box_log_info, // $five_box_log_info, // $six_box_log_info, // $seven_box_log_info, // $eight_box_log_info, // $nine_box_log_info // ]; $integral = Db::name('user')->where('uid', $uid)->value('integral'); $data = [ 'integral' => $integral, 'list' => $list ]; return ['code' => 200, 'msg' => '获取数据成功', 'data' => $data]; } // public function get_new_box_list1($uid) // { // //第一个奖池 // $one_nb_id = 1; // $one_box_log_info = $this->get_new_box_log_info($uid,$one_nb_id); // $one_nb_id_show = true; // $one_box_info = Db::name('new_box')->find($one_nb_id); // if($one_box_info['new_box_status'] == 2){ // $one_nb_id_show = false; // } // //第二个奖池 // $two_nb_id = 2; // $two_box_log_info = $this->get_new_box_log_info($uid,$two_nb_id); // $two_nb_id_show = true; // $two_box_info = Db::name('new_box')->find($two_nb_id); // if($two_box_info['new_box_status'] == 2){ // $two_nb_id_show = false; // } // //第三个奖池 // $three_nb_id = 3; // $three_box_log_info = $this->get_new_box_log_info($uid,$three_nb_id); // $three_nb_id_show = true; // $three_box_info = Db::name('new_box')->find($three_nb_id); // if($three_box_info['new_box_status'] == 2){ // $three_nb_id_show = false; // } // //第四个奖池 // $four_nb_id = 4; // $four_box_log_info = $this->get_new_box_log_info($uid,$four_nb_id); // $four_nb_id_show = true; // $four_box_info = Db::name('new_box')->find($four_nb_id); // if($four_box_info['new_box_status'] == 2){ // $four_nb_id_show = false; // } // //第五个奖池 // $five_nb_id = 5; // $five_box_log_info = $this->get_new_box_log_info($uid,$five_nb_id); // $five_nb_id_show = true; // $five_box_info = Db::name('new_box')->find($five_nb_id); // if($five_box_info['new_box_status'] == 2){ // $five_nb_id_show = false; // } // //第六个奖池 // $six_nb_id = 6; // $six_box_log_info = $this->get_new_box_log_info($uid,$six_nb_id); // $six_nb_id_show = true; // $six_box_info = Db::name('new_box')->find($six_nb_id); // if($six_box_info['new_box_status'] == 2){ // $six_nb_id_show = false; // } // //第七个奖池 // $seven_nb_id = 7; // $seven_box_log_info = $this->get_new_box_log_info($uid,$seven_nb_id); // $seven_nb_id_show = true; // $seven_box_info = Db::name('new_box')->find($seven_nb_id); // if($seven_box_info['new_box_status'] == 2){ // $seven_box_info = false; // } // //第八个奖池 // $eight_nb_id = 8; // $eight_box_log_info = $this->get_new_box_log_info($uid,$eight_nb_id); // $eight_nb_id_show = true; // $eight_box_info = Db::name('new_box')->find($eight_nb_id); // if($eight_box_info['new_box_status'] == 2){ // $eight_nb_id_show = false; // } // //第九个奖池 // $nine_nb_id = 9; // $nine_box_log_info = $this->get_new_box_log_info($uid,$nine_nb_id); // $nine_nb_id_show = true; // $nine_box_info = Db::name('new_box')->find($nine_nb_id); // if($nine_box_info['new_box_status'] == 2){ // $nine_nb_id_show = false; // } // halt([ // $one_nb_id_show, // $two_nb_id_show, // $three_nb_id_show, // $four_nb_id_show, // $five_nb_id_show, // $six_nb_id_show, // $seven_nb_id_show, // $eight_nb_id_show, // $nine_nb_id_show // ]); // } //生成奖池 public function create_new_box_log($new_box_info) { //期数id $nbl_sn = 1; //查找上一期期数 $last_new_box_log_info = Db::name('new_box_log')->where('nb_id', $new_box_info['id'])->order('id', 'desc')->find(); if($last_new_box_log_info) { $nbl_sn = $last_new_box_log_info['nbl_sn'] + 1; } $insert_data = [ 'nb_id' => $new_box_info['id'], 'total_amount' => $new_box_info['total_amount'], 'gid' => $new_box_info['gid'], 'nbl_sn' => $nbl_sn, 'add_time' => time(), 'update_time' => time() ]; $log_id = Db::name('new_box_log')->insertGetId($insert_data); $num_arr = []; $total_num = intval($new_box_info['total_amount']/10); for($i=1; $i <= $total_num; $i++) { $num_arr[] = $log_id . '-'. $i; } shuffle($num_arr); $keyname = 'new:box:nb_id:' . $new_box_info['id']; array_unshift($num_arr, $keyname); $redis = connectionRedis(); call_user_func_array([$redis, 'rPush'], $num_arr); } //登顶记录 public function get_new_box_win_user($nb_id, $page, $page_limit) { $map = []; if($nb_id) { $map[] = ['a.nb_id', '=', $nb_id]; } $map[] = ['a.status', '=', 2]; $list = Db::name('new_box_log') ->alias('a') ->join('yy_user b', 'a.win_uid = b.uid') ->where($map) ->field('a.id,b.base64_nick_name,b.uid,b.head_pic,a.nbl_sn,a.win_num_sn,over_time') ->order('a.id', 'desc') ->page($page, $page_limit) ->select(); foreach($list as &$val) { $val['head_pic'] = localpath_to_netpath($val['head_pic']); $val['nick_name'] = mb_convert_encoding(base64_decode($val['base64_nick_name']), 'UTF-8', 'UTF-8'); } return ['code' => 200, 'msg' => '获取数据成功', 'data' => $list]; } //我的成就 public function get_my_new_box_log($uid, $box_type, $type, $page, $page_limit) { $map = []; $map[] = ['a.uid', '=', $uid]; if($box_type) { $map[] = ['nb_id', '=', $box_type]; } if($type == 1) { $map[] = ['b.status', '=', 1]; } elseif($type == 2) { $map[] = ['b.status', '=', 2]; $map[] = ['b.win_uid', '=', $uid]; } elseif($type == 3) { $map[] = ['b.status', '=', 2]; $map[] = ['b.win_uid', 'neq', $uid]; } $list = Db::name('user_new_box_account') ->alias('a') ->join('yy_new_box_log b', 'a.nbl_id = b.id') ->join('yy_gift c', 'b.gid = c.gid') ->field('c.gift_name, b.total_amount,a.pay_amount as amount,c.base_image,a.nbl_id,b.nbl_sn') ->where($map) ->order('a.id', 'desc') ->page($page, $page_limit) ->select(); foreach($list as &$val) { $val['base_image'] = localpath_to_netpath($val['base_image']); } return ['code' => 200, 'msg' => '获取数据成功', 'data' => $list]; } //获取规则 public function get_box_note() { $text = Db::name('config')->where('key_title', 'new_box_note')->value('key_value'); return ['code' => 200, 'msg' => '获取数据成功', 'data' => ['note' => $text]]; } //我的号码 public function get_my_box_num_sn($uid, $nbl_id, $page, $page_limit = 20) { $win_num_sn = Db::name('new_box_log')->where('id', $nbl_id)->value('win_num_sn'); $list = Db::name('user_new_box_log_num')->where(['uid' => $uid, 'nbl_id' => $nbl_id])->page($page, $page_limit)->select(); $data = []; foreach($list as $val) { $is_win = 0; if($val['num_sn'] == $win_num_sn) { $is_win = 1; } $temp['num_sn'] = $val['num_sn']; $temp['is_win'] = $is_win; $data[] = $temp; } return ['code' => 200, 'msg' => '获取数据成功', 'data' => ['list' => $data, 'win_num_sn' => $win_num_sn]]; } }