|
@@ -126,37 +126,44 @@ const triangleProfitCalc = (goldsInfo, oddsOption) => {
|
|
|
|
|
|
|
|
let inner_rebate = 0;
|
|
let inner_rebate = 0;
|
|
|
if (innerIndex == 0) {
|
|
if (innerIndex == 0) {
|
|
|
- inner_rebate = x * innerRebateRatio;
|
|
|
|
|
|
|
+ inner_rebate = x * innerRebateRatio / 100;
|
|
|
}
|
|
}
|
|
|
else if (innerIndex == 1) {
|
|
else if (innerIndex == 1) {
|
|
|
- inner_rebate = y * innerRebateRatio;
|
|
|
|
|
|
|
+ inner_rebate = y * innerRebateRatio / 100;
|
|
|
}
|
|
}
|
|
|
else if (innerIndex == 2) {
|
|
else if (innerIndex == 2) {
|
|
|
- inner_rebate = z * innerRebateRatio;
|
|
|
|
|
|
|
+ inner_rebate = z * innerRebateRatio / 100;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ const k1 = a * (1 + A);
|
|
|
|
|
+ const k2 = 1 - A;
|
|
|
|
|
+ const k3 = b * (1 + B);
|
|
|
|
|
+ const k4 = 1 - B;
|
|
|
|
|
+ const k5 = c * (1 + C);
|
|
|
|
|
+ const k6 = 1 - C;
|
|
|
|
|
+
|
|
|
let win_side_a = 0, win_side_b = 0, win_side_c = 0;
|
|
let win_side_a = 0, win_side_b = 0, win_side_c = 0;
|
|
|
- win_side_a = a*x - y - z + a*A*x + B*y + C*z;
|
|
|
|
|
- win_side_b = b*y - x - z + b*B*y + A*x + C*z;
|
|
|
|
|
|
|
+ win_side_a = k1*x - k4*y - k6*z;
|
|
|
|
|
+ win_side_b = k3*y - k2*x - k6*z;
|
|
|
|
|
|
|
|
switch (crossType) {
|
|
switch (crossType) {
|
|
|
case 'la_wh_wa': // 全输 半赢 全赢
|
|
case 'la_wh_wa': // 全输 半赢 全赢
|
|
|
- win_side_c = c*z - x + b*y/2 + c*C*z + A*x + b*B*y/2;
|
|
|
|
|
|
|
+ win_side_c = k5*z - k2*x + k3*y/2;
|
|
|
break;
|
|
break;
|
|
|
case 'la_dr_wa': // 全输 和局 全赢
|
|
case 'la_dr_wa': // 全输 和局 全赢
|
|
|
- win_side_c = c*z - x + c*C*z + A*x;
|
|
|
|
|
|
|
+ win_side_c = k5*z - k2*x;
|
|
|
break;
|
|
break;
|
|
|
case 'la_lh_wa': // 全输 半输 全赢
|
|
case 'la_lh_wa': // 全输 半输 全赢
|
|
|
- win_side_c = c*z - x - y/2 + c*C*z + A*x + B*y/2;
|
|
|
|
|
|
|
+ win_side_c = k5*z - k2*x - k4*y/2;
|
|
|
break;
|
|
break;
|
|
|
case 'lh_dr_wa': // 半输 和局 全赢
|
|
case 'lh_dr_wa': // 半输 和局 全赢
|
|
|
- win_side_c = c*z - x/2 + c*C*z + A*x/2;
|
|
|
|
|
|
|
+ win_side_c = k5*z - k2*x/2;
|
|
|
break;
|
|
break;
|
|
|
case 'lh_lh_wa': // 半输 半输 全赢
|
|
case 'lh_lh_wa': // 半输 半输 全赢
|
|
|
- win_side_c = c*z - x/2 - y/2 + c*C*z + A*x/2 + B*y/2;
|
|
|
|
|
|
|
+ win_side_c = k5*z - k2*x/2 - k4*y/2;
|
|
|
break;
|
|
break;
|
|
|
case 'la_la_wa': // 全输 全输 全赢
|
|
case 'la_la_wa': // 全输 全输 全赢
|
|
|
- win_side_c = c*z - x - y + c*C*z + A*x + B*y;
|
|
|
|
|
|
|
+ win_side_c = k5*z - k2*x - k4*y;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -221,37 +228,50 @@ const triangleGoldCalc = (oddsInfo, oddsOption) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
|
- gold_side_a: x,
|
|
|
|
|
|
|
+ gold_side_a: fixFloat(x),
|
|
|
gold_side_b: fixFloat(y),
|
|
gold_side_b: fixFloat(y),
|
|
|
gold_side_c: fixFloat(z),
|
|
gold_side_c: fixFloat(z),
|
|
|
- odds_side_a: a,
|
|
|
|
|
- odds_side_b: b,
|
|
|
|
|
- odds_side_c: c,
|
|
|
|
|
|
|
+ odds_side_a: fixFloat(a),
|
|
|
|
|
+ odds_side_b: fixFloat(b),
|
|
|
|
|
+ odds_side_c: fixFloat(c),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const eventSolutions = (oddsInfo, oddsOption) => {
|
|
const eventSolutions = (oddsInfo, oddsOption) => {
|
|
|
- const { innerDefaultAmount } = SETTING;
|
|
|
|
|
|
|
+ const { innerDefaultAmount, innerRebateRatio } = SETTING;
|
|
|
const goldsInfo = triangleGoldCalc(oddsInfo, oddsOption);
|
|
const goldsInfo = triangleGoldCalc(oddsInfo, oddsOption);
|
|
|
if (!goldsInfo) {
|
|
if (!goldsInfo) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
const profitInfo = triangleProfitCalc(goldsInfo, oddsOption);
|
|
const profitInfo = triangleProfitCalc(goldsInfo, oddsOption);
|
|
|
|
|
|
|
|
- const { odds_side_a, odds_side_b, odds_side_c } = goldsInfo;
|
|
|
|
|
|
|
+ const { odds_side_a, odds_side_b, odds_side_c, gold_side_a, gold_side_b, gold_side_c } = goldsInfo;
|
|
|
const { win_side_a, win_side_b, win_side_c, win_average } = profitInfo;
|
|
const { win_side_a, win_side_b, win_side_c, win_average } = profitInfo;
|
|
|
|
|
+
|
|
|
|
|
+ let { crossType, innerIndex, rebateA, rebateB, rebateC } = oddsOption;
|
|
|
|
|
+ if (innerIndex == 0) {
|
|
|
|
|
+ rebateA = fixFloat(innerRebateRatio / 100, 3);
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (innerIndex == 1) {
|
|
|
|
|
+ rebateB = fixFloat(innerRebateRatio / 100, 3);
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (innerIndex == 2) {
|
|
|
|
|
+ rebateC = fixFloat(innerRebateRatio / 100, 3);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const win_profit = fixFloat(win_average / (gold_side_a + gold_side_b + gold_side_c) * 100);
|
|
|
|
|
+
|
|
|
return {
|
|
return {
|
|
|
- odds_side_a,
|
|
|
|
|
- odds_side_b,
|
|
|
|
|
- odds_side_c,
|
|
|
|
|
- win_side_a, win_side_b, win_side_c,
|
|
|
|
|
- win_average,
|
|
|
|
|
- rebate_side_a: oddsOption.rebateA,
|
|
|
|
|
- rebate_side_b: oddsOption.rebateB,
|
|
|
|
|
- rebate_side_c: oddsOption.rebateC,
|
|
|
|
|
- cross_type: oddsOption.crossType,
|
|
|
|
|
- inner_index: oddsOption.innerIndex,
|
|
|
|
|
|
|
+ odds_side_a, odds_side_b, odds_side_c,
|
|
|
|
|
+ // gold_side_a, gold_side_b, gold_side_c,
|
|
|
|
|
+ // win_side_a, win_side_b, win_side_c,
|
|
|
|
|
+ win_average, win_profit,
|
|
|
|
|
+ rebate_side_a: rebateA,
|
|
|
|
|
+ rebate_side_b: rebateB,
|
|
|
|
|
+ rebate_side_c: rebateC,
|
|
|
|
|
+ cross_type: crossType,
|
|
|
|
|
+ inner_index: innerIndex,
|
|
|
inner_base: innerDefaultAmount,
|
|
inner_base: innerDefaultAmount,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -270,11 +290,11 @@ const sortCpr = (cpr) => {
|
|
|
* 添加返佣
|
|
* 添加返佣
|
|
|
*/
|
|
*/
|
|
|
const attachRebate = (ior) => {
|
|
const attachRebate = (ior) => {
|
|
|
- const { innerRebateRatio, obRebateRatio, hgRebateRatio } = SETTING;
|
|
|
|
|
|
|
+ const { obRebateRatio, hgRebateRatio } = SETTING;
|
|
|
const { p } = ior;
|
|
const { p } = ior;
|
|
|
let rebate = 0;
|
|
let rebate = 0;
|
|
|
if (p == 'ps') {
|
|
if (p == 'ps') {
|
|
|
- rebate = innerRebateRatio;
|
|
|
|
|
|
|
+ rebate = 0;
|
|
|
}
|
|
}
|
|
|
else if (p == 'ob') {
|
|
else if (p == 'ob') {
|
|
|
rebate = obRebateRatio;
|
|
rebate = obRebateRatio;
|