time = date('Y-m-d H:i:s',time()); $this->MC = new Moneycopy(); $this->M = new Money(); $this->accountManager = new AccountManager(); } public function Bet(){ $userInfo = $this->getAgent();//获取用户信息 $data = $_REQUEST['data']; // SELECT * FROM st_zq_odds WHERE "id" = 656437; // $data = [[ //"bet_amount" => "100", //"condition" => "+0/0.5", //"game_code" => "zq", //"match_id" => "3132384", //"odds" => "0.31", //"odds_code" => "concede_size", //"odds_id" => 656437, //"odds_only"=> "1dee7e98db303852227cf1e0d8085dfb1555617310.3833947"]]; if(empty($data)){ Render('', '51029',lang('Errors','Api')->get('error-51029')); } //验证与判断投注了几种 foreach($data as $k => $v){ $num = $k + 1; $this->verify_gameType($v['game_code'],$num); $this->verify_match($v['game_code'],$v['odds_id'],$num); // $this->verify_odds($v['game_code'],$v['odds_id'],$v['odds_only'],$v['odds'],$v['condition'],$num); if(empty($v['bet_amount'])){ $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5105'); Render([], '5105',$msg); } //所需付款总金额计算 $this->order_money += $v['bet_amount']; //根据类型分组 if(!isset($data[$v['game_code']])){ $data[$v['game_code']][] = $v; unset($data[$k]); }else{ $data[$v['game_code']][] = $v; unset($data[$k]); } } //获取用户金额信息 if(!$this->M->verifyMoney($this->order_money,$userInfo['cash'])){ Render('', '4204',lang('Errors','Api')->get('error-4204')); } //执行数据插入 try { _beginTransaction();//开启事务 foreach($data as $k => $v){ //统计该球类投注总额 foreach($v as $kk => $vv){ $this->bet_money += $vv['bet_amount']; } $OrderID = OrderID(); $order =[ 'info_identity' => UUID(), 'account_name' => $userInfo['account'], 'account_identity' => $userInfo['account_identity'], 'order_id' => $OrderID, 'game_name' => $k, 'game_no' => "", 'money' => $this->bet_money, //投注金额 'codes' => json_encode($v,true), //投注信息json 'money_time' => $this->time, ]; $insert = lm('MoneyBuy','Api')->insert($order); if(!$insert){ Render('','-1005',lang('errors','Api')->get('error-3205')); } $insertMoney = $this->M->insertMoney($userInfo['account_identity'],$this->bet_money,$OrderID,1,"",$userInfo); if($insertMoney!=1){ Render('', $insertMoney,lang('Errors','Api')->get('error'.$insertMoney)); } $this->bet_money = 0; } _commit();//提交 Render('', '1',lang('Errors','Api')->get('error-1')); } catch (Exception $e) { _rollBack();//回滚 print $e->getMessage(); } } /** * token获取用户详情 */ public function getAgent() { $checkToken = $this->accountManager->checkEffectiveTime(); if ($checkToken['status'] != 1) { Render($checkToken['data'], $checkToken['status'], lang('commons')->get('user does login')); }; $result = $this->accountManager->refreshToken(); return $result['data']; } /** * 赛事是否存在或结束 * @param [type] $game_code 球类代码 * @param [type] $odds_id 赔率ID * @param [type] $num 循环键值 */ public function verify_match($game_code,$odds_id,$num){ if(empty($odds_id)){ $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5107'); Render([], '5107',$msg); } //根据球类代码 获取相关model $models = getModels($game_code); $model_odds = $models['model_odds']; $model_match = $models['model_match']; $info = lm($model_match,'Sports') ->join($model_odds,$model_odds.'.match_id',$model_match.'.match_id') ->select($model_match.'.status') ->where($model_odds.'.id',$odds_id) ->first(); if(!$info){ $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5103'); Render([], '5103',$msg); } $info->toarray(); if($info['status'] == 2){ $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5108'); Render([], '5108',$msg); } return $info; } /** * 验证球类是否存在 * @param [type] $game_code 球类代码 * @param [type] $num 第几条 */ public function verify_gameType($game_code,$num){ if(empty($game_code)){ $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-5102'); Render([], '5102', $msg); } $info = lm('GameType','Sports')->where('game_code',$game_code)->first(); if(empty($info)){ $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-5102'); Render([], '5102', $msg); } return $info; } /** * 验证赔率是否存在 * @param [type] $game_code 球类代码 * @param [type] $odds_id 赔率IDkk */ public function verify_odds($game_code,$odds_id,$odds_only,$odds,$condition,$num){ if(empty($odds_id)||empty($odds_only)||empty($condition)||empty($odds)){ $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-7029'); Render([], '7029', $msg); } //根据球类代码 获取相关model $models = getModels($game_code); $model_odds = $models['model_odds']; $model_odds_record = $models['model_odds_record']; $info = lm($model_odds,'Sports') ->leftjoin($model_odds_record,$model_odds_record.'.odds_only',$model_odds.'.odds_only') ->select($model_odds_record.'.odds',$model_odds_record.'.condition') ->where($model_odds.'.odds_only',$odds_only) ->first(); if(!$info){ $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-7029'); Render([], '70291', $msg); } $info->toarray(); if($odds != $info['odds']){ $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-7029'); Render([], '70292', $msg); } if($condition = $info['condition']){ $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-7029'); Render([], '70293', $msg); } return $info; } }