|
@@ -501,6 +501,17 @@ class DataLogic
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //将数组按按指定健名,重新生成新的数组,key在存在并且 值不能重复
|
|
|
|
|
+ private function ArrayKeySet(Array $array, $key)
|
|
|
|
|
+ {
|
|
|
|
|
+ $ret = [];
|
|
|
|
|
+ foreach ($array as $val) {
|
|
|
|
|
+ $ret[$val[$key]] = $val;
|
|
|
|
|
+ }
|
|
|
|
|
+ return $ret;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
* 写 普通 赔率 数据
|
|
* 写 普通 赔率 数据
|
|
|
* 每个请求 只包含 一场赛事下 N条赔率
|
|
* 每个请求 只包含 一场赛事下 N条赔率
|
|
@@ -519,6 +530,186 @@ class DataLogic
|
|
|
//不是 赔率 数据
|
|
//不是 赔率 数据
|
|
|
if ($getData['title'] != 'odds') throw new \Exception(Response::generate('不是赔率数据,', Response::ABNORMAL));
|
|
if ($getData['title'] != 'odds') throw new \Exception(Response::generate('不是赔率数据,', Response::ABNORMAL));
|
|
|
|
|
|
|
|
|
|
+ //获取球类代码
|
|
|
|
|
+ $game_code = $getData['game_code'];
|
|
|
|
|
+ //获取数据源
|
|
|
|
|
+ $source = $getData['source'];
|
|
|
|
|
+ //获取源数据联赛ID
|
|
|
|
|
+ $uuid = $getData['uuid'];
|
|
|
|
|
+ //获取源数据赛事ID
|
|
|
|
|
+ $s_match_id = $getData['match_id'];
|
|
|
|
|
+ //获取赔率所属赛事 tag 值 玩法数量
|
|
|
|
|
+ $tag = $getData['tag'] ?: 99;
|
|
|
|
|
+ //获取赔率是否是串场
|
|
|
|
|
+ $is_stringscene = $getData['is_stringscene'];
|
|
|
|
|
+
|
|
|
|
|
+ //获取球类名称
|
|
|
|
|
+ $gameName = gameModel::getGameName($game_code);
|
|
|
|
|
+ //验证本次请求所属联赛/赛事是否存在 返回本地联赛/赛事ID
|
|
|
|
|
+ $models = commonFunction::getModels($game_code, 1);
|
|
|
|
|
+
|
|
|
|
|
+ $lg_id = $this->leagueVerify($models, $uuid, $source, $gameName);
|
|
|
|
|
+ $match_id = $this->matchVerify($models, $s_match_id, $source, $gameName);
|
|
|
|
|
+
|
|
|
|
|
+ //更新赛事 tag 值
|
|
|
|
|
+ //如果未获取到本地赛事id,则返回异常
|
|
|
|
|
+ if (empty($match_id)) throw new \Exception(Response::generate($gameName . '赛事-match_id:' . $s_match_id . ';', Response::L_MATCH_ID_ERR));
|
|
|
|
|
+
|
|
|
|
|
+ $upMatch = $models['model_match']::where(['id' => $match_id])
|
|
|
|
|
+ ->update(['tag' => $tag, 'utime' => date('Y-m-d H:i:s')]);
|
|
|
|
|
+ if ($upMatch < 1) throw new \Exception(Response::generate($gameName . '赛事-match_id:' . $s_match_id . ';', Response::UPMATCHTAG_ERROR));
|
|
|
|
|
+
|
|
|
|
|
+ //获取 赔率数据
|
|
|
|
|
+ $oddsData = $getData['data'];
|
|
|
|
|
+
|
|
|
|
|
+ //===追加处理赔率过滤===
|
|
|
|
|
+ //获取当前赛事 在本地的所有赔率
|
|
|
|
|
+ $l_odds_data = $models['model_odds']::select('odds_only')->where(['match_id' => $match_id, 'is_stringscene' => $is_stringscene])->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;
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ foreach ($oddsData as $k => $v) {
|
|
|
|
|
+ foreach ($l_odds_data as $kk => $vv) {
|
|
|
|
|
+ if ($v['odds_only'] == $vv['odds_only']) {
|
|
|
|
|
+ unset($oddsData[$k]);
|
|
|
|
|
+ unset($l_odds_data[$kk]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ 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' => $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'] ?: 0,
|
|
|
|
|
+ 'team' => $v['team'] ?: '',
|
|
|
|
|
+ 'lg_id' => $lg_id,
|
|
|
|
|
+ 'is_stringscene' => $is_stringscene,
|
|
|
|
|
+ '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' => $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'] ?: 0,
|
|
|
|
|
+ 'team' => $v['team'] ?: '',
|
|
|
|
|
+ 'lg_id' => $lg_id,
|
|
|
|
|
+ 'is_stringscene' => $is_stringscene,
|
|
|
|
|
+ '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();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ * 写 普通 赔率 数据
|
|
|
|
|
+ * 每个请求 只包含 一场赛事下 N条赔率
|
|
|
|
|
+ */
|
|
|
|
|
+ public function setOdds_old($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') throw new \Exception(Response::generate('不是赔率数据,', Response::ABNORMAL));
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
//写请求数据 日志记录
|
|
//写请求数据 日志记录
|
|
|
if($this->isRecord){
|
|
if($this->isRecord){
|
|
@@ -1335,9 +1526,7 @@ class DataLogic
|
|
|
*/
|
|
*/
|
|
|
public function getAddData($data)
|
|
public function getAddData($data)
|
|
|
{
|
|
{
|
|
|
-
|
|
|
|
|
$data = json_decode($data, true);
|
|
$data = json_decode($data, true);
|
|
|
-
|
|
|
|
|
return $data;
|
|
return $data;
|
|
|
}
|
|
}
|
|
|
|
|
|