Pro/application/onlinechip/controller/Managerapi.php
2026-02-25 01:50:31 +08:00

911 lines
52 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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']);
}
}