| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- <?php
- namespace App\Api\Controller;
- use BaseController\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; //单个球类投注总金额
- 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_order(){
- $pwd = $_POST['pwd'];
- $data = [
- ['game_code'=>'zq','match_id'=>1,'lg_id'=>1,'odds_id'=>'1','bet_amount'=>100,'bet_odds'=>1],
- ['game_code'=>'zq','match_id'=>1,'lg_id'=>1,'odds_id'=>'1','bet_amount'=>100,'bet_odds'=>1]
- ];
- $userInfo = $this->getAgent();//用户信息
- $bet_amount = 0; //总金额
- foreach($data as $k => $v){
- $this->verify_gameType($v['game_code']);
- $this->verify_match($v['game_code'],$v['match_id']);
- $this->verify_league($v['game_code'],$v['lg_id']);
- $this->erify_odds($data['game_code'],$v['odds_id']);
- if(empty($v['bet_amount'])){
- Render('', '1002',lang('BetOrder','Api')->get('error-1002'));
- }
- if(empty($v['bet_odds'])){
- Render('', '1003',lang('BetOrder','Api')->get('error-1003'));
- }
- $data[$k]['win_amount'] = $v['bet_amount'] * $v['bet_odds'] - $v['bet_amount'];
- $data[$k]['account_id'] = $userInfo['account_id'];
- $data[$k]['status'] = 1;
- $data[$k]['order_number'] = OrderID();
- $data[$k]['ctime']= $this->time;
- $data[$k]['utime']= $this->time;
- $bet_amount += $v['bet_amount'];
- }
- //获取用户金额信息
- $getAccount = $this->MC->getAccount('4ea268f8-fb0f-2b97-dcd8-b7ae68a5c82c');
- if(!$this->MC->verifyMoney($bet_amount,$getAccount['cash'])){
- Render('', '1005',lang('BetOrder','Api')->get('error-1005'));
- }
- //交易密码验证
- if(!$this->MC->verifyPayPwd($userInfo['account_identity'],$pwd)){
- Render('', '1004',lang('BetOrder','Sports')->get('error-1004'));
- }
- try {
- _beginTransaction();//开启事务
- $extra=[];//扣款信息记录
- foreach($data as $k => $v){
- $insert = lm('st_bet_order','Sports')->insert($v);
- if(!$insert){
- Render('','-1005',lang('BetOrder','Api')->get('error-1005'));
- }
- $extra['order_number'] = $v['order_number'];
- $extra['money_type'] = 2;
- $extra['money_time'] = $v['ctime'];
- $extra['trade_type'] = 1;
- $extra['trade_desc'] = $this->MC->getDesc($userInfo['account_id'],$v['bet_amount'],$v['order_number'],1);//描述
- $extra['reason'] = "";//理由
- $updateMoney = $this->MC->updateMoney($userInfo['account_id'],$v['bet_amount'],1,$extra);
- if($updateMoney!=1){
- Render('', $updateMoney,lang('BetOrder','Api')->get($updateMoney));
- }
- }
- _commit();//提交
- Render('', '1',lang('BetOrder','Api')->get('success'));
- } catch (Exception $e) {
- _rollBack();//回滚
- print $e->getMessage();
- }
- }
- /*
- * 投注接口
- */
- public function bet_order(){
- $data = [
- ['game_code'=>'zq','match_id'=>1,'lg_id'=>1,'odds_id'=>'1','record_id'=> 2,'bet_amount'=>100,'bet_odds'=>1,'odds_only'=>'e5a38602e4ba44848ab303f82bd224511555376747.3722475'],
- ['game_code'=>'lq','match_id'=>1,'lg_id'=>1,'odds_id'=>'1','record_id'=> 2,'bet_amount'=>100,'bet_odds'=>1,'odds_only'=>'e5a38602e4ba44848ab303f82bd224511555376747.3722475'],
- ['game_code'=>'lq','match_id'=>1,'lg_id'=>1,'odds_id'=>'1','record_id'=> 2,'bet_amount'=>100,'bet_odds'=>1,'odds_only'=>'e5a38602e4ba44848ab303f82bd224511555376747.3722475']
- ];
- if(empty($data)){
- Render('', '51029',lang('Errors','Api')->get('error-51029'));
- }
- $userInfo =[
- "id" => 93985,
- "identity"=>"76b04b38-e31b-691b-1eaf-19e8ed1f790a",
- "account"=> "181817994081",
- "status"=> 1,
- "fanshui"=> 1,
- "remark"=> "",
- "user_type"=> 1,
- "account_identity"=> "edfe719d-914b-49b1-3f73-46cae73738c2",
- "register_time"=> "2019-04-09 18:16:06",
- "register_ip"=>"127.0.0.1",
- "last_time"=> "2019-04-12 10:58:12.242624",
- "last_ip"=> "127.0.0.1",
- "grade"=> 0,
- "email"=> "",
- "phone"=>"18181799409",
- "invitation"=>"",
- "available_cash"=> "1000.00",
- "cash"=>"1000.00",
- "frozen_cash"=>"0.00",
- "open_invitation"=>"93985",
- "spread"=>"0",
- "placing"=>"0",
- "token"=>"lADqQI15550666925cb06f44ad5b6",
- "statuss"=>"1",
- "ranking"=>null,
- "card"=>"5",
- "name"=>"junghwi1",
- "show"=> "0",
- "img_url"=> null,
- "qq"=>"",
- "register_url"=> "www.weba.com",
- "last_url"=> "www.weba.com",
- "group_code"=> "0,1,",
- "group_name"=> "|普通会员|",
- "parent_id"=> null,
- "parent_path"=> null,
- "level"=> 2,
- "finance_cash"=> null,
- "img_id"=> null,
- "wechat"=> "",
- "og_type"=> 1,
- "now_game"=> null,
- "ip"=>"127.0.0.1",
- ];//$this->getAgent();//用户信息
- //验证与判断投注了几种
- foreach($data as $k => $v){
- $num = $k + 1;
- // $this->verify_gameType($v['game_code'],$num);
- // $this->verify_match($v['game_code'],$v['match_id'],$num);
- // $this->verify_league($v['game_code'],$v['lg_id'],$num);
- // $this->verify_odds($data['game_code'],$v['odds_id'],$v['record_id'],$num);
- if(empty($v['bet_amount'])){
- $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5105');
- Render([], '5105',$msg);
- }
- if(empty($v['bet_odds'])){
- $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5106');
- Render([], '5106',$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]);
- }
- }
- //获取用户金额信息
- // $getAccount = $this->M->getAccount($userInfo['account_identity']);
- // if(!$this->M->verifyMoney($this->order_money,$getAccount['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'];
- }
- $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'],$v['bet_amount'],$v['order_id'],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] $lg_id 联赛ID
- * @param [type] $num 循环键值
- */
- public function verify_league($game_code,$lg_id,$num = 0){
- if(empty($lg_id)){
- $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5104');
- Render([], '5104',$msg);
- }
- //根据球类代码 获取相关model
- $models = getModels($game_code);
- $model_league = $models['model_match'];
- $info = lm($model_league,'Sports')->where('id',$lg_id)->first();
- if(empty($info)){
- $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5104');
- Render([], '5104',$msg);
- }
- return $info;
- }
- /**
- * 验证赛事是否存在
- * @param [type] $game_code 球类代码
- * @param [type] $match_id 赛事ID
- * @param [type] $num 循环键值
- */
- public function verify_match($game_code,$match_id,$num = 0){
- if(empty($match_id)){
- $msg = '第'.$num.'条'.lang('Errors','Api')->get('error-5103');
- Render([], '5103',$msg);
- }
- //根据球类代码 获取相关model
- $models = getModels($game_code);
- $model_match = $models['model_match'];
- $info = lm($model_match,'Sports')->where('match_id',$match_id)->first();
- if(empty($info)){
- $msg = '第'.$num.'条数据'.lang('Errors','Api')->get('error-5103');
- Render([], '5103',$msg );
- }
- return $info;
- }
- /**
- * 验证球类是否存在
- * @param [type] $game_code 球类代码
- * @param [type] $num 第几条
- */
- public function verify_gameType($game_code,$num = 0){
- 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 赔率ID
- */
- public function verify_odds($game_code,$odds_id,$odds_only){
- if(empty($odds_id)||$odds_only){
- Render([], '7029', lang('Errors','Api')->get('error-7029'));
- }
- //根据球类代码 获取相关model
- $models = getModels($game_code);
- $model_odds = $models['model_odds'];
- $info = lm($model_odds,'Sports')->where(['id',$odds_id,'odds_id'])->first();
- if(empty($info)){
- Render([], '7029', lang('Errors','Api')->get('error-7029'));
- }
- return $info;
- }
- }
|