|
@@ -738,7 +738,7 @@ const getGamesRelation = ({ mk=-1, ids, listEvents=false, listPC=false } = {}) =
|
|
|
relations = Object.values(GAMES.Relations);
|
|
relations = Object.values(GAMES.Relations);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- relations = relations.filter(item => mk == -1 || item.mk == mk).sort((a, b) => a.timestamp - b.timestamp);
|
|
|
|
|
|
|
+ relations = relations.filter(item => !!item && (mk == -1 || item.mk == mk)).sort((a, b) => a.timestamp - b.timestamp);
|
|
|
|
|
|
|
|
if (listEvents && !listPC) {
|
|
if (listEvents && !listPC) {
|
|
|
return relations;
|
|
return relations;
|
|
@@ -1247,22 +1247,21 @@ const getTotalProfitWithBetInfo = async (betInfo1, betInfo2, fixed=false, inner_
|
|
|
* 计算补单综合利润
|
|
* 计算补单综合利润
|
|
|
*/
|
|
*/
|
|
|
const getTotalReplacement = async (data) => {
|
|
const getTotalReplacement = async (data) => {
|
|
|
- Logs.out('getTotalReplacement', data);
|
|
|
|
|
const { event_id, inner_ior, inner_odds, pre_bet_info } = data;
|
|
const { event_id, inner_ior, inner_odds, pre_bet_info } = data;
|
|
|
if (!event_id) {
|
|
if (!event_id) {
|
|
|
- Logs.out('getTotalReplacement event_id 无效');
|
|
|
|
|
|
|
+ Logs.out('getTotalReplacement event_id 无效', data);
|
|
|
return Promise.reject(new Error('event_id 无效'));
|
|
return Promise.reject(new Error('event_id 无效'));
|
|
|
}
|
|
}
|
|
|
if (!inner_ior) {
|
|
if (!inner_ior) {
|
|
|
- Logs.out('getTotalReplacement inner_ior 无效');
|
|
|
|
|
|
|
+ Logs.out('getTotalReplacement inner_ior 无效', data);
|
|
|
return Promise.reject(new Error('inner_ior 无效'));
|
|
return Promise.reject(new Error('inner_ior 无效'));
|
|
|
}
|
|
}
|
|
|
if (isNaN(+inner_odds)) {
|
|
if (isNaN(+inner_odds)) {
|
|
|
- Logs.out('getTotalReplacement inner_odds 无效');
|
|
|
|
|
|
|
+ Logs.out('getTotalReplacement inner_odds 无效', data);
|
|
|
return Promise.reject(new Error('inner_odds 无效'));
|
|
return Promise.reject(new Error('inner_odds 无效'));
|
|
|
}
|
|
}
|
|
|
if (!pre_bet_info || typeof(pre_bet_info) !== 'object') {
|
|
if (!pre_bet_info || typeof(pre_bet_info) !== 'object') {
|
|
|
- Logs.out('getTotalReplacement pre_bet_info 无效');
|
|
|
|
|
|
|
+ Logs.out('getTotalReplacement pre_bet_info 无效', data);
|
|
|
return Promise.reject(new Error('pre_bet_info 无效'));
|
|
return Promise.reject(new Error('pre_bet_info 无效'));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1282,15 +1281,20 @@ const getTotalReplacement = async (data) => {
|
|
|
return { ...relationInfo, rel: tempRel };
|
|
return { ...relationInfo, rel: tempRel };
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ if (!relation?.length) {
|
|
|
|
|
+ Logs.out('getTotalReplacement 没有找到对应的比赛 data %o, relation %o', data, relation);
|
|
|
|
|
+ return Promise.reject(new Error('没有找到对应的比赛'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
const passableEvents = getPassableEvents(relation, null);
|
|
const passableEvents = getPassableEvents(relation, null);
|
|
|
const solutions = eventsCombination(passableEvents, inner_base, inner_rebate);
|
|
const solutions = eventsCombination(passableEvents, inner_base, inner_rebate);
|
|
|
|
|
|
|
|
if (!solutions?.length) {
|
|
if (!solutions?.length) {
|
|
|
- Logs.out('getTotalReplacement 没有可用的解决方案 relation %j, passableEvents %j, solutions %j', relation, passableEvents, solutions);
|
|
|
|
|
|
|
+ Logs.out('getTotalReplacement 没有可用的解决方案 data %o, relation %o, passableEvents %o, solutions %o', data, relation, passableEvents, solutions);
|
|
|
return Promise.reject(new Error('没有可用的解决方案'));
|
|
return Promise.reject(new Error('没有可用的解决方案'));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Logs.out('getTotalReplacement solutions length %d', solutions.length);
|
|
|
|
|
|
|
+ Logs.out('getTotalReplacement, event_id[%d], inner_ior[%s], solutions[%d]', event_id, inner_ior, solutions.length);
|
|
|
|
|
|
|
|
// 过滤 .filter(solution => !solution.lower)
|
|
// 过滤 .filter(solution => !solution.lower)
|
|
|
return solutions.map(solution => {
|
|
return solutions.map(solution => {
|