vali před 6 roky
rodič
revize
9a4f227246
1 změnil soubory, kde provedl 166 přidání a 7 odebrání
  1. 166 7
      app/Logic/DataLogic.php

+ 166 - 7
app/Logic/DataLogic.php

@@ -890,10 +890,10 @@ class DataLogic
                 ->get()->toArray();
             if (empty($local_match)) throw new \Exception(Response::generate('', Response::MATCHID_NULL));
             //更新状态字段
-            if($game_code == 'zq'){
+            if ($game_code == 'zq') {
                 foreach ($local_match as $k => $v) {
-                    foreach($data['data'] as $kk =>$vv){
-                        if($v['others_match_id'] == $vv['match_id']){
+                    foreach ($data['data'] as $kk => $vv) {
+                        if ($v['others_match_id'] == $vv['match_id']) {
                             $set_status = [
                                 'status' => $vv['status'],
                                 'is_rollball' => $vv['is_rollball'],
@@ -909,10 +909,10 @@ class DataLogic
                         }
                     }
                 }
-            }else{
+            } else {
                 foreach ($local_match as $k => $v) {
-                    foreach($data['data'] as $kk =>$vv){
-                        if($v['others_match_id'] == $vv['match_id']){
+                    foreach ($data['data'] as $kk => $vv) {
+                        if ($v['others_match_id'] == $vv['match_id']) {
                             $set_status = [
                                 'status' => $vv['status'],
                                 'is_rollball' => $vv['is_rollball'],
@@ -946,7 +946,7 @@ class DataLogic
     *写 冠军联赛 赔率 数据
     *每个请求 包含 N个联赛 下 N条赔率
     */
-    public function setOddsCH($data)
+    public function setOddsCH_v1($data)
     {
 
         try {
@@ -1090,6 +1090,165 @@ class DataLogic
         }
     }
 
+    /*
+   *写 冠军联赛 赔率 数据
+   *每个请求 包含 1个联赛 下 N条赔率
+   *追加赔率过滤
+   */
+    public function setOddsCH($data)
+    {
+        try {
+            //开启事务
+            DB::beginTransaction();
+            $obt = $data['data'];
+
+            //请求 数据 为空
+            if (empty($obt)) throw new \Exception(Response::generate('请求数据为空,', Response::ABNORMAL));
+            $getData = $this->getAddData($obt);
+            //不是 冠军 赔率 数据
+            if ($getData['title'] != 'odds_ch') throw new \Exception(Response::generate('不是冠军赔率数据,', Response::ABNORMAL));
+
+            /*
+            //写请求数据 日志记录
+            if($this->isRecord){
+                $setSportsRecord = St_set_sports_recordModel::setSportsRecord($getData['title'],$obt,$getData);
+                if($setSportsRecord < 1) throw new \Exception(Response::generate('',Response::SPORTS_RECORD_ERR));
+            }
+            */
+
+            //获取球类代码
+            $game_code = $getData['game_code'];
+            //获取数据源
+            $source = $getData['source'];
+            //获取球类名称
+            $gameName = gameModel::getGameName($game_code);
+            //获取数据源联赛ID
+            $s_lg_id = $getData['lg_id'];
+            //获取源数据联赛UUID
+            $uuid = $getData['uuid'];
+            //获取 model
+            $models = commonFunction::getModels($game_code, 1);
+
+            //获取 赔率数据
+            $oddsData = $getData['data'];
+
+            //验证本次请求所属联赛/赛事是否存在 返回本地联赛/赛事ID
+            $lg_id = $this->leagueVerify($models, $uuid, $source, $gameName);
+
+            //===追加处理赔率过滤===
+            //获取当前联赛 在本地的所有赔率
+            $l_odds_data = $models['model_odds']::select('odds_only')->where(['lg_id' => $lg_id, 'type' => 1])->get()->toArray();
+            //获取请求待写入数据
+            $setOddsData = [];
+            //获取本地待删除数据
+            $delOddsData = [];
+            //本地没有该赛事赔率,则直接全部写入
+            if (empty($l_odds_data)) {
+                $setOddsData = $oddsData;
+            } //本地有该赛事赔率,则分别获取需写入/删除的数据
+            else {
+                $newodds_t = $this->ArrayKeySet($oddsData, 'odds_only');
+                $oldodds_t = $this->ArrayKeySet($l_odds_data, 'odds_only');
+                foreach ($newodds_t as $key => $val) {
+                    if (isset($oldodds_t[$key])) {
+                        unset($newodds_t[$key]);
+                        unset($oldodds_t[$key]);
+                    }
+                }
+                $oddsData = $newodds_t;
+                $l_odds_data = $oldodds_t;
+
+                sort($oddsData);
+                sort($l_odds_data);
+                //需写入请求数据
+                $setOddsData = $oddsData;
+                //需删除本地数据
+                $delOddsData = $l_odds_data;
+            }
+            //===end===
+
+            //删除本地不在请求中的数据
+            if (!empty($delOddsData)) {
+                //所有需删除数据odds_only
+                $odds_onlys = [];
+                foreach ($delOddsData as $k => $v) {
+                    $odds_onlys[] = $v['odds_only'];
+                }
+
+                $del = $models['model_odds']::whereIn('odds_only', $odds_onlys)->delete();
+                if ($del != count($odds_onlys)) throw new \Exception(Response::generate($gameName, Response::DEL_ODDS_ERR));
+            }
+
+            //写入请求中本地不存在的数据
+            if (!empty($setOddsData)) {
+                foreach ($setOddsData as $k => $v) {
+                    //组装赔率记录数据
+                    $set_odds_r[] = [
+                        'match_id' => 0,
+                        'others_match_id' => $v['match_id'] ?: 0,
+                        'odds_code' => $v['odds_code'] ?: '',
+                        'status' => $v['status'] ?: 0,
+                        'sort' => $v['sort'] ?: 0,
+                        'p_code' => $v['p_code'] ?: '',
+                        'odds' => $v['odds'] ?: 0,
+                        'condition' => $v['condition'],
+                        'odds_only' => $v['odds_only'] ?: '',
+                        'source' => $v['source'] ?: '',
+                        'type' => $v['type'] ?: 1,
+                        'team' => $v['team'] ?: '',
+                        'lg_id' => $lg_id,
+                        'others_lg_id' => $v['lg_id'],
+                        'ctime' => date('Y-m-d H:i:s'),
+                        'utime' => date('Y-m-d H:i:s'),
+                    ];
+                }
+
+                foreach ($oddsData as $k => $v) {
+                    //组装赔率数据
+                    $set_odds[] = [
+                        'match_id' => 0,
+                        'others_match_id' => $v['match_id'] ?: 0,
+                        'odds_code' => $v['odds_code'] ?: '',
+                        'status' => $v['status'] ?: 0,
+                        'sort' => $v['sort'] ?: 0,
+                        'p_code' => $v['p_code'] ?: '',
+                        'odds' => $v['odds'] ?: 0,
+                        'condition' => $v['condition'],
+                        'odds_only' => $v['odds_only'] ?: '',
+                        'source' => $v['source'] ?: '',
+                        'type' => $v['type'] ?: 1,
+                        'team' => $v['team'] ?: '',
+                        'lg_id' => $lg_id,
+                        'others_lg_id' => $v['lg_id'],
+                        'ctime' => date('Y-m-d H:i:s'),
+                        'utime' => date('Y-m-d H:i:s'),
+                        'sole' => $v['sole'],
+                        'expire_time' => date('Y-m-d H:i:s', time() + 60)
+                    ];
+                }
+
+                //写赔率记录数据
+                $ret = $models['model_odds_record']::insert($set_odds_r);
+                if ($ret != true) throw new \Exception(Response::generate($gameName . '赔率记录;', Response::ADD_ODDS_R_ERROR));
+                //写赔率 数据
+                $ret = $models['model_odds']::insert($set_odds);
+                if ($ret != true) throw new \Exception(Response::generate($gameName . '赔率;', Response::ADD_ODDS_ERROR));
+            }
+
+            $this->writeLog($data, Response::success());
+            //提交事务
+            DB::commit();
+            return Response::success();
+        } catch (\Exception $e) {
+            //回滚事务
+            DB::rollBack();
+            $this->writeLog($data, ['file' => $e->getFile(), 'line' => $e->getLine(), 'msg' => $e->getMessage()]);
+            return $e->getMessage();
+        }
+
+    }
+
+
     /*
     * 写入直播 数据
     */