pstery.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. const express = require('express');
  2. const router = express.Router();
  3. const Games = require('../models/GamesPs');
  4. // 更新比赛列表
  5. router.post('/update_games_list', (req, res) => {
  6. const { platform, mk, games } = req.body ?? {};
  7. Games.updateGamesList({ platform, mk, games })
  8. .then(() => {
  9. res.sendSuccess();
  10. })
  11. .catch(err => {
  12. res.badRequest(err.message);
  13. })
  14. });
  15. // 更新比赛盘口
  16. router.post('/update_games_events', (req, res) => {
  17. const { platform, mk, games, outrights, timestamp, tp } = req.body ?? {};
  18. Games.updateGamesEvents({ platform, mk, games, outrights, timestamp, tp })
  19. .then(updateCount => {
  20. res.sendSuccess({ updateCount });
  21. })
  22. .catch(err => {
  23. res.badRequest(err.message);
  24. })
  25. });
  26. // 更新内盘盘口
  27. router.post('/update_base_events', (req, res) => {
  28. const { games, timestamp } = req.body ?? {};
  29. Games.updateBaseEvents({ games, timestamp })
  30. .then(() => {
  31. res.sendSuccess();
  32. })
  33. .catch(err => {
  34. res.badRequest(err.message);
  35. });
  36. });
  37. // 更新联赛列表
  38. router.post('/update_leagues_list', (req, res) => {
  39. const { mk, leagues, platform } = req.body ?? {};
  40. const updateCount = Games.updateLeaguesList({ mk, leagues, platform });
  41. res.sendSuccess({ updateCount });
  42. });
  43. // 更新比赛结果
  44. router.post('/update_games_result', (req, res) => {
  45. const { date, list } = req.body ?? {};
  46. Games.updateGamesResult({ date, list })
  47. .then(() => {
  48. res.sendSuccess();
  49. })
  50. .catch(err => {
  51. res.badRequest(err.message);
  52. });
  53. });
  54. // 获取筛选过的联赛
  55. router.get('/get_filtered_leagues', (req, res) => {
  56. const { mk } = req.query;
  57. Games.getFilteredLeagues(mk)
  58. .then(filteredLeagues => {
  59. res.sendSuccess(filteredLeagues);
  60. })
  61. .catch(err => {
  62. res.badRequest(err.message);
  63. });
  64. });
  65. // 更新OB原始数据
  66. router.post('/update_original_data', (req, res) => {
  67. const { leagues, matches, platform } = req.body ?? {};
  68. Games.updateOriginalData({ leagues, matches });
  69. res.sendSuccess();
  70. });
  71. // 获取OB原始数据
  72. router.get('/get_original_data', (req, res) => {
  73. const obOriginalData = Games.getOriginalData();
  74. res.sendSuccess(obOriginalData);
  75. });
  76. // 获取关联列表
  77. router.get('/get_games_relation', (req, res) => {
  78. const { mk, ids, le, lp } = req.query;
  79. const gamesRelation = Games.getGamesRelation({
  80. ids: ids?.split(',').map(item => +item.trim()).filter(item => !!item) ?? [],
  81. listEvents: le === 'true',
  82. listPC: lp === 'true',
  83. mk: (/^-?\d$/).test(mk) ? +mk : -1
  84. });
  85. res.sendSuccess(gamesRelation);
  86. });
  87. // 获取中单方案
  88. router.get('/get_solutions', (req, res) => {
  89. const { win_min, with_events, show_lower, mk } = req.query;
  90. Games.getSolutions({
  91. win_min: win_min ? +win_min : undefined,
  92. with_events: with_events === 'true',
  93. show_lower: show_lower === 'true',
  94. mk: mk ? +mk : -1
  95. })
  96. .then(({ solutions, gamesEvents, mkCount }) => {
  97. res.sendSuccess({ solutions, gamesEvents, mkCount });
  98. })
  99. .catch(err => {
  100. res.badRequest(err.message);
  101. });
  102. });
  103. // 获取中单方案并按照比赛分组
  104. router.get('/get_games_solutions', (req, res) => {
  105. const { win_min, with_events, show_lower, mk, tp, sk } = req.query;
  106. Games.getGamesSolutions({
  107. win_min: win_min ? +win_min : undefined,
  108. with_events: with_events === 'true',
  109. show_lower: show_lower === 'true',
  110. mk: mk ? +mk : -1,
  111. tp: tp ? +tp : 0,
  112. sk: sk.trim() ? sk.trim() : undefined,
  113. })
  114. .then(gamesSolutions => {
  115. res.sendSuccess(gamesSolutions);
  116. })
  117. .catch(err => {
  118. res.badRequest(err.message);
  119. });
  120. });
  121. // 获取单个中单方案
  122. router.get('/get_solution', (req, res) => {
  123. const { sid } = req.query;
  124. Games.getSolution(sid)
  125. .then(solution => {
  126. res.sendSuccess(solution);
  127. })
  128. .catch(err => {
  129. res.badRequest(err.message);
  130. });
  131. });
  132. // 通过比赛 ID 获取中单方案
  133. router.post('/solutions_by_ids', (req, res) => {
  134. const { ids } = req.body ?? {};
  135. Games.getSolutionsByIds(ids)
  136. .then(solutions => {
  137. res.sendSuccess(solutions);
  138. })
  139. .catch(err => {
  140. res.badRequest(err.message);
  141. });
  142. });
  143. // 获取综合利润方案
  144. router.post('/calc_total_profit', (req, res) => {
  145. const data = req.body;
  146. let sid1, sid2, inner_base, inner_rebate;
  147. if (Array.isArray(data)) {
  148. [sid1, sid2, inner_base, inner_rebate] = data;
  149. }
  150. else {
  151. sid1 = data.sids[0];
  152. sid2 = data.sids[1];
  153. inner_base = data.inner_base;
  154. inner_rebate = data.inner_rebate;
  155. }
  156. // const [sid1, sid2, inner_base, inner_rebate] = req.body;
  157. Games.getTotalProfitWithSid(sid1, sid2, inner_base, inner_rebate)
  158. .then(totalProfit => {
  159. res.sendSuccess(totalProfit);
  160. })
  161. .catch(err => {
  162. res.badRequest(err.message);
  163. });
  164. });
  165. // 获取自定义综合利润
  166. router.post('/calc_custom_total_profit', (req, res) => {
  167. // const [bet_info_1, bet_info_2, fixed, inner_base, inner_rebate] = req.body;
  168. const data = req.body;
  169. let bet_info_1, bet_info_2, fixed, inner_base, inner_rebate;
  170. if (Array.isArray(data)) {
  171. [bet_info_1, bet_info_2, fixed, inner_base, inner_rebate] = data;
  172. }
  173. else {
  174. bet_info_1 = data.bet_info[0];
  175. bet_info_2 = data.bet_info[1];
  176. inner_base = data.inner_base;
  177. inner_rebate = data.inner_rebate;
  178. fixed = data.fixed;
  179. }
  180. Games.getTotalProfitWithBetInfo(bet_info_1, bet_info_2, fixed, inner_base, inner_rebate)
  181. .then(totalProfit => {
  182. res.sendSuccess(totalProfit);
  183. })
  184. .catch(err => {
  185. res.badRequest(err.message);
  186. });
  187. });
  188. // 补单计算
  189. router.post('/calc_total_replacement', (req, res) => {
  190. const { event_id, inner_base, inner_rebate, inner_ior, inner_odds, outer_golds } = req.body;
  191. Games.getTotalReplacement(event_id, inner_base, inner_rebate, inner_ior, inner_odds, outer_golds)
  192. .then(totalProfit => {
  193. res.sendSuccess(totalProfit);
  194. })
  195. .catch(err => {
  196. res.badRequest(err.message);
  197. });
  198. });
  199. // 异常通知
  200. router.post('/notify_exception', (req, res) => {
  201. const { message } = req.body;
  202. Games.notifyException(message);
  203. res.sendSuccess();
  204. });
  205. module.exports = router;