911 lines
52 KiB
PHP
911 lines
52 KiB
PHP
<?php
|
||
namespace app\onlinechip\controller;
|
||
|
||
use think\Cache;
|
||
use \think\Controller;
|
||
use \think\Request;
|
||
use \think\Db;
|
||
use \think\Lang;
|
||
use \think\Session;
|
||
use \think\Log;
|
||
use \think\Config;
|
||
use Waybill\WaybillDice;
|
||
use Waybill\WaybillRoulette;
|
||
use Waybill\WaybillToning;
|
||
|
||
class Managerapi extends Controller{
|
||
//登录
|
||
public function login(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$username = trim($json_arr['username']);
|
||
$password = trim($json_arr['password']);
|
||
if(empty($username) || empty($password)){
|
||
return json(['Success' => 0, 'Msg' => '请填写账号密码']);
|
||
}
|
||
$find = Db::name('manager')->where(array('username' => $username, 'status' => 1))->find();
|
||
if($find){
|
||
if(think_ucenter_md5($password, UC_AUTH_KEY) === $find['password'] && $find['password']){
|
||
$user_log = array();
|
||
$user_log['user_id'] = $find['id'];
|
||
$user_log['username'] = $find['username'];
|
||
$user_log['nickname'] = $find['nickname'];
|
||
$user_log['ip'] = getIP();
|
||
$user_log['client'] = 'PC或H5';
|
||
$user_log['create_time'] = time();
|
||
$user_log['remark'] = '登录';
|
||
Db::name('manager_log')->insert($user_log);
|
||
$online_token = $this->create_online_token($find);
|
||
$find['online_token'] = $online_token;
|
||
$find['login_token'] = $online_token;
|
||
$update = array();
|
||
$update['login_token'] = $online_token;
|
||
$update['last_login_time'] = time();
|
||
$update['last_login_ip'] = getIP();
|
||
$api_token = create_api_token($find['username'],$find['nickname']);
|
||
$update['api_token'] = $api_token;
|
||
Db::name('manager')->where(array('id' => $find['id']))->limit(1)->update($update);
|
||
$find['api_token'] = $api_token;
|
||
//存入session
|
||
Db::name('manager_session')->where(array('last_time' => array('<', time() - Config::get('session_life_time'))))->delete();
|
||
$DBSession = Db::name('manager_session')->where(array('session_id' => $api_token))->find();
|
||
if($DBSession){
|
||
Db::name('manager_session')->where(array('session_id' => $api_token))->update(array('last_time' => time(), 'user_id' => $find['id']));
|
||
}else{
|
||
Db::name('manager_session')->where(array('user_id' => $find['id']))->delete();
|
||
Db::name('manager_session')->insert(array('session_id' =>$api_token, 'last_time' => time(), 'user_id' => $find['id']));
|
||
}
|
||
unset($find['password']);
|
||
unset($find['encrypt']);
|
||
|
||
$data = encrypt_data($find);
|
||
return json(['Success' => 1, 'Msg' => '登录成功', 'Data' => $data]);
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '账号或者密码错误']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '账号或者密码错误']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '登录出错']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '登录出错']);
|
||
}
|
||
}
|
||
|
||
public function get_user_info(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$api_token = trim($json_arr['api_token']);
|
||
$user_id = Db::name('manager_session')->where(array('session_id' =>$api_token))->value('user_id');
|
||
$find = Db::name('manager')->where(array('id' => $user_id,'status' => 1))->find();
|
||
if($find){
|
||
$online_token = $this->create_online_token($find);
|
||
$find['online_token'] = $online_token;
|
||
$find['login_token'] = $online_token;
|
||
$find['api_token'] = $api_token;
|
||
|
||
unset($find['password']);
|
||
unset($find['encrypt']);
|
||
$data = encrypt_data($find);
|
||
return json(['Success' => 1, 'Msg' => '操作成功', 'Data' => $data]);
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '暂无数据']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作错误']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作错误']);
|
||
}
|
||
}
|
||
//修改密码
|
||
public function update_password(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$user_id = intval($json_arr['user_id']);
|
||
$password_now = trim($json_arr['password_now']);
|
||
$password_new = trim($json_arr['password_new']);
|
||
$password_reply = trim($json_arr['password_reply']);
|
||
$api_token = trim($json_arr['api_token']);
|
||
if($user_id > 0){
|
||
$find = Db::name('manager')->where(array('id' => $user_id))->find();
|
||
if($find && $find['api_token'] == $api_token){
|
||
if(empty($password_now) || empty($password_new) || empty($password_reply) || strlen($password_new) < 6){
|
||
return json(['Success' => 0, 'Msg' => '请填写当前密码以及新密码,新密码不能小于6个字符']);
|
||
}
|
||
if($password_new != $password_reply){
|
||
return json(['Success' => 0, 'Msg' => '两次密码不一致']);
|
||
}
|
||
if(think_ucenter_md5($password_now, UC_AUTH_KEY) == $find['password'] && $find['password']){
|
||
$newPass = think_ucenter_md5($password_new, UC_AUTH_KEY);
|
||
$res = Db::name('manager')->where(array('id' => $user_id))->limit(1)->update(array('password' => $newPass));
|
||
if($res){
|
||
return json(['Success' => 1, 'Msg' => '修改密码成功']);
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '修改密码失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '旧密码输入错误']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '修改密码失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '修改密码失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '修改密码失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '修改密码失败']);
|
||
}
|
||
}
|
||
//获取玩家列表
|
||
public function get_player_list(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$user_id = intval($json_arr['user_id']);
|
||
$api_token = trim($json_arr['api_token']);
|
||
$page = intval($json_arr['page']);
|
||
$find = Db::name('manager')->where(array('id' => $user_id,'status' => 1))->find();
|
||
$tableInfo = Db::name('table')->field(['id,table_name'])->select();
|
||
$tableInfo = array_column($tableInfo,'table_name','id');
|
||
if($find && $find['api_token'] == $api_token && $page > 0){
|
||
$page_list = 15;
|
||
if($page > 1){
|
||
$limie_start = ($page - 1) * $page_list;
|
||
}else{
|
||
$limie_start = 0;
|
||
}
|
||
$where = [];
|
||
$where['manager_id'] = $find['id'];
|
||
$where['is_delete'] = 0;
|
||
$where['status'] = 1;
|
||
$where['agent'] = 0;
|
||
$where['bet_type'] = 2;
|
||
$findPlayer = Db::name('user')->where($where)->order('last_login_time DESC')->limit($limie_start,$page_list)->select();
|
||
$player_num = Db::name('user')->where($where)->count();
|
||
$page_num = ceil($player_num/$page_list);
|
||
|
||
$playerData = [];
|
||
foreach ($findPlayer as $val){
|
||
$data = [];
|
||
$data['id'] = $val['id'];
|
||
$data['username'] = $val['username'];
|
||
$data['nickname'] = $val['nickname'];
|
||
$data['last_login_time'] = $val['last_login_time'] ? date('Y-m-d H:i:s',$val['last_login_time']) : '-';
|
||
$data['is_online'] = 0;
|
||
$data['server_status'] = 0;
|
||
$data['table_id'] = 0;
|
||
$data['table_name'] = '';
|
||
$data['bet_amount'] = 0;
|
||
if($val['api_token']){
|
||
$sessionInfo = Db::name('session')->where(['session_id' => $val['api_token'],'user_id' => $val['id']])->find();
|
||
if((time() - $sessionInfo['last_time']) <= Config::get('session_life_time')){
|
||
$data['server_status'] = $sessionInfo['server_status'];
|
||
$data['is_online'] = 1;
|
||
if($sessionInfo['table_id']){
|
||
$data['table_id'] = $sessionInfo['table_id'];
|
||
$data['table_name'] = $tableInfo[$sessionInfo['table_id']] ? $tableInfo[$sessionInfo['table_id']] : '';
|
||
$numberTabInfo = Db::name('number_tab')->field(['id'])->where('table_id',$sessionInfo['table_id'])->order('id DESC')->limit(1)->find();
|
||
if($numberTabInfo['id']){
|
||
$betInfo = Db::name('bet')->where(['table_id' => $sessionInfo['table_id'],'number_tab_id' => $numberTabInfo['id'],'user_id' => $val['id']])->field(['amount'])->find();
|
||
$data['bet_amount'] = (int)$betInfo['amount'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
$playerData[] = $data;
|
||
}
|
||
$returnData['player_data'] = $playerData;
|
||
$returnData['player_num'] = $player_num;
|
||
$returnData['page_num'] = $page_num;
|
||
$returnData = encrypt_data($returnData);
|
||
return json(array('Success' => 1, 'Data' => $returnData));
|
||
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '获取失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '获取失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '获取失败']);
|
||
}
|
||
}
|
||
public function online_players() {
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
|
||
if(Request::instance()->post()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if ($json_arr) {
|
||
$user_id = intval($json_arr['user_id']);
|
||
$api_token = trim($json_arr['api_token']);
|
||
$find = Db::name('manager')->where(array('id' => $user_id,'status' => 1, 'api_token' => $api_token))->find();
|
||
$user_online = array();
|
||
if ($find) {
|
||
$session_user = Db::name('session')->select();
|
||
foreach($session_user as $v){
|
||
$time = time() - Config::get('session_life_time');
|
||
if($v['last_time'] < $time){
|
||
//30分钟内没操作,移除在线在在线玩家的列表
|
||
Db::name('session')->where('user_id',$v['user_id'])->delete();
|
||
}else{
|
||
//30分钟内有操作的玩家,并且是该代理下面的直属玩家
|
||
$user = Db::name('user')->where(['id'=>$v['user_id'], 'manager_id'=>$user_id])->find();
|
||
if($user){
|
||
$user_online[] = $v;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return json(array('Success' => 1, 'Data' => encrypt_data($user_online)));
|
||
|
||
}
|
||
return json(['Success' => 0, 'Msg' => '获取失败']);
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '获取失败']);
|
||
}
|
||
}
|
||
|
||
//开始/停止服务
|
||
public function operate_server(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$user_id = intval($json_arr['user_id']);
|
||
$player_id = intval($json_arr['player_id']);
|
||
$operate_type = intval($json_arr['operate_type']);//1开启 0 关闭
|
||
$api_token = trim($json_arr['api_token']);
|
||
if($user_id && $player_id){
|
||
$find = Db::name('manager')->where(array('id' => $user_id))->find();
|
||
if($find && $find['api_token'] == $api_token){
|
||
$findUserSession = Db::name('session')->where(array('user_id' => $player_id))->find();
|
||
if($findUserSession && time() - $findUserSession['last_time'] <= Config::get('session_life_time')){
|
||
$updateData = [];
|
||
$updateData['server_status'] = $operate_type;
|
||
$res = Db::name('session')->where('user_id',$player_id)->update($updateData);
|
||
if($res){
|
||
return json(['Success' => 1, 'Msg' => '操作成功']);
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作失败']);
|
||
}
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作失败']);
|
||
}
|
||
|
||
}else{
|
||
return json(['Success' => 0, 'Msg' => '操作失败']);
|
||
}
|
||
}
|
||
|
||
public function all_table(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$user_id = intval($json_arr['user_id']);
|
||
$api_token = trim($json_arr['api_token']);
|
||
$user = Db::name('manager')->where(array('id' => $user_id))->find();
|
||
|
||
if($user && $user['api_token'] == $api_token){
|
||
$tableWhere = [];
|
||
$tableWhere['status'] = 1;
|
||
$tableWhere['table_type'] = 0;
|
||
$tableWhere['bet_type'] = 2;
|
||
$tables = Db::name('table')->where($tableWhere)->whereIn('game_id',[1,2])->order('sort DESC')->select();
|
||
|
||
$bootTabTable = 'boot';
|
||
$numberTabTable = 'number_tab';
|
||
$betTable = 'bet';
|
||
|
||
foreach($tables AS $key => $value){
|
||
$tableData = [];
|
||
$tableData['id'] = $value['id'];
|
||
$tableData['table_name'] = $value['table_name'];
|
||
$tableData['game_id'] = $value['game_id'];
|
||
$tableData['table_num'] = $value['table_num'];
|
||
$tableData['game_name'] = $value['game_name'];
|
||
$tableData['limit_money'] = $value['limit_money'];
|
||
$tableData['limit_money_tie'] = $value['limit_money_tie'];
|
||
if($value['game_id'] == 1){
|
||
$tableData['limit_money_pair'] = $value['limit_money_pair'];
|
||
}
|
||
$tableData['in_checkout'] = $value['in_checkout'];
|
||
|
||
$tableData['bet_amount_msg']['banker_amount'] = 0;
|
||
$tableData['bet_amount_msg']['player_amount'] = 0;
|
||
$tableData['bet_amount_msg']['tie_amount'] = 0;
|
||
if($value['game_id'] == 1){
|
||
$tableData['bet_amount_msg']['banker_pair_amount'] = 0;
|
||
$tableData['bet_amount_msg']['player_pair_amount'] = 0;
|
||
}
|
||
|
||
$tableData['status'] = $value['status'];
|
||
$tableData['is_scavenging'] = $value['is_scavenging'];
|
||
$tableData['wait_time'] = $value['wait_time'];
|
||
$tableData['rob_time'] = $value['rob_time'];
|
||
$tableData['media_far_rtmp'] = $value['media_far_rtmp'];
|
||
$tableData['media_far_flv'] = $value['media_far_flv'];
|
||
$tableData['media_far_ws'] = $value['media_far_ws'];
|
||
$tableData['media_near_rtmp'] = $value['media_near_rtmp'];
|
||
$tableData['media_near_flv'] = $value['media_near_flv'];
|
||
$tableData['media_near_ws'] = $value['media_near_ws'];
|
||
$tableData['bet_type'] = $value['bet_type'];
|
||
$tableData['is_rob'] = $value['is_rob'];
|
||
$tableData['limit_banker_amount'] = $value['limit_banker_amount'];
|
||
$tableData['table_type'] = $value['table_type'];
|
||
$tableData['is_localhost_control'] = $value['is_localhost_control'];
|
||
$tableData['phone'] = $value['phone'];
|
||
$tableData['interval_time'] = $value['interval_time'];
|
||
$tableData['card_first_type'] = $value['card_first_type'];
|
||
$tableData['spec_type'] = $value['spec_type'];
|
||
$tableData['scanner_type'] = $value['scanner_type'];
|
||
$tableData['seat_num'] = $value['seat_num'];
|
||
|
||
|
||
$boot = Db::name($bootTabTable)->where('table_id',$value['id'])->order('id DESC')->find();
|
||
if($boot){
|
||
$tableData['boot_num'] = $boot['boot_num'];
|
||
$tableData['boot_id'] = $boot['id'];
|
||
$cur_number_tab = Db::name($numberTabTable)->where(array('table_id' => $value['id'], 'boot_id' => $boot['id']))->order('id DESC')->find();
|
||
$tableData['number_tab_number'] = is_array($cur_number_tab) ? $cur_number_tab['number'] : 1;
|
||
$tableData['number_tab_id'] = is_array($cur_number_tab) ? $cur_number_tab['id'] : 1;
|
||
$tableData['bet_status'] = $cur_number_tab['bet_status'];
|
||
$seat_arr = json_decode($cur_number_tab['seat_json'],true);
|
||
//自动台返回牌型
|
||
if($value['is_scavenging'] == 1 && $cur_number_tab['bet_status'] == 2){
|
||
$card_info = getRedisCardByPosition($cur_number_tab['id']);
|
||
if($card_info){
|
||
$tableData['card_info']['banker_1'] = $card_info['banker_1'];
|
||
if($value['game_id'] == 1){
|
||
$tableData['card_info']['banker_2'] = $card_info['banker_2'];
|
||
$tableData['card_info']['banker_3'] = $card_info['banker_3'];
|
||
}
|
||
$tableData['card_info']['player_1'] = $card_info['player_1'];
|
||
if($value['game_id'] == 1){
|
||
$tableData['card_info']['player_2'] = $card_info['player_2'];
|
||
$tableData['card_info']['player_3'] = $card_info['player_3'];
|
||
}
|
||
}else{
|
||
$tableData['card_info']['banker_1'] = 0;
|
||
if($value['game_id'] == 1){
|
||
$tableData['card_info']['banker_2'] = 0;
|
||
$tableData['card_info']['banker_3'] = 0;
|
||
}
|
||
$tableData['card_info']['player_1'] = 0;
|
||
if($value['game_id'] == 1){
|
||
$tableData['card_info']['player_2'] = 0;
|
||
$tableData['card_info']['player_3'] = 0;
|
||
}
|
||
}
|
||
}else{
|
||
$tableData['card_info']['banker_1'] = 0;
|
||
if($value['game_id'] == 1){
|
||
$tableData['card_info']['banker_2'] = 0;
|
||
$tableData['card_info']['banker_3'] = 0;
|
||
}
|
||
$tableData['card_info']['player_1'] = 0;
|
||
if($value['game_id'] == 1){
|
||
$tableData['card_info']['player_2'] = 0;
|
||
$tableData['card_info']['player_3'] = 0;
|
||
}
|
||
}
|
||
|
||
$tableData['bet_info'] = [];
|
||
$sql = "SELECT u.id,u.username,s.last_time,s.server_status FROM cg_user u,cg_session s
|
||
WHERE u.manager_id = ".$user['id']." AND u.api_token = s.session_id AND s.table_id = ".$value['id'];
|
||
$res = Db::query($sql);
|
||
foreach ($res as $val){
|
||
if((time() - $val['last_time']) > Config::get('session_life_time')){
|
||
continue;
|
||
}
|
||
$userData = [];
|
||
$userData['user_id'] = $val['id'];
|
||
$userData['username'] = $val['username'];
|
||
$userData['server_status'] = $val['server_status'];
|
||
$userData['bet_amount'] = 0;
|
||
if(isset($seat_arr[$user_id])){
|
||
$nowSeatNum = array_search($val['id'],$seat_arr[$user_id]);
|
||
if($nowSeatNum){
|
||
$userData['seat_num'] = $nowSeatNum;
|
||
}else{
|
||
$userData['seat_num'] = 0;
|
||
}
|
||
}else{
|
||
$userData['seat_num'] = 0;
|
||
}
|
||
if($cur_number_tab['bet_status'] == 1 || $cur_number_tab['bet_status'] == 2){
|
||
$bet = Db::name($betTable)->where(array('table_id' => $value['id'], 'boot_id' => $boot['id'], 'number_tab_id' => $cur_number_tab['id'], 'user_id' => $val['id']))->find();
|
||
if($bet){
|
||
$userData['seat_num'] = $bet['seat_num'];
|
||
$userData['bet_amount'] = (int)$bet['amount'];
|
||
$userData['banker_amount'] = (int)$bet['banker_amount'];
|
||
$userData['player_amount'] = (int)$bet['player_amount'];
|
||
$userData['tie_amount'] = (int)$bet['tie_amount'];
|
||
if($value['game_id'] == 1){
|
||
$userData['banker_pair_amount'] = (int)$bet['banker_pair_amount'];
|
||
$userData['player_pair_amount'] = (int)$bet['player_pair_amount'];
|
||
}
|
||
|
||
$tableData['bet_amount_msg']['banker_amount'] = (int)$tableData['bet_amount_msg']['banker_amount'] + (int)$bet['banker_amount'];
|
||
$tableData['bet_amount_msg']['player_amount'] = (int)$tableData['bet_amount_msg']['player_amount'] + (int)$bet['player_amount'];
|
||
$tableData['bet_amount_msg']['tie_amount'] = (int)$tableData['bet_amount_msg']['tie_amount'] + (int)$bet['tie_amount'];
|
||
if($value['game_id'] == 1){
|
||
$tableData['bet_amount_msg']['banker_pair_amount'] = (int)$tableData['bet_amount_msg']['banker_pair_amount'] + (int)$bet['banker_pair_amount'];
|
||
$tableData['bet_amount_msg']['player_pair_amount'] = (int)$tableData['bet_amount_msg']['player_pair_amount'] + (int)$bet['player_pair_amount'];;
|
||
}
|
||
|
||
}
|
||
}
|
||
$tableData['bet_info'][] = $userData;
|
||
}
|
||
}else{
|
||
$tableData['boot_num'] = 1;
|
||
$tableData['boot_id'] = 0;
|
||
$tableData['number_tab_number'] = 1;
|
||
$tableData['number_tab_id'] = 0;
|
||
$tableData['bet_status'] = 0;
|
||
$tableData['bet_info'] = [];
|
||
$tableData['bet_amount_msg'] = [];
|
||
$tableData['card_info'] = [];
|
||
|
||
}
|
||
$tables[$key] = $tableData;
|
||
}
|
||
$data = encrypt_data($tables);
|
||
return json(array('Success' => 1, 'Data' => $data));
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
} else {
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
}
|
||
|
||
public function single_table(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
if($json_arr){
|
||
$user_id = intval($json_arr['user_id']);
|
||
$api_token = trim($json_arr['api_token']);
|
||
$table_id = intval($json_arr['table_id']);
|
||
$user = Db::name('manager')->where(array('id' => $user_id))->find();
|
||
|
||
if($user && $user['api_token'] == $api_token){
|
||
$tableWhere = [];
|
||
$tableWhere['status'] = 1;
|
||
$tableWhere['table_type'] = 0;
|
||
$tableWhere['bet_type'] = 2;
|
||
$tableWhere['id'] = $table_id;
|
||
$tableInfo = Db::name('table')->where($tableWhere)->whereIn('game_id',[1,2])->order('sort DESC')->find();
|
||
|
||
if($tableInfo){
|
||
$bootTabTable = 'boot';
|
||
$numberTabTable = 'number_tab';
|
||
$betTable = 'bet';
|
||
|
||
$tableData = [];
|
||
$tableData['id'] = $tableInfo['id'];
|
||
$tableData['table_name'] = $tableInfo['table_name'];
|
||
$tableData['game_id'] = $tableInfo['game_id'];
|
||
$tableData['table_num'] = $tableInfo['table_num'];
|
||
$tableData['game_name'] = $tableInfo['game_name'];
|
||
$tableData['limit_money'] = $tableInfo['limit_money'];
|
||
$tableData['limit_money_tie'] = $tableInfo['limit_money_tie'];
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['limit_money_pair'] = $tableInfo['limit_money_pair'];
|
||
}
|
||
$tableData['in_checkout'] = $tableInfo['in_checkout'];
|
||
|
||
$tableData['bet_amount_msg']['banker_amount'] = 0;
|
||
$tableData['bet_amount_msg']['player_amount'] = 0;
|
||
$tableData['bet_amount_msg']['tie_amount'] = 0;
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['bet_amount_msg']['banker_pair_amount'] = 0;
|
||
$tableData['bet_amount_msg']['player_pair_amount'] = 0;
|
||
}
|
||
|
||
$tableData['status'] = $tableInfo['status'];
|
||
$tableData['is_scavenging'] = $tableInfo['is_scavenging'];
|
||
$tableData['wait_time'] = $tableInfo['wait_time'];
|
||
$tableData['rob_time'] = $tableInfo['rob_time'];
|
||
$tableData['media_far_rtmp'] = $tableInfo['media_far_rtmp'];
|
||
$tableData['media_far_flv'] = $tableInfo['media_far_flv'];
|
||
$tableData['media_far_ws'] = $tableInfo['media_far_ws'];
|
||
$tableData['media_near_rtmp'] = $tableInfo['media_near_rtmp'];
|
||
$tableData['media_near_flv'] = $tableInfo['media_near_flv'];
|
||
$tableData['media_near_ws'] = $tableInfo['media_near_ws'];
|
||
$tableData['bet_type'] = $tableInfo['bet_type'];
|
||
$tableData['is_rob'] = $tableInfo['is_rob'];
|
||
$tableData['limit_banker_amount'] = $tableInfo['limit_banker_amount'];
|
||
$tableData['table_type'] = $tableInfo['table_type'];
|
||
$tableData['is_localhost_control'] = $tableInfo['is_localhost_control'];
|
||
$tableData['phone'] = $tableInfo['phone'];
|
||
$tableData['interval_time'] = $tableInfo['interval_time'];
|
||
$tableData['card_first_type'] = $tableInfo['card_first_type'];
|
||
$tableData['spec_type'] = $tableInfo['spec_type'];
|
||
$tableData['scanner_type'] = $tableInfo['scanner_type'];
|
||
$tableData['seat_num'] = $tableInfo['seat_num'];
|
||
|
||
|
||
$boot = Db::name($bootTabTable)->where('table_id',$tableInfo['id'])->order('id DESC')->find();
|
||
if($boot){
|
||
$tableData['boot_num'] = $boot['boot_num'];
|
||
$tableData['boot_id'] = $boot['id'];
|
||
$cur_number_tab = Db::name($numberTabTable)->where(array('table_id' => $tableInfo['id'], 'boot_id' => $boot['id']))->order('id DESC')->find();
|
||
$tableData['number_tab_number'] = is_array($cur_number_tab) ? $cur_number_tab['number'] : 1;
|
||
$tableData['number_tab_id'] = is_array($cur_number_tab) ? $cur_number_tab['id'] : 1;
|
||
$tableData['bet_status'] = $cur_number_tab['bet_status'];
|
||
$seat_arr = json_decode($cur_number_tab['seat_json'],true);
|
||
//自动台返回牌型
|
||
if($tableInfo['is_scavenging'] == 1 && $cur_number_tab['bet_status'] == 2){
|
||
$card_info = getRedisCardByPosition($cur_number_tab['id']);
|
||
if($card_info){
|
||
$tableData['card_info']['banker_1'] = $card_info['banker_1'];
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['card_info']['banker_2'] = $card_info['banker_2'];
|
||
$tableData['card_info']['banker_3'] = $card_info['banker_3'];
|
||
}
|
||
$tableData['card_info']['player_1'] = $card_info['player_1'];
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['card_info']['player_2'] = $card_info['player_2'];
|
||
$tableData['card_info']['player_3'] = $card_info['player_3'];
|
||
}
|
||
}else{
|
||
$tableData['card_info']['banker_1'] = 0;
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['card_info']['banker_2'] = 0;
|
||
$tableData['card_info']['banker_3'] = 0;
|
||
}
|
||
$tableData['card_info']['player_1'] = 0;
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['card_info']['player_2'] = 0;
|
||
$tableData['card_info']['player_3'] = 0;
|
||
}
|
||
}
|
||
}else{
|
||
$tableData['card_info']['banker_1'] = 0;
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['card_info']['banker_2'] = 0;
|
||
$tableData['card_info']['banker_3'] = 0;
|
||
}
|
||
$tableData['card_info']['player_1'] = 0;
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['card_info']['player_2'] = 0;
|
||
$tableData['card_info']['player_3'] = 0;
|
||
}
|
||
}
|
||
|
||
$tableData['bet_info'] = [];
|
||
$sql = "SELECT u.id,u.username,s.last_time,s.server_status FROM cg_user u,cg_session s
|
||
WHERE u.manager_id = ".$user['id']." AND u.api_token = s.session_id AND s.table_id = ".$tableInfo['id'];
|
||
$res = Db::query($sql);
|
||
foreach ($res as $val){
|
||
if((time() - $val['last_time']) > Config::get('session_life_time')){
|
||
continue;
|
||
}
|
||
$userData = [];
|
||
$userData['user_id'] = $val['id'];
|
||
$userData['username'] = $val['username'];
|
||
$userData['server_status'] = $val['server_status'];
|
||
$userData['bet_amount'] = 0;
|
||
if(isset($seat_arr[$user_id])){
|
||
$nowSeatNum = array_search($val['id'],$seat_arr[$user_id]);
|
||
if($nowSeatNum){
|
||
$userData['seat_num'] = $nowSeatNum;
|
||
}else{
|
||
$userData['seat_num'] = 0;
|
||
}
|
||
}else{
|
||
$userData['seat_num'] = 0;
|
||
}
|
||
if($cur_number_tab['bet_status'] == 1 || $cur_number_tab['bet_status'] == 2){
|
||
$bet = Db::name($betTable)->where(array('table_id' => $tableInfo['id'], 'boot_id' => $boot['id'], 'number_tab_id' => $cur_number_tab['id'], 'user_id' => $val['id']))->find();
|
||
if($bet){
|
||
$userData['seat_num'] = $bet['seat_num'];
|
||
$userData['bet_amount'] = $bet['amount'];
|
||
$userData['banker_amount'] = (int)$bet['banker_amount'];
|
||
$userData['player_amount'] = (int)$bet['player_amount'];
|
||
$userData['tie_amount'] = (int)$bet['tie_amount'];
|
||
if($tableInfo['game_id'] == 1){
|
||
$userData['banker_pair_amount'] = (int)$bet['banker_pair_amount'];
|
||
$userData['player_pair_amount'] = (int)$bet['player_pair_amount'];
|
||
}
|
||
|
||
$tableData['bet_amount_msg']['banker_amount'] = (int)$tableData['bet_amount_msg']['banker_amount'] + (int)$bet['banker_amount'];
|
||
$tableData['bet_amount_msg']['player_amount'] = (int)$tableData['bet_amount_msg']['player_amount'] + $bet['player_amount'];
|
||
$tableData['bet_amount_msg']['tie_amount'] = (int)$tableData['bet_amount_msg']['tie_amount'] + (int)$bet['tie_amount'];
|
||
if($tableInfo['game_id'] == 1){
|
||
$tableData['bet_amount_msg']['banker_pair_amount'] = (int)$tableData['bet_amount_msg']['banker_pair_amount'] + (int)$bet['banker_pair_amount'];
|
||
$tableData['bet_amount_msg']['player_pair_amount'] = (int)$tableData['bet_amount_msg']['player_pair_amount'] + (int)$bet['player_pair_amount'];;
|
||
}
|
||
|
||
}
|
||
}
|
||
$tableData['bet_info'][] = $userData;
|
||
}
|
||
}else{
|
||
$tableData['boot_num'] = 1;
|
||
$tableData['boot_id'] = 0;
|
||
$tableData['number_tab_number'] = 1;
|
||
$tableData['number_tab_id'] = 0;
|
||
$tableData['bet_status'] = 0;
|
||
$tableData['bet_info'] = [];
|
||
$tableData['bet_amount_msg'] = [];
|
||
$tableData['card_info'] = [];
|
||
|
||
}
|
||
$data = encrypt_data($tableData);
|
||
return json(array('Success' => 1, 'Data' => $data));
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
|
||
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
} else {
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
}
|
||
|
||
|
||
|
||
//游戏记录
|
||
public function get_user_bets(){
|
||
header('Access-Control-Allow-Origin: *');
|
||
header("Access-Control-Allow-Headers: token, Origin, X-Requested-With, Content-Type, Accept, Authorization");
|
||
header('Access-Control-Allow-Methods: POST,GET,PUT,DELETE');
|
||
if(Request::instance()->isPost()){
|
||
$json_arr = decrypt_data(Request::instance()->post());
|
||
|
||
if($json_arr){
|
||
// 语言包
|
||
$langList = ['tw' => 'zh-tw.php','en' => 'en-us.php'];
|
||
$langType = empty($json_arr['language']) ? 'cn' : $json_arr['language'];
|
||
$langFile = empty($langList[$langType]) ? 'en-us.php' : $langList[$langType];
|
||
$langFile = ROOT_PATH.'thinkphp/lang/'.$langFile;
|
||
Lang::load($langFile);
|
||
$lang = Lang::get();
|
||
|
||
$user_id = intval($json_arr['user_id']);
|
||
$api_token = trim($json_arr['api_token']);
|
||
|
||
$game_id = empty($json_arr['game_id']) ? 0 : intval($json_arr['game_id']);
|
||
$table_id = empty($json_arr['table_id']) ? 0 : intval($json_arr['table_id']);
|
||
$username = empty($json_arr['username']) ? '' : trim($json_arr['username']);
|
||
$page = intval($json_arr['page']);
|
||
$user = Db::name('manager')->where(array('id' => $user_id))->find();
|
||
|
||
if($user && $user['api_token'] == $api_token && $page > 0){
|
||
|
||
$betWhere = array();
|
||
$betWhere['manager_id'] = $user_id;
|
||
if($game_id){
|
||
$betWhere['game_id'] = $game_id;
|
||
}
|
||
if($table_id){
|
||
$betWhere['table_id'] = $table_id;
|
||
}
|
||
if($username){
|
||
$betWhere['username'] = $username;
|
||
}
|
||
$betWhere['status'] = array('>',0);
|
||
$page_list = 15;
|
||
if($page > 1){
|
||
$limie_start = ($page - 1) * $page_list;
|
||
}else{
|
||
$limie_start = 0;
|
||
}
|
||
$bet = Db::name('bet')->where($betWhere)->whereIn('game_id',[1,2])->order('id desc')->limit($limie_start,$page_list)->select();
|
||
$bet_num = Db::name('bet')->where($betWhere)->whereIn('game_id',[1,2])->order('id desc')->count();
|
||
|
||
$page_num = ceil($bet_num/$page_list);
|
||
//组装注单信息
|
||
$newBet = array();
|
||
|
||
$user_bets = array();
|
||
foreach ($bet as $k => $v){
|
||
$data = array();
|
||
$v['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
|
||
$v['game_num'] = $v['game_id'].$v['boot_num'].$v['number'];
|
||
|
||
if($v['game_id'] == 1){
|
||
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
|
||
if($number_info['bet_status'] == 3){
|
||
if($number_info['result'] == 1){
|
||
$result = $lang['banker'];
|
||
}elseif($number_info['result'] == 2){
|
||
$result = $lang['player'];
|
||
}elseif($number_info['result'] == 3){
|
||
$result = $lang['tie'];
|
||
}else{
|
||
$result = '-';
|
||
}
|
||
if($number_info['pair'] == 1){
|
||
$pair = ','.$lang['banker_pair'];
|
||
}elseif($number_info['pair'] == 2){
|
||
$pair = ','.$lang['player_pair'];
|
||
}elseif($number_info['pair'] == 3){
|
||
$pair = ','.$lang['both_pair'];
|
||
}else{
|
||
$pair = '';
|
||
}
|
||
if($number_info['luck_six'] > 1){
|
||
$luck_six = ','.$lang['luck_6'];
|
||
}else{
|
||
$luck_six = '';
|
||
}
|
||
if($number_info['big_small'] == 1){
|
||
$big_small = ','.$lang['big'];
|
||
}elseif($number_info['big_small'] == 2){
|
||
$big_small = ','.$lang['small'];
|
||
}else{
|
||
$big_small = '';
|
||
}
|
||
$v['card_result'] = $result.$pair.$luck_six.$big_small;
|
||
}else{
|
||
$v['card_result'] = '-';
|
||
}
|
||
if($v['status'] == 2){
|
||
$v['card_result'] = $lang['void'];
|
||
}
|
||
$data['game_num'] = $v['game_num'];
|
||
$data['table_name'] = $v['table_name'].'('.$v['boot_num'].'/'.$v['number'].')';
|
||
$data['card_result'] = $v['card_result'];
|
||
$data['user_bet'] = '';
|
||
if($v['banker_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['banker'].'('.$v['banker_amount'].')';
|
||
}
|
||
if($v['player_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['player'].'('.$v['player_amount'].')';
|
||
}
|
||
if($v['tie_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['tie'].'('.$v['tie_amount'].')';
|
||
}
|
||
if($v['banker_pair_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['banker_pair'].'('.$v['banker_pair_amount'].')';
|
||
}
|
||
if($v['player_pair_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['player_pair'].'('.$v['player_pair_amount'].')';
|
||
}
|
||
if($v['luck_six_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['luck_6'].'('.$v['luck_six_amount'].')';
|
||
}
|
||
if($v['big_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['big'].'('.$v['big_amount'].')';
|
||
}
|
||
if($v['small_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['small'].'('.$v['small_amount'].')';
|
||
}
|
||
if($v['baccarat_type'] == 1){
|
||
$data['user_bet'] = $data['user_bet'].'('.$lang['free_commission'].')';
|
||
}else{
|
||
$data['user_bet'] = $data['user_bet'].'('.$lang['commission'].')';
|
||
}
|
||
|
||
$data['create_time'] = $v['create_time'];
|
||
$data['money_before_bet'] = $v['money_before_bet'];
|
||
$data['amount'] = $v['amount'];
|
||
$data['win_total'] = $v['win_total'];
|
||
$data['seat_num'] = $v['seat_num'];
|
||
$data['user_id'] = $v['user_id'];
|
||
$data['username'] = $v['username'];
|
||
$data['nickname'] = $v['nickname'];
|
||
$data['manager_id'] = $user['id'];
|
||
$data['manager_username'] = $user['username'];
|
||
$data['manager_nickname'] = $user['nickname'];
|
||
$newBet[] = $data;
|
||
}
|
||
if($v['game_id'] == 2){
|
||
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
|
||
if($number_info['bet_status'] == 3){
|
||
if($number_info['result'] == 1){
|
||
$result = $lang['dragon'];
|
||
}elseif($number_info['result'] == 2){
|
||
$result = $lang['tiger'];
|
||
}elseif($number_info['result'] == 3){
|
||
$result = $lang['tie'];
|
||
}else{
|
||
$result = '-';
|
||
}
|
||
$v['card_result'] = $result;
|
||
}else{
|
||
$v['card_result'] = '-';
|
||
}
|
||
if($v['status'] == 2){
|
||
$v['card_result'] = $lang['void'];
|
||
}
|
||
$data['game_num'] = $v['game_num'];
|
||
$data['table_name'] = $v['table_name'].'('.$v['boot_num'].'/'.$v['number'].')';
|
||
$data['card_result'] = $v['card_result'];
|
||
$data['user_bet'] = '';
|
||
if($v['banker_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['dragon'].'('.$v['banker_amount'].')';
|
||
}
|
||
if($v['player_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['tiger'].'('.$v['player_amount'].')';
|
||
}
|
||
if($v['tie_amount'] > 0){
|
||
$data['user_bet'] = $data['user_bet'].$lang['tie'].'('.$v['tie_amount'].')';
|
||
}
|
||
$data['create_time'] = $v['create_time'];
|
||
$data['money_before_bet'] = $v['money_before_bet'];
|
||
$data['amount'] = $v['amount'];
|
||
$data['win_total'] = $v['win_total'];
|
||
$data['seat_num'] = $v['seat_num'];
|
||
$data['user_id'] = $v['user_id'];
|
||
$data['username'] = $v['username'];
|
||
$data['nickname'] = $v['nickname'];
|
||
$data['manager_id'] = $user['id'];
|
||
$data['manager_username'] = $user['username'];
|
||
$data['manager_nickname'] = $user['nickname'];
|
||
$newBet[] = $data;
|
||
}
|
||
}
|
||
// 重新赋值
|
||
$user_bets['bet_info'] = $newBet;
|
||
$user_bets['bet_num'] = $bet_num;
|
||
$user_bets['page_num'] = $page_num;
|
||
$bet = encrypt_data($user_bets);
|
||
return json(array('Success' => 1, 'Data' => $bet));
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
|
||
}else{
|
||
return json(array('Success' => 0, 'Msg' => '获取信息失败'));
|
||
}
|
||
}
|
||
}
|
||
|
||
private function create_online_token($user){
|
||
return md5($user['encrypt'].$user['password']);
|
||
}
|
||
}
|