Pro/application/admin/controller/Betinfo.php
li 1ce6c3d780 feat: 牛牛新增四条(炸弹)赔率配置 price_bomb
- 后台管理: Player/Agent 控制器新增接收、验证、保存
- 后台页面: player/agent 添加/编辑/列表页新增赔率字段
- 代理端: 继承/展示 price_bomb
- 预测赔率: jk/Pcapi/onlinechip 新增 bomb_forecast
- Betinfo: 新增 result==12 赔率查询

数据库需执行:
ALTER TABLE cg_user ADD COLUMN price_bomb float(5,2) NOT NULL DEFAULT 4.85 COMMENT '四条赔率' AFTER price_5n;
2026-02-11 17:32:41 +08:00

554 lines
17 KiB
PHP

<?php
namespace app\admin\controller;
use \think\Controller;
use \think\Request;
use \think\Db;
use \think\Lang;
use \think\Session;
use \think\Log;
class Betinfo extends Controller{
// 下注细分 百家乐
public function betDetailBaccarat($flag,$v,$number_info,$user_info){
if($flag == 1){
$price = $user_info['price_banker'];
$betType = '庄';
$amountColumn = 'banker_amount';
}elseif($flag == 2){
$price = $user_info['price_player'];
$betType = '闲';
$amountColumn = 'player_amount';
}elseif($flag == 3){
$price = $user_info['price_tie_baccarat'];
$betType = '和';
$amountColumn = 'tie_amount';
} elseif($flag == 4){
$price = $user_info['price_pair'];
$betType = '庄对';
$amountColumn = 'banker_pair_amount';
} elseif($flag == 5){
$price = $user_info['price_pair'];
$betType = '闲对';
$amountColumn = 'player_pair_amount';
}else{
return $v;
}
// 下注细分重组
if($v[$amountColumn] > 0){
$v[$amountColumn] = intval($v[$amountColumn]);
$v['bet_type'] = $betType;
$v['bet_amount'] = $v[$amountColumn];
$v['bet_amount_all'] = $v[$amountColumn];
if($number_info['bet_status'] == 3){
if($flag >= 1 && $flag <= 3 && $v['result'] == $flag){
$v['win'] = round($v[$amountColumn] * $price,2);
}elseif($flag >= 4 && $flag <= 5 && $v['pair'] == $flag){
$v['win'] = round($v[$amountColumn] * $price,2);
}else{
$v['win'] = to_number(round($v[$amountColumn],2));
}
}else{
$v['win'] = 0;
}
return $v;
}
}
// 下注细分 龙虎
public function betDetailDt($flag,$v,$number_info,$user_info){
if($flag == 1){
$price = $user_info['price_banker'];
$betType = '庄';
$amountColumn = 'banker_amount';
}elseif($flag == 2){
$price = $user_info['price_player'];
$betType = '闲';
$amountColumn = 'player_amount';
}elseif($flag == 3){
$price = $user_info['price_tie_dt'];
$betType = '和';
$amountColumn = 'tie_amount';
}else{
return $v;
}
// 下注细分重组
if($v[$amountColumn] > 0){
$v[$amountColumn] = intval($v[$amountColumn]);
$v['bet_type'] = $betType;
$v['bet_amount'] = $v[$amountColumn];
$v['bet_amount_all'] = $v[$amountColumn];
if($number_info['bet_status'] == 3){
if($flag >= 1 && $flag <= 3 && $v['result'] == $flag){
$v['win'] = round($v[$amountColumn] * $price,2);
}else{
$v['win'] = to_number(round($v[$amountColumn],2));
}
}else{
$v['win'] = 0;
}
return $v;
}
}
// 牛牛翻倍赔率判断
public function getPrice($isWin,$num,$number_info,$user_info){
if($isWin == 1){
$winPoint = $number_info['result_player_'.$num];
}else{
$winPoint = $number_info['result_banker'];
}
if($winPoint >= 7 && $winPoint <= 9){
$price = $user_info['price_n7_n9'];
}elseif($winPoint == 10){
$price = $user_info['price_nn'];
}elseif($winPoint == 11){
$price = $user_info['price_5n'];
}elseif($winPoint == 12){
$price = $user_info['price_bomb'];
}else{
$price = 1;
}
return $price;
}
// 下注细分 牛牛
public function betDetailNn($flag,$v,$number_info,$user_info,$card_info){
if($flag == 1){
$result = '闲1';
$price = 1;
$betType = '闲1';
$amountColumn = 'amount_player_1';
$resultColumn = 'result_player_1';
$winColumn = 'win_player_1';
}elseif($flag == 2){
$result = '闲1';
$price = $this->getPrice($number_info['win_player_1'],1,$number_info,$user_info);
$betType = '闲1翻倍';
$amountColumn = 'amount_player_1_times';
$resultColumn = 'result_player_1';
$withholdColumn = 'withhold_player_1_times';
$winColumn = 'win_player_1';
}elseif($flag == 3){
$result = '闲1';
$price = 1;
$betType = '庄(闲1)';
$amountColumn = 'amount_player_1_banker';
$resultColumn = 'result_player_1';
$winColumn = 'win_player_1';
}elseif($flag == 4){
$result = '闲1';
$price = $this->getPrice($number_info['win_player_1'],1,$number_info,$user_info);
$betType = '庄(闲1)翻倍';
$amountColumn = 'amount_player_1_banker_times';
$resultColumn = 'result_player_1';
$withholdColumn = 'withhold_player_1_banker_times';
$winColumn = 'win_player_1';
}elseif($flag == 5){
$result = '闲2';
$price = 1;
$betType = '闲2';
$amountColumn = 'amount_player_2';
$resultColumn = 'result_player_2';
$winColumn = 'win_player_2';
}elseif($flag == 6){
$result = '闲2';
$price = $this->getPrice($number_info['win_player_2'],2,$number_info,$user_info);
$betType = '闲2翻倍';
$amountColumn = 'amount_player_2_times';
$resultColumn = 'result_player_2';
$withholdColumn = 'withhold_player_2_times';
$winColumn = 'win_player_2';
}elseif($flag == 7){
$result = '闲2';
$price = 1;
$betType = '庄(闲2)';
$amountColumn = 'amount_player_2_banker';
$resultColumn = 'result_player_2';
$winColumn = 'win_player_2';
}elseif($flag == 8){
$result = '闲2';
$price = $this->getPrice($number_info['win_player_2'],2,$number_info,$user_info);
$betType = '庄(闲2)翻倍';
$amountColumn = 'amount_player_2_banker_times';
$resultColumn = 'result_player_2';
$withholdColumn = 'withhold_player_2_banker_times';
$winColumn = 'win_player_2';
}elseif($flag == 9){
$result = '闲3';
$price = 1;
$betType = '闲3';
$amountColumn = 'amount_player_3';
$resultColumn = 'result_player_3';
$winColumn = 'win_player_3';
}elseif($flag == 10){
$result = '闲3';
$price = $this->getPrice($number_info['win_player_3'],3,$number_info,$user_info);
$betType = '闲3翻倍';
$amountColumn = 'amount_player_3_times';
$resultColumn = 'result_player_3';
$withholdColumn = 'withhold_player_3_times';
$winColumn = 'win_player_3';
}elseif($flag == 11){
$result = '闲3';
$price = 1;
$betType = '庄(闲3)';
$amountColumn = 'amount_player_3_banker';
$resultColumn = 'result_player_3';
$winColumn = 'win_player_3';
}elseif($flag == 12){
$result = '闲3';
$price = $this->getPrice($number_info['win_player_3'],3,$number_info,$user_info);
$betType = '庄(闲3)翻倍';
$amountColumn = 'amount_player_3_banker_times';
$resultColumn = 'result_player_3';
$withholdColumn = 'withhold_player_3_banker_times';
$winColumn = 'win_player_3';
}else{
return $v;
}
// 下注细分重组
if($v[$amountColumn] > 0){
$v[$amountColumn] = intval($v[$amountColumn]);
if($card_info && $card_info['status'] == 2){
$v['card_result'] = '';
$v['card_result'] .= '庄:'.interchange_nn($number_info['result_banker']).' '.$result.':'.interchange_nn($number_info[$resultColumn]).'&nbsp;&nbsp;';
if($number_info[$winColumn] == 1 ){
$v['card_result'] .= $result.'赢';
}else{
$v['card_result'] .= '庄赢';
}
}else{
$v['card_result'] = '';
}
$v['bet_type'] = $betType;
$v['bet_amount'] = $v[$amountColumn];
if($flag % 2 == 0){
$v['bet_amount_all'] = $v[$amountColumn] + intval($v[$withholdColumn]);
}else{
$v['bet_amount_all'] = $v[$amountColumn];
}
if($number_info['bet_status'] == 3){
if($number_info[$winColumn] == 1){
$v['win'] = round($v[$amountColumn] * $price * 0.95, 2);
}else{
$v['win'] = to_number(round($v[$amountColumn] * $price,2));
}
}else{
$v['win'] = 0;
}
return $v;
}
}
public function record(){
// 用于分页和搜索查询的数据
$get = Request::instance()->get();
$query = http_build_query($get);
$this->assign('get',$get);
$this->assign('query',$query);
// 获取验证信息
$token = Request::instance()->get('token');
if($token != 'SGv9OOO4um53o9ZTW90AK0lk3rGaEq8FyANMiqlLSZymnOCfI76yHRGeJibvHwmgwieegkggyvh1Vs1jpQg9dAVsE7bipEiJ0By'){
echo '非法操作';
die;
}
$user_id = Request::instance()->get('user_id');
if($user_id <= 0) {
echo '用户ID错误';
die;
}
$user_info = Db::name('user')->where('id',$user_id)->find();
if(!$user_info){
echo '用户不存在';
die;
}
// 接收参数
$game_id = Request::instance()->get('game_id');
$startDate = Request::instance()->get('startDate');
$endDate = Request::instance()->get('endDate');
// 查询日期处理
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'),time());
$get['startDate'] = date('Y-m-d',time());
$this->assign('get',$get);
}
if($endDate){
$endTime = strtotime($endDate) + 24*60*60 - 1;
}else{
$endTime = time();
$get['endDate'] = date('Y-m-d',time());
$this->assign('get',$get);
}
// 查询数据条件
$betWhere = array();
$betWhere['create_time'] = array('between',[$startTime,$endTime]);
$betWhere['user_id'] = $user_info['id'];
if($game_id == 1 || $game_id == 2 || $game_id == 4){
$betWhere['game_id'] = $game_id;
}else{
$betWhere['game_id'] = 1;
$game_id = 1;
$get['game_id'] = 1;
$this->assign('get',$get);
}
// 查询注单信息
if($game_id == 1){
$bet = Db::name('bet')->where($betWhere)->order('id desc')->select();
$betAmount = Db::name('bet')->where($betWhere)->sum('amount');
$allAmount = Db::name('bet')->where($betWhere)->sum('amount');
$allWinTotal = Db::name('bet')->where($betWhere)->sum('win_total');
}elseif($game_id == 2){
$bet = Db::name('bet_dt')->where($betWhere)->order('id desc')->select();
$betAmount = Db::name('bet_dt')->where($betWhere)->sum('amount');
$allAmount = Db::name('bet_dt')->where($betWhere)->sum('amount');
$allWinTotal = Db::name('bet_dt')->where($betWhere)->sum('win_total');
}elseif($game_id == 4){
$bet = Db::name('bet_nn')->where($betWhere)->order('id desc')->select();
// 下注金额
$betAmount = Db::name('bet_nn')->where($betWhere)->sum('amount');
// 扣除的金额( 包含预扣 )
$allAmount = Db::name('bet_nn')->where($betWhere)->sum('amount');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_1_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_1_banker_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_2_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_2_banker_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_3_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_3_banker_times');
// 总赢
$allWinTotal = Db::name('bet_nn')->where($betWhere)->sum('win_total');
}else{
echo '游戏类型错误!';die;
}
// 组装注单信息
$newBet = array();
foreach($bet AS $k => $v){
$v['create_time'] = date('Y-m-d',$v['create_time']);
$v['game_nume'] = $v['game_id'].'-'.$v['boot_num'].'-'.$v['number'];
if($game_id == 1){
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
if($number_info['bet_status'] == 3){
if($v['result'] == 1){
$result = '庄赢';
}elseif($v['result'] == 2){
$result = '闲赢';
}elseif($v['result'] == 3){
$result = '和';
}else{
$result = '-';
}
if($v['pair'] == 1){
$pair = ',庄对';
}elseif($v['pair'] == 2){
$pair = ',闲对';
}elseif($v['pair'] == 3){
$pair = ',庄闲对';
}else{
$pair = '';
}
$v['card_result'] = $result.$pair;
}else{
$v['card_result'] = '-';
}
// 下注金额细分
for($i=1; $i<=5; $i++){
$result = $this->betDetailBaccarat($i,$v,$number_info,$user_info);
if($result){
$newBet[] = $result;
}
}
}elseif($game_id == 2){
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
if($number_info['bet_status'] == 3){
if($v['result'] == 1){
$result = '龙赢';
}elseif($v['result'] == 2){
$result = '虎赢';
}elseif($v['result'] == 3){
$result = '和';
}
$v['card_result'] = $result;
}else{
$v['card_result'] = '';
}
// 下注金额细分
for($i=1; $i<=3; $i++){
$result = $this->betDetailDt($i,$v,$number_info,$user_info);
if($result){
$newBet[] = $result;
}
}
}elseif($game_id == 4){
$card_info = Db::name('card_nn')->where('number_tab_id',$v['number_tab_id'])->find();
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
// 下注金额细分
for($i=1; $i<=12; $i++){
$result = $this->betDetailNn($i,$v,$number_info,$user_info,$card_info);
if($result){
$newBet[] = $result;
}
}
}
}
// 重新赋值
$bet = $newBet;
// 渲染参数和模板
$this->assign('bet',$bet);
$this->assign('betAmount',$betAmount);
$this->assign('allAmount',$allAmount);
$this->assign('allWinTotal',$allWinTotal);
$this->assign('user_info',$user_info);
return $this->fetch();
}
// 下注记录(ajax刷新)
public function recordAjax(){
// 登录信息
$user_id = Request::instance()->post('user_id');
$user_info = Db::name('user')->where('id',$user_id)->find();
// 接收参数
$game_id = Request::instance()->post('game_id');
$startDate = Request::instance()->post('startDate');
$endDate = Request::instance()->post('endDate');
// 查询日期处理
if($startDate){
$startTime = strtotime($startDate);
}else{
$startTime = strtotime(date('Y-m-d'),time());
}
if($endDate){
$endTime = strtotime($endDate) + 24*60*60 - 1;
}else{
$endTime = time();
}
// 查询数据条件
$betWhere = array();
$betWhere['create_time'] = array('between',[$startTime,$endTime]);
$betWhere['user_id'] = $user_info['id'];
if($game_id == 1 || $game_id == 2 || $game_id == 4){
$betWhere['game_id'] = $game_id;
}else{
$betWhere['game_id'] = 1;
$game_id = 1;
$get['game_id'] = 1;
$this->assign('get',$get);
}
// 查询注单信息
if($game_id == 1){
$bet = Db::name('bet')->where($betWhere)->order('id desc')->select();
$betAmount = Db::name('bet')->where($betWhere)->sum('amount');
$allAmount = Db::name('bet')->where($betWhere)->sum('amount');
$allWinTotal = Db::name('bet')->where($betWhere)->sum('win_total');
}elseif($game_id == 2){
$bet = Db::name('bet_dt')->where($betWhere)->order('id desc')->select();
$betAmount = Db::name('bet_dt')->where($betWhere)->sum('amount');
$allAmount = Db::name('bet_dt')->where($betWhere)->sum('amount');
$allWinTotal = Db::name('bet_dt')->where($betWhere)->sum('win_total');
}elseif($game_id == 4){
$bet = Db::name('bet_nn')->where($betWhere)->order('id desc')->select();
// 下注金额
$betAmount = Db::name('bet_nn')->where($betWhere)->sum('amount');
// 扣除的金额( 包含预扣 )
$allAmount = Db::name('bet_nn')->where($betWhere)->sum('amount');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_1_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_1_banker_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_2_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_2_banker_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_3_times');
$allAmount += Db::name('bet_nn')->where($betWhere)->sum('withhold_player_3_banker_times');
// 总赢
$allWinTotal = Db::name('bet_nn')->where($betWhere)->sum('win_total');
}else{
echo '游戏类型错误!';die;
}
// 组装注单信息
$newBet = array();
foreach($bet AS $k => $v){
$v['create_time'] = date('Y-m-d',$v['create_time']);
$v['game_nume'] = $v['game_id'].'-'.$v['boot_num'].'-'.$v['number'];
if($game_id == 1){
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
if($number_info['bet_status'] == 3){
if($v['result'] == 1){
$result = '庄赢';
}elseif($v['result'] == 2){
$result = '闲赢';
}elseif($v['result'] == 3){
$result = '和';
}else{
$result = '-';
}
if($v['pair'] == 1){
$pair = ',庄对';
}elseif($v['pair'] == 2){
$pair = ',闲对';
}elseif($v['pair'] == 3){
$pair = ',庄闲对';
}else{
$pair = '';
}
$v['card_result'] = $result.$pair;
}else{
$v['card_result'] = '-';
}
// 下注金额细分
for($i=1; $i<=5; $i++){
$result = $this->betDetailBaccarat($i,$v,$number_info,$user_info);
if($result){
$newBet[] = $result;
}
}
}elseif($game_id == 2){
$number_info = Db::name('number_tab')->where('id',$v['number_tab_id'])->find();
if($number_info['bet_status'] == 3){
if($v['result'] == 1){
$result = '龙赢';
}elseif($v['result'] == 2){
$result = '虎赢';
}elseif($v['result'] == 3){
$result = '和';
}
$v['card_result'] = $result;
}else{
$v['card_result'] = '';
}
// 下注金额细分
for($i=1; $i<=3; $i++){
$result = $this->betDetailDt($i,$v,$number_info,$user_info);
if($result){
$newBet[] = $result;
}
}
}elseif($game_id == 4){
$card_info = Db::name('card_nn')->where('number_tab_id',$v['number_tab_id'])->find();
$number_info = Db::name('number_tab_nn')->where('id',$v['number_tab_id'])->find();
// 下注金额细分
for($i=1; $i<=12; $i++){
$result = $this->betDetailNn($i,$v,$number_info,$user_info,$card_info);
if($result){
$newBet[] = $result;
}
}
}
}
// 重新赋值
$bet = $newBet;
// 返回数据
return ['code'=>1,'bet'=>$bet,'betAmount'=>$betAmount,'allAmount'=>$allAmount,'allWinTotal'=>$allWinTotal];
}
}