فهرست منبع

滚球投注审核不通过的资金处理

彭俊 6 سال پیش
والد
کامیت
ff4effabf9
2فایلهای تغییر یافته به همراه108 افزوده شده و 3 حذف شده
  1. 11 1
      app/Http/Model/StZqResult.php
  2. 97 2
      app/Models/SportsNoteList.php

+ 11 - 1
app/Http/Model/StZqResult.php

@@ -3,6 +3,7 @@ namespace App\Http\Model;
 
 use Illuminate\Database\Eloquent\Model;
 use App\Http\Response\Response;
+use Fideloper\Proxy\TrustedProxyServiceProvider;
 use Illuminate\Support\Facades\DB;
 
 
@@ -513,6 +514,11 @@ class StZqResult extends Model
      * 更新赛事 危险球 数据
      */
     public static function set_result_warn($match_id = 0,$warn_data=[]){
+        //获取当前赛事已有危险球数据 json
+        $warn_json = self::where(['match_id' => $match_id])->SELECT('warn_more')->first()->warn_more;
+        //转数组
+        $warn_arr = json_decode($warn_json,true);
+
         if($match_id > 0 and !empty($warn_data)){
             $data = [];
             foreach($warn_data as $k=>$v){
@@ -521,9 +527,13 @@ class StZqResult extends Model
                 $data[$k]['timep'] = 90;
 
             }
+            //合并危险球数据
+            $warn_data_new = array_merge($warn_arr,$data);
 
-            $warn_data = json_encode($data);
+            //转json
+            $warn_data = json_encode($warn_data_new);
 
+            //更新
             $ret = self::where(['match_id' => $match_id])
                     ->update(['warn_more'=>$warn_data,'update_time'=>date('Y-m-d H:i:s')]);
         }

+ 97 - 2
app/Models/SportsNoteList.php

@@ -892,6 +892,7 @@ class SportsNoteList extends BaseModel
             //反水
             $water_return_money = \App\Models\Money_details::wherein('trade_id',$order_ids)->where('trade_type', '7')->get();
             for($i=0;$i<count($orders);$i++){
+                //用户余额 默认
                 $available_cash = '';
                 for($a=0;$a<count($account_money);$a++){
                     if($orders[$i]['account_identity'] == $account_money[$a]['account_identity']){
@@ -906,6 +907,7 @@ class SportsNoteList extends BaseModel
                         $water_return = 0;
                     }
                 }
+
                 $new_available_cash = $available_cash + $orders[$i]->money - $orders[$i]->gain_money - $water_return;
 
                 $models = new \App\Models\Money_details();
@@ -994,7 +996,7 @@ class SportsNoteList extends BaseModel
 
                 if(!empty($order_ids_n)){
                     //在审核时间内订单 审核不通过
-                    self::HandleMoney($account_identitys,$order_ids_n,$order_data_n);
+                    self::HandleMoney_v2($account_identitys,$order_ids_n,$order_data_n);
                 }
                 if(!empty($order_ids_y)){
                     //在审核时间外订单 审核通过
@@ -1011,8 +1013,10 @@ class SportsNoteList extends BaseModel
 
     /**
      * 滚球自动审核 账户资金处理
+     * v1 
+     * 当用户下同时只有一个订单退款时 可用
+     * 
      */
-
      public static function HandleMoney($account_identitys=[],$order_ids=[],$orders=[]){
          //用戶账户金额
         $account_money = \App\Models\Account_detailed::whereIn('account_identity',$account_identitys)->SELECT('account_identity','available_cash')->get()->toArray();
@@ -1071,5 +1075,96 @@ class SportsNoteList extends BaseModel
         
     }
 
+    /**
+     * 滚球自动审核 账户资金处理
+     * v2 
+     * 处理一个用户下 多个注单退款时的 余额计算
+     */
+    public static function HandleMoney_v2($account_identitys=[],$order_ids=[],$orders=[]){
+       
+        //获取  用户 初始余额
+        $account_money = \App\Models\Account_detailed::whereIn('account_identity',$account_identitys)->SELECT('account_identity','available_cash')->get()->toArray();
+        //获取 指定注单 反水金额
+        $water_return_money = \App\Models\Money_details::whereIn('trade_id',$order_ids)->where('trade_type', '7')->SELECT('trade_id','money')->get()->toArray();
+
+        if(!empty($account_money) and !empty($orders) and !empty($water_return_money)){
+            //拼接每个注单 反水
+            foreach($orders as $k=>$v){
+                $v['fanshui'] = self::getFanshui($v['order_id'],$water_return_money);
+                $orders[$k] = $v;
+
+            }
+
+            foreach($account_money as $k=>$v){
+                //默认 余额 0
+                $account_identity = 0;
+                foreach($orders as $kk=>$vv){
+                    //计算当前余额
+                    if($v['account_identity'] == $vv['account_identity']){
+                        //第一个注单 获取用户初始余额
+                        if($account_identity == 0){
+                            //当前注单余额
+                            $vv['available_cash'] = $v['available_cash'];
+                            //当前注单退款后的余额
+                            $account_identity = $v['available_cash']+$vv['money']-$vv['fanshui'];
+                        }else{//其他 获取 上个注单处理后的余额
+                            $vv['available_cash'] = $account_identity;
+                            $account_identity = $account_identity+$vv['money']-$vv['fanshui'];
+                        }
+                        $orders[$kk] = $vv;
+                    }
+                }
+            }
+
+            foreach($orders as $k=>$v){
+                 //需退回金额 = 投注金额-反水金额
+                $money = abs($v['money'] - $v['fanshui']);
+                 //用户剩余金额
+                $new_available_cash = $v['available_cash'] + $money;
+                $models = new \App\Models\Money_details();
+                $models->info_identity = UUID();
+                $models->trade_id = $v['order_id'];
+                $models->account_name = $v['account_name'];
+                $models->account_identity = $v['account_identity'];
+                $models->money = $money;
+                $models->money_time = date("Y-m-d H:i:s", time());
+                $models->money_type = '1';
+                
+                $models->money_cash = $new_available_cash;
+                $models->trade_type = '25';
+                $models->trade_desc = '滚球投注自动审核(危险球)不通过,退回投注资金:¥'.$money.';订单号:'.$v['order_id'].'';
+                $models->status = '1';
+               
+                //更新订单数据
+                $ret_order = self::where('id', $v['id'])->update(['roll_ratify' => '-1','status' => '2','use_mark'=>'滚球投注自动审核(危险球)不通过']);
+                if($ret_order < 1)  throw new \Exception( Response::generate('',Response::UP_ORDER_ERR));
+
+                //更新用户数据
+                $ret_user = \App\Models\Account_detailed::where('account_identity', $v['account_identity'])->update(['available_cash' => $new_available_cash, 'cash' => $new_available_cash]);
+                if($ret_user < 1)  throw new \Exception( Response::generate('',Response::UP_USER_ERR));
+
+                //更新用户资金数据
+                if(!$models->save()) throw new \Exception( Response::generate('',Response::UP_MONEY_ERR));
+
+            }
+        }
+   }
+
+   /**
+    * 获取注单 反水金额
+    * $order_id 订单id str
+    * $fanshuiData 反水数据 arr
+    */
+    public static function getFanshui($order_id='',$fanshuiData=[]){
+        foreach($fanshuiData as $k=>$v){
+            if($v['trade_id'] == $order_id){
+                $fanshui = $v['money'];
+            }
+        }
+
+        return $fanshui;
+
+    }
+
 
 }