瀏覽代碼

新增赔率补偿

flyzto 2 月之前
父節點
當前提交
d5a375a0f8
共有 4 個文件被更改,包括 48 次插入15 次删除
  1. 25 12
      server/models/GamesPs.js
  2. 10 0
      server/models/Setting.js
  3. 10 2
      server/triangle/eventsMatch.js
  4. 3 1
      server/triangle/settings.js

+ 25 - 12
server/models/GamesPs.js

@@ -1013,32 +1013,44 @@ const getTotalProfitWithBetInfo = async (betInfo1, betInfo2, fixed=false, inner_
 }
 
 /**
- * 同步内盘返点设
+ * 同步Qboss平台配
  */
-const syncInnerRebate = () => {
-  axios.get(`${BASE_API_URL}/p/QbossReturnRatio`, { proxy: false })
+const syncQbossConfig = () => {
+  axios.get(`${BASE_API_URL}/p/QbossSystemConfig`, { proxy: false })
   .then(res => {
     const { data } = res;
     if (!data?.data) {
-      throw new Error('syncInnerRebate data is empty');
+      throw new Error('syncQbossConfig data is empty');
     }
-    const ratio = +data.data;
-    const innerRebateRatio = getSetting('innerRebateRatio');
-    if (ratio != innerRebateRatio) {
-      Setting.update({ innerRebateRatio: ratio });
-      Logs.outDev('syncInnerRebate from %d to %d', innerRebateRatio, ratio);
+    const setting = getSetting();
+    const { qboss_return_ratio, qboss_jq_add_odds, qboss_jq_add_hours } = data.data;
+    const qbossSetting = { innerRebateRatio: +qboss_return_ratio, subsidyTime: +qboss_jq_add_hours, subsidyAmount: +qboss_jq_add_odds };
+    let needUpdate = false;
+    Object.keys(qbossSetting).forEach(key => {
+      if (qbossSetting[key] !== setting[key]) {
+        settingFields[key] = qbossSetting[key];
+        needUpdate = true;
+      }
+    });
+    console.log('settingFields', settingFields);
+    if (needUpdate) {
+      Setting.update(settingFields);
+      Logs.outDev('syncQbossConfig', settingFields);
+    }
+    else {
+      Logs.outDev('syncQbossConfig no change');
     }
   })
   .catch(err => {
-    Logs.out('syncInnerRebate', err.message);
+    Logs.out('syncQbossConfig error', err.message);
   })
   .finally(() => {
     setTimeout(() => {
-      syncInnerRebate();
+      syncQbossConfig();
     }, 1000*15);
   });
 }
-syncInnerRebate();
+syncQbossConfig();
 
 /**
  * 异常通知
@@ -1114,6 +1126,7 @@ const settingUpdate = (fields) => {
 
 const syncSetting = async () => {
   const setting = await Setting.get();
+  console.log('syncSetting', setting);
   settingUpdate(setting.toObject());
 }
 

+ 10 - 0
server/models/Setting.js

@@ -50,6 +50,16 @@ const systemSettingSchema = new Schema({
     type: Number,
     required: true,
     default: 60000
+  },
+  subsidyTime: {
+    type: Number,
+    required: true,
+    default: 2
+  },
+  subsidyAmount: {
+    type: Number,
+    required: true,
+    default: 0.2
   }
 }, {
   toJSON: {

+ 10 - 2
server/triangle/eventsMatch.js

@@ -75,7 +75,10 @@ const updateSolutions = (solutions, eventsLogsMap) => {
   postDataToParent('updateSolutions', { solutions, eventsLogsMap });
 }
 
-const extractOdds = ({ evtime, events, sptime, special }) => {
+const extractOdds = ({ evtime, events, sptime, special, platform, timestamp }) => {
+  const { subsidyTime, subsidyAmount } = getSetting();
+  const nowTime = Date.now();
+  const isSubsidy = platform == 'ps' && timestamp > nowTime && timestamp < nowTime + 1000*60*60*subsidyTime;
   const setting = getSetting();
   const expireTimeEv = Date.now() - setting.expireTimeEvents;
   const expireTimeSP = Date.now() - setting.expireTimeSpecial;
@@ -103,6 +106,11 @@ const extractOdds = ({ evtime, events, sptime, special }) => {
       delete odds[ior];
       extractData.removeCount++;
     }
+    else if (isSubsidy && ior.startsWith('ior_ot')) {
+      const sourceOdds = odds[ior].v;
+      odds[ior].v = fixFloat(sourceOdds + subsidyAmount, 3);
+      odds[ior].s = sourceOdds
+    }
   });
   extractData.odds = odds;
   return extractData;
@@ -142,7 +150,7 @@ const eventMatch = () => {
         if (platform == 'ps') {
           eventsMap.info = { leagueName, teamHomeName, teamAwayName, id, timestamp, stage, score };
         }
-        const { odds, evExpire, spExpire, removeCount } = extractOdds({ evtime, events, sptime, special });
+        const { odds, evExpire, spExpire, removeCount } = extractOdds({ evtime, events, sptime, special, platform, timestamp });
 
         /** 日志 盘口过期 */
         if (evExpire || spExpire) {

+ 3 - 1
server/triangle/settings.js

@@ -9,7 +9,9 @@ const SETTING = {
   hgRebateRatio: 0,
   runWorkerEnabled: false,
   expireTimeEvents: 45000,
-  expireTimeSpecial: 60000
+  expireTimeSpecial: 60000,
+  subsidyTime: 2,
+  subsidyAmount: 0.2
 }
 
 const getSetting = (key) => {