| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- namespace App\Api\Controller;
- use Biz\Money\Moneycopy;
- use Biz\Money\Money;
- use Biz\Account\AccountManager;
- /*
- * Class Register
- * @package App\Api\Controller
- * User: junghwi
- * Date: 2019/3/21
- */
- class Betorder extends BaseController{
- private $order_money = 0; //订单总金额
- private $bet_money = 0; //单个球类投注总金额
- public function init() {
- $this->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;
- }
- }
|