PartnerGate.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import Logs from "../libs/logs.js";
  2. import { receivePartnerData } from "./Partner.js";
  3. import eventSolutions from '../triangle/eventSolutions.js';
  4. /**
  5. * 精确浮点数字
  6. * @param {number} number
  7. * @param {number} x
  8. * @returns {number}
  9. */
  10. const fixFloat = (number, x=3) => {
  11. return parseFloat(number.toFixed(x));
  12. }
  13. const getSolutionWithIors = (params) => {
  14. Logs.outDev('getGameSolution', params);
  15. const { iors, cross_type, base_stake } = params;
  16. const base_index = iors.reduce((minIdx, cur, idx) => cur.v < iors[minIdx].v ? idx : minIdx, 0);
  17. if (iors.length === 2) {
  18. iors.push({ v: 1 });
  19. }
  20. const betInfo = {
  21. cross_type,
  22. base_index,
  23. base_stake,
  24. odds_side_a: fixFloat(iors[0].v - 1),
  25. odds_side_b: fixFloat(iors[1].v - 1),
  26. odds_side_c: fixFloat(iors[2].v - 1),
  27. };
  28. const sol = eventSolutions(betInfo, true);
  29. return sol;
  30. }
  31. export const partnerGate = async (data) => {
  32. return receivePartnerData(data).
  33. then(({ action, params }) => {
  34. switch (action) {
  35. case 'iors.solution':
  36. return getSolutionWithIors(params);
  37. default:
  38. return Promise.reject(new Error('invalid action'));
  39. }
  40. });
  41. }
  42. export default { partnerGate };