flyzto 6 месяцев назад
Родитель
Сommit
6ef520e3f5
1 измененных файлов с 42 добавлено и 6 удалено
  1. 42 6
      server/triangle/totalProfitCalc.js

+ 42 - 6
server/triangle/totalProfitCalc.js

@@ -1,3 +1,5 @@
+const GOLD_BASE = 10000;
+
 const fixFloat = (number, x = 2) => {
   return parseFloat(number.toFixed(x));
 }
@@ -134,23 +136,57 @@ const calcExternalHandicap = (data) => {
 
 const calcGoldsWithWinTarget = (data) => {
   const { gold_side_jc, win_target, sol1, sol2 } = data;
-  const preInfo = calcExternalHandicap({ ...sol1, gold_side_jc, win_target });
-  const { gold_side_a: goldA1, gold_side_b: goldB1, gold_side_m: goldM1, jc_index: jc_index_1 } = preInfo;
-  let pre_loss = 0;
+  const {
+    gold_side_a: goldA1,
+    gold_side_b: goldB1,
+    gold_side_m: goldM1,
+    jc_index: jc_index_1
+  } = calcExternalHandicap({ ...sol1, gold_side_jc, win_target });
+
+  let pre_loss = 0, jc_win_1 = 0;
   switch (jc_index_1) {
     case 0:
       pre_loss = goldB1 + goldM1;
+      jc_win_1 = GOLD_BASE * (sol1.odds_side_a + 1);
       break;
     case 1:
       pre_loss = goldA1 + goldM1;
+      jc_win_1 = GOLD_BASE * (sol1.odds_side_b + 1);
       break;
     case 2:
       pre_loss = goldA1 + goldB1;
+      jc_win_1 = GOLD_BASE * (sol1.odds_side_m + 1)
       break;
   }
-  const nextInfo = calcExternalHandicap({ ...sol2, gold_side_jc, win_target, pre_loss });
-  const { gold_side_a: goldA2, gold_side_b: goldB2, gold_side_m: goldM2, jc_index: jc_index_2 } = nextInfo;
-  const jcWin = fixFloat(10000 * (sol1.odds_side_a + 1) * (sol2.odds_side_a + 1) - goldB1 - goldM1 - goldB2 - goldM2 - 10000);
+
+  let {
+    gold_side_a: goldA2,
+    gold_side_b: goldB2,
+    gold_side_m: goldM2,
+    jc_index: jc_index_2
+  } = calcExternalHandicap({ ...sol2, gold_side_jc, win_target, pre_loss });
+
+  let jc_odds_2 = 0, win_target_2 = 0;
+  switch (jc_index_2) {
+    case 0:
+      goldA2 = jc_win_1;
+      jc_odds_2 = sol2.odds_side_a + 1;
+      win_target_2 = goldA2 * jc_odds_2 - goldB2 - goldM2;
+      break;
+    case 1:
+      goldB2 = jc_win_1;
+      jc_odds_2 = sol2.odds_side_b + 1;
+      win_target_2 = goldB2 * jc_odds_2 - goldA2 - goldM2;
+      break;
+    case 2:
+      goldM2 = jc_win_1;
+      jc_odds_2 = sol2.odds_side_m + 1;
+      win_target_2 = goldM2 * jc_odds_2 - goldA2 - goldB2;
+      break;
+  }
+
+  const jcWin = fixFloat(win_target_2 - GOLD_BASE - goldB2 - goldM2);
+
   return {
     jcWin,
     goldA1,