|
@@ -1,3 +1,5 @@
|
|
|
|
|
+const GOLD_BASE = 10000;
|
|
|
|
|
+
|
|
|
const fixFloat = (number, x = 2) => {
|
|
const fixFloat = (number, x = 2) => {
|
|
|
return parseFloat(number.toFixed(x));
|
|
return parseFloat(number.toFixed(x));
|
|
|
}
|
|
}
|
|
@@ -134,23 +136,57 @@ const calcExternalHandicap = (data) => {
|
|
|
|
|
|
|
|
const calcGoldsWithWinTarget = (data) => {
|
|
const calcGoldsWithWinTarget = (data) => {
|
|
|
const { gold_side_jc, win_target, sol1, sol2 } = 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) {
|
|
switch (jc_index_1) {
|
|
|
case 0:
|
|
case 0:
|
|
|
pre_loss = goldB1 + goldM1;
|
|
pre_loss = goldB1 + goldM1;
|
|
|
|
|
+ jc_win_1 = GOLD_BASE * (sol1.odds_side_a + 1);
|
|
|
break;
|
|
break;
|
|
|
case 1:
|
|
case 1:
|
|
|
pre_loss = goldA1 + goldM1;
|
|
pre_loss = goldA1 + goldM1;
|
|
|
|
|
+ jc_win_1 = GOLD_BASE * (sol1.odds_side_b + 1);
|
|
|
break;
|
|
break;
|
|
|
case 2:
|
|
case 2:
|
|
|
pre_loss = goldA1 + goldB1;
|
|
pre_loss = goldA1 + goldB1;
|
|
|
|
|
+ jc_win_1 = GOLD_BASE * (sol1.odds_side_m + 1)
|
|
|
break;
|
|
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 {
|
|
return {
|
|
|
jcWin,
|
|
jcWin,
|
|
|
goldA1,
|
|
goldA1,
|