Commit 4ed06084 Harvey

no message

1 个父辈 cfce6459
正在显示 173 个修改的文件 包含 7 行增加643 行删除
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Admin', { return sequelize.define('T_Admin', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_BasketBallArea', { return sequelize.define('T_BasketBallArea', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_BasketBallMatchType', { return sequelize.define('T_BasketBallMatchType', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Company', { return sequelize.define('T_Company', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Goal', { return sequelize.define('T_Goal', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Match', { return sequelize.define('T_Match', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_MatchJson', { return sequelize.define('T_MatchJson', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_MatchType', { return sequelize.define('T_MatchType', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBACompany', { return sequelize.define('T_NBACompany', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBALeagueRank', { return sequelize.define('T_NBALeagueRank', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAMatch', { return sequelize.define('T_NBAMatch', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAMatchType', { return sequelize.define('T_NBAMatchType', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAOdds100', { return sequelize.define('T_NBAOdds100', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAOddsBigSmall', { return sequelize.define('T_NBAOddsBigSmall', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAOddsLetGoal', { return sequelize.define('T_NBAOddsLetGoal', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAPlayer', { return sequelize.define('T_NBAPlayer', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAState', { return sequelize.define('T_NBAState', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBATeam', { return sequelize.define('T_NBATeam', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_NBAYearMonth', { return sequelize.define('T_NBAYearMonth', {
MatchTypeId: { MatchTypeId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Odds100', { return sequelize.define('T_Odds100', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_OddsBigSmall', { return sequelize.define('T_OddsBigSmall', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_OddsHalfBigSmall', { return sequelize.define('T_OddsHalfBigSmall', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_OddsHalfLetGoal', { return sequelize.define('T_OddsHalfLetGoal', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_OddsLetGoal', { return sequelize.define('T_OddsLetGoal', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_OddsStandard', { return sequelize.define('T_OddsStandard', {
MatchId: { MatchId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Player', { return sequelize.define('T_Player', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_PlayerInTeam', { return sequelize.define('T_PlayerInTeam', {
PlayerId: { PlayerId: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_State', { return sequelize.define('T_State', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_Team', { return sequelize.define('T_Team', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('T_WordRank', { return sequelize.define('T_WordRank', {
Location: { Location: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('chart_issue', { return sequelize.define('chart_issue', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('chart_lottery', { return sequelize.define('chart_lottery', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_issue', { return sequelize.define('core_issue', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_issue_sub', { return sequelize.define('core_issue_sub', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_issue', { return sequelize.define('core_issue', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_lottery', { return sequelize.define('core_lottery', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_match', { return sequelize.define('core_match', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_news', { return sequelize.define('core_news', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('core_news_comment', { return sequelize.define('core_news_comment', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('cps_expert', { return sequelize.define('cps_expert', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('cps_user', { return sequelize.define('cps_user', {
id: { id: {
......
...@@ -227,7 +227,6 @@ const ms_chart_field = sequelize.import('ms_chart_field'); ...@@ -227,7 +227,6 @@ const ms_chart_field = sequelize.import('ms_chart_field');
exports.ms_chart_field = ms_chart_field; exports.ms_chart_field = ms_chart_field;
const ms_chart_router = sequelize.import('ms_chart_router'); const ms_chart_router = sequelize.import('ms_chart_router');
exports.ms_chart_router = ms_chart_router; exports.ms_chart_router = ms_chart_router;
// sporttery_pool
const sporttery_pool = sequelize.import('sporttery_pool'); const sporttery_pool = sequelize.import('sporttery_pool');
exports.sporttery_pool = sporttery_pool; exports.sporttery_pool = sporttery_pool;
const ms_coupons = sequelize.import('ms_coupons'); const ms_coupons = sequelize.import('ms_coupons');
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('lottery_shop_info', { return sequelize.define('lottery_shop_info', {
id: { id: {
...@@ -12,11 +11,6 @@ module.exports = function (sequelize, DataTypes) { ...@@ -12,11 +11,6 @@ module.exports = function (sequelize, DataTypes) {
allowNull: true, allowNull: true,
comment: '彩店名称' comment: '彩店名称'
}, },
// real_name: {
// type: DataTypes.STRING(50),
// allowNull: true,
// comment: '店主姓名'
// },
type: { type: {
type: DataTypes.INTEGER(2), type: DataTypes.INTEGER(2),
allowNull: true, allowNull: true,
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('lottery_shop_relation', { return sequelize.define('lottery_shop_relation', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('match', { return sequelize.define('match', {
match_time: { match_time: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('match_inputs', { return sequelize.define('match_inputs', {
id: { id: {
......
/*********************************************************************
# Autor: sandyWqh
# Date: 2020-11-02 17:42:13
# Description:
# Version: 1.0
# LastEditors: sandyWqh
# LastEditTime: 2020-11-11 09:36:59
**********************************************************************/
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_admin_menu', { return sequelize.define('ms_admin_menu', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_admin_role', { return sequelize.define('ms_admin_role', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_app_log', { return sequelize.define('ms_app_log', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_appversion', { return sequelize.define('ms_appversion', {
Id: { Id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_article', { return sequelize.define('ms_article', {
uuid: { uuid: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_company', { return sequelize.define('ms_basketball_company', {
ms_nba_company_id: { ms_nba_company_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_competition', { return sequelize.define('ms_basketball_competition', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_competition_history', { return sequelize.define('ms_basketball_competition_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_game', { return sequelize.define('ms_basketball_game', {
id: { id: {
......
/*********************************************************************
# Autor: sandyWqh
# Date: 2021-01-08 15:20:22
# Description:
# Version: 1.0
# LastEditors: sandyWqh
# LastEditTime: 2021-03-16 15:33:12
**********************************************************************/
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_game_odds', { return sequelize.define('ms_basketball_game_odds', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_player', { return sequelize.define('ms_basketball_player', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_state', { return sequelize.define('ms_basketball_state', {
ms_nba_state_id: { ms_nba_state_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_basketball_team', { return sequelize.define('ms_basketball_team', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_chart_field', { return sequelize.define('ms_chart_field', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_chart_router', { return sequelize.define('ms_chart_router', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_coupons', { return sequelize.define('ms_coupons', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_message_stat', { return sequelize.define('ms_message_stat', {
message_stat_id: { message_stat_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_order', { return sequelize.define('ms_order', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_order_middle', { return sequelize.define('ms_order_middle', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_pay_type', { return sequelize.define('ms_pay_type', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_recharge_channels', { return sequelize.define('ms_recharge_channels', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_schedule', { return sequelize.define('ms_schedule', {
ms_schedule_id: { ms_schedule_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_base_surface', { return sequelize.define('ms_soccer_base_surface', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_club_rank', { return sequelize.define('ms_soccer_club_rank', {
club_id: { club_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_coach_rank', { return sequelize.define('ms_soccer_coach_rank', {
year: { year: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_company', { return sequelize.define('ms_soccer_company', {
ms_company_id: { ms_company_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_competition', { return sequelize.define('ms_soccer_competition', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_competition_history', { return sequelize.define('ms_soccer_competition_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_game', { return sequelize.define('ms_soccer_game', {
id: { id: {
...@@ -413,7 +412,6 @@ module.exports = function (sequelize, DataTypes) { ...@@ -413,7 +412,6 @@ module.exports = function (sequelize, DataTypes) {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true allowNull: true
}, },
//oversea_info_0
oversea_info_0: { oversea_info_0: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true allowNull: true
...@@ -442,12 +440,10 @@ module.exports = function (sequelize, DataTypes) { ...@@ -442,12 +440,10 @@ module.exports = function (sequelize, DataTypes) {
type: DataTypes.STRING(20), type: DataTypes.STRING(20),
allowNull: true allowNull: true
}, },
//标签
tags: { tags: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true allowNull: true
}, },
//倍率
odds: { odds: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true allowNull: true
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_game_event', { return sequelize.define('ms_soccer_game_event', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_game_lineup', { return sequelize.define('ms_soccer_game_lineup', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_hdaodds_814', { return sequelize.define('ms_soccer_hdaodds_814', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_nation_rank', { return sequelize.define('ms_soccer_nation_rank', {
national_id: { national_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_player', { return sequelize.define('ms_soccer_player', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_player_rank', { return sequelize.define('ms_soccer_player_rank', {
player_Id: { player_Id: {
......
/*********************************************************************
# Autor: sandyWqh
# Date: 2021-03-16 15:31:34
# Description:
# Version: 1.0
# LastEditors : sandyWqh
# LastEditTime : 2021-04-08 16:17:17
**********************************************************************/
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_result_trend', { return sequelize.define('ms_soccer_result_trend', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_state', { return sequelize.define('ms_soccer_state', {
ms_state_id: { ms_state_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_soccer_team', { return sequelize.define('ms_soccer_team', {
id: { id: {
...@@ -206,12 +205,10 @@ module.exports = function (sequelize, DataTypes) { ...@@ -206,12 +205,10 @@ module.exports = function (sequelize, DataTypes) {
type: DataTypes.STRING(50), type: DataTypes.STRING(50),
allowNull: true allowNull: true
}, },
//predictz_name
predictz_name: { predictz_name: {
type: DataTypes.STRING(200), type: DataTypes.STRING(200),
allowNull: true allowNull: true
}, },
//footballsuper_name
footballsuper_name: { footballsuper_name: {
type: DataTypes.STRING(200), type: DataTypes.STRING(200),
allowNull: true allowNull: true
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_trend_stat', { return sequelize.define('ms_trend_stat', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_user', { return sequelize.define('ms_user', {
user_id: { user_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_user_attention', { return sequelize.define('ms_user_attention', {
uuid: { uuid: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_user_charge', { return sequelize.define('ms_user_charge', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_user_log', { return sequelize.define('ms_user_log', {
uuid: { uuid: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_user_operation', { return sequelize.define('ms_user_operation', {
uuid: { uuid: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_video_room', { return sequelize.define('ms_video_room', {
uuid: { uuid: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('ms_xcx_message', { return sequelize.define('ms_xcx_message', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('prediction_dictionary', { return sequelize.define('prediction_dictionary', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('prediction_expert', { return sequelize.define('prediction_expert', {
expertid: { expertid: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('prediction_result', { return sequelize.define('prediction_result', {
dbno: { dbno: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('prediction_template', { return sequelize.define('prediction_template', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('sporttery_lineups', { return sequelize.define('sporttery_lineups', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('sporttery_match', { return sequelize.define('sporttery_match', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('sporttery_match_lineup', { return sequelize.define('sporttery_match_lineup', {
m_id: { m_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('sporttery_pool', { return sequelize.define('sporttery_pool', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_history_same_odds', { return sequelize.define('stat_history_same_odds', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_13', { return sequelize.define('stat_inner_prediction_13', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_13_pre', { return sequelize.define('stat_inner_prediction_13_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_3', { return sequelize.define('stat_inner_prediction_3', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_39', { return sequelize.define('stat_inner_prediction_39', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_39_history', { return sequelize.define('stat_inner_prediction_39_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_39_pre', { return sequelize.define('stat_inner_prediction_39_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_3_pre', { return sequelize.define('stat_inner_prediction_3_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_5', { return sequelize.define('stat_inner_prediction_5', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_5_history', { return sequelize.define('stat_inner_prediction_5_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_5_pre', { return sequelize.define('stat_inner_prediction_5_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_6', { return sequelize.define('stat_inner_prediction_6', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_63', { return sequelize.define('stat_inner_prediction_63', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_63_history', { return sequelize.define('stat_inner_prediction_63_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_63_pre', { return sequelize.define('stat_inner_prediction_63_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_63_temp', { return sequelize.define('stat_inner_prediction_63_temp', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_64', { return sequelize.define('stat_inner_prediction_64', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_64_pre', { return sequelize.define('stat_inner_prediction_64_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_6_history', { return sequelize.define('stat_inner_prediction_6_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_6_pre', { return sequelize.define('stat_inner_prediction_6_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_6_temp', { return sequelize.define('stat_inner_prediction_6_temp', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_72', { return sequelize.define('stat_inner_prediction_72', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_72_pre', { return sequelize.define('stat_inner_prediction_72_pre', {
id: { id: {
...@@ -115,7 +114,6 @@ module.exports = function (sequelize, DataTypes) { ...@@ -115,7 +114,6 @@ module.exports = function (sequelize, DataTypes) {
type: DataTypes.STRING(2000), type: DataTypes.STRING(2000),
allowNull: true allowNull: true
}, },
// 价格
price: { price: {
type: DataTypes.DECIMAL, type: DataTypes.DECIMAL,
allowNull: true allowNull: true
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_8', { return sequelize.define('stat_inner_prediction_8', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_8_pre', { return sequelize.define('stat_inner_prediction_8_pre', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_inner_prediction_8_temp', { return sequelize.define('stat_inner_prediction_8_temp', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('stat_simple_predict', { return sequelize.define('stat_simple_predict', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('tools_ledger', { return sequelize.define('tools_ledger', {
id: { id: {
......
...@@ -5,26 +5,6 @@ module.exports = function (sequelize, DataTypes) { ...@@ -5,26 +5,6 @@ module.exports = function (sequelize, DataTypes) {
allowNull: false, allowNull: false,
primaryKey: true, primaryKey: true,
}, },
// asia:{
// type: DataTypes.JSON,
// allowNull: false
// },
// europe:{
// type: DataTypes.JSON,
// allowNull: false
// },
// user:{
// type: DataTypes.JSON,
// allowNull: false
// },
// lstp:{
// type: DataTypes.JSON,
// allowNull: false
// },
// avg:{
// type: DataTypes.JSON,
// allowNull: false
// },
xxzs: { xxzs: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true allowNull: true
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_competitions', { return sequelize.define('transfer_competitions', {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_national', { return sequelize.define('transfer_national', {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_players', { return sequelize.define('transfer_players', {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_players_history_transfer', { return sequelize.define('transfer_players_history_transfer', {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_players_injury_transfer', { return sequelize.define('transfer_players_injury_transfer', {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_players_workers_transfer', { return sequelize.define('transfer_players_workers_transfer', {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
/* jshint indent: 2 */
const moment = require("moment"); const moment = require("moment");
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('transfer_teams', { return sequelize.define('transfer_teams', {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('coache_history', { return sequelize.define('coache_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('coache_honors', { return sequelize.define('coache_honors', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('competition_point_rank', { return sequelize.define('competition_point_rank', {
season_id: { season_id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('competition_statistics_details', { return sequelize.define('competition_statistics_details', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('europe_companys', { return sequelize.define('europe_companys', {
id: { id: {
......
...@@ -95,18 +95,6 @@ const odds_corner_ball_history = sequelize.import("odds_corner_ball_history"); ...@@ -95,18 +95,6 @@ const odds_corner_ball_history = sequelize.import("odds_corner_ball_history");
exports.odds_corner_ball_history = odds_corner_ball_history; exports.odds_corner_ball_history = odds_corner_ball_history;
const season_ranks = sequelize.import("season_ranks"); const season_ranks = sequelize.import("season_ranks");
exports.season_ranks = season_ranks; exports.season_ranks = season_ranks;
// coache_history.ts
// coache_honors.ts
// intelligence.ts
// player_honors.ts
// player_transfer.ts
// season_best_lineup.ts
// team_honor.ts
// team_injury.ts
// team_rank_club.ts
// team_rank_fifa_men.ts
// team_rank_fifa_women.ts
// team_squad.ts
const coache_history = sequelize.import("coache_history"); const coache_history = sequelize.import("coache_history");
exports.coache_history = coache_history; exports.coache_history = coache_history;
const coache_honors = sequelize.import("coache_honors"); const coache_honors = sequelize.import("coache_honors");
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('intelligence', { return sequelize.define('intelligence', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('match_history_compensation', { return sequelize.define('match_history_compensation', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_asian_roll_ball', { return sequelize.define('odds_asian_roll_ball', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_big_small_history', { return sequelize.define('odds_big_small_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_big_small_immedicate', { return sequelize.define('odds_big_small_immedicate', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_big_small_roll_ball', { return sequelize.define('odds_big_small_roll_ball', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_corner_ball_history', { return sequelize.define('odds_corner_ball_history', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_corner_ball_immediate', { return sequelize.define('odds_corner_ball_immediate', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_corner_roll_ball', { return sequelize.define('odds_corner_roll_ball', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_europe_roll_ball', { return sequelize.define('odds_europe_roll_ball', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('odds_european_immediate', { return sequelize.define('odds_european_immediate', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('player_honors', { return sequelize.define('player_honors', {
id: { id: {
......
...@@ -11,13 +11,6 @@ module.exports = function (sequelize, DataTypes) { ...@@ -11,13 +11,6 @@ module.exports = function (sequelize, DataTypes) {
allowNull: true, allowNull: true,
comment: "球员统计数据" comment: "球员统计数据"
}, },
// updated_at: {
// type: DataTypes.BIGINT,
// allowNull: true,
// get(){
// return moment(this.getDataValue('updated_at')).format('YYYY-MM-DD HH:mm:ss');
// }
// },
created_at: { created_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: true allowNull: true
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('player_transfer', { return sequelize.define('player_transfer', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('season_best_lineup', { return sequelize.define('season_best_lineup', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('season_bracket_matches', { return sequelize.define('season_bracket_matches', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('team_honor', { return sequelize.define('team_honor', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('team_injury', { return sequelize.define('team_injury', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('team_rank_club', { return sequelize.define('team_rank_club', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('team_rank_fifa_men', { return sequelize.define('team_rank_fifa_men', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('team_rank_fifa_women', { return sequelize.define('team_rank_fifa_women', {
id: { id: {
......
/* jshint indent: 2 */
module.exports = function (sequelize, DataTypes) { module.exports = function (sequelize, DataTypes) {
return sequelize.define('team_squad', { return sequelize.define('team_squad', {
id: { id: {
......
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.calc_pre_win = exports.create_match_data = void 0; exports.calc_pre_win = exports.create_match_data = void 0;
//处理纳米数据,共用调用
const info_db = require("../info_mysql/table"); const info_db = require("../info_mysql/table");
const nami_db = require("../nami_mysql/table"); const nami_db = require("../nami_mysql/table");
const moment = require("moment"); const moment = require("moment");
...@@ -33,7 +32,6 @@ ORDER BY match_time desc LIMIT 10;`) ...@@ -33,7 +32,6 @@ ORDER BY match_time desc LIMIT 10;`)
if (v[0].rating < 1) { if (v[0].rating < 1) {
continue; continue;
} }
//select short_name_zh,logo from players where id in (1332014)
var res = await nami_db.players.findAll({ var res = await nami_db.players.findAll({
attributes: ['id', 'short_name_zh', 'logo'], attributes: ['id', 'short_name_zh', 'logo'],
where: { where: {
...@@ -289,16 +287,6 @@ from odds_european_immediate where id= :matchid`, { ...@@ -289,16 +287,6 @@ from odds_european_immediate where id= :matchid`, {
if (!data || data.length != 2 || !data[0][0].s || !data[1][0].s) { if (!data || data.length != 2 || !data[0][0].s || !data[1][0].s) {
return null; return null;
} }
// 亚洲态度:取全部公司的均值后,计算百分比,根据下面方式取概率大的一方加平。
// 如:通过多家亚指公司算出均值如下:
// 1.01 -0.78 0.85
// 第一步:先把本金加上水位都加1.则为2.01 -0.78 1.85
// 第二步:让球方为主队,则主水2.01+盘口0.78=2.79
// 第三步:用2.79 1.85计算百分比:
// 胜:4.64/(1.23+1.85)=60%
// 负:1-60%=40%
// 平:平固定算20%;
// 取概率大的一方加平,则可取:胜 平 百分比为80%。
var asia_data = data[0][0]; var asia_data = data[0][0];
var asia; var asia;
if (asia_data.p > 0) { if (asia_data.p > 0) {
...@@ -333,34 +321,6 @@ from odds_european_immediate where id= :matchid`, { ...@@ -333,34 +321,6 @@ from odds_european_immediate where id= :matchid`, {
}; };
} }
async function lstp(sp) { async function lstp(sp) {
// let sql = `
// select game_id as GameId,
// competition_id,
// score as Score,
// host_id as SportsdtHostId,
// guest_id as SportsdtGuestId,
// host_name,
// guest_name,
// game_date as Date,
// game_name,
// yiqiu_game_id,
// JSON_ARRAY(first_odds_host,first_odds_guest,first_odds_handicap,sport_odds_host,sport_odds_guest,sport_odds_handicap) as Data
// from db_info.stat_soccer_ahodds
// where first_odds_host=${sp[0]}
// and first_odds_guest=${sp[1]}
// and first_odds_handicap=${sp[2]}
// and game_date<'${moment().add(-1, 'days').format("YYYY-MM-DD HH:mm:ss")}'
// order by game_date desc
// limit 300 `
// let list = await info_db.sequelize.query(sql)
// if (list[0].length > 0) {
// list = list[0]
// } else {
// list = []
// }
// if (list && list.length) {
// return;
// }
if (sp[0] < sp[2]) { if (sp[0] < sp[2]) {
return { return {
rate: (1 / sp[0] + 1 / sp[1]) / (1 / sp[0] + 1 / sp[1] + 1 / sp[2]), rate: (1 / sp[0] + 1 / sp[1]) / (1 / sp[0] + 1 / sp[1] + 1 / sp[2]),
...@@ -373,16 +333,9 @@ async function lstp(sp) { ...@@ -373,16 +333,9 @@ async function lstp(sp) {
pre: ['负', '平'] pre: ['负', '平']
}; };
} }
// list = JSON.parse(JSON.stringify(list))
// list = _.filter(list, (o) => {
// return o.host_name && o.guest_name
// })
// list = _.unionBy(list, "yiqiu_game_id");
// return base.getItemResultByList(list, true)
return null; return null;
} }
async function start1(issue_name) { async function start1(issue_name) {
// var issue_name = moment().format('YYYY-MM-DD');
var data = await info_db.ms_soccer_game.findAll({ var data = await info_db.ms_soccer_game.findAll({
attributes: ['id', 'leisu_match_id', 'odds', 'yiqiu_host_team_id', 'yiqiu_guest_team_id', 'leisu_host_id', 'leisu_guest_id', 'match_time'], attributes: ['id', 'leisu_match_id', 'odds', 'yiqiu_host_team_id', 'yiqiu_guest_team_id', 'leisu_host_id', 'leisu_guest_id', 'match_time'],
where: { where: {
...@@ -486,7 +439,6 @@ async function start1(issue_name) { ...@@ -486,7 +439,6 @@ async function start1(issue_name) {
model.meeting = await meeting([item.yiqiu_host_team_id, item.yiqiu_guest_team_id], item.match_time); model.meeting = await meeting([item.yiqiu_host_team_id, item.yiqiu_guest_team_id], item.match_time);
var history_host_team = await history_team(item.yiqiu_host_team_id, true, item.match_time); var history_host_team = await history_team(item.yiqiu_host_team_id, true, item.match_time);
var history_guest_team = await history_team(item.yiqiu_guest_team_id, false, item.match_time); var history_guest_team = await history_team(item.yiqiu_guest_team_id, false, item.match_time);
// { data: res, avg_jq: time > 0 ? 1.0 * sum_jq_time / time : 0, sum_jq, host_jq }
model.history = [history_host_team.data, history_guest_team.data, model.history = [history_host_team.data, history_guest_team.data,
{ sum_jq: history_host_team.sum_jq, host_jq: history_host_team.host_jq, spf: history_host_team.spf }, { sum_jq: history_host_team.sum_jq, host_jq: history_host_team.host_jq, spf: history_host_team.spf },
{ sum_jq: history_guest_team.sum_jq, host_jq: history_guest_team.host_jq, spf: history_guest_team.spf } { sum_jq: history_guest_team.sum_jq, host_jq: history_guest_team.host_jq, spf: history_guest_team.spf }
...@@ -497,20 +449,11 @@ async function start1(issue_name) { ...@@ -497,20 +449,11 @@ async function start1(issue_name) {
if (sum_avg_jq > 6) if (sum_avg_jq > 6)
sum_avg_jq = 6.1; sum_avg_jq = 6.1;
model.pre[1] = [Math.floor(sum_avg_jq), Math.ceil(sum_avg_jq)]; model.pre[1] = [Math.floor(sum_avg_jq), Math.ceil(sum_avg_jq)];
// if (model.meeting && model.meeting.sum_jq && model.meeting.z_spf.length) {
// var avg_jq = model.meeting.sum_jq * 1.0 / model.meeting.z_spf.length;
// model.pre[1] = [Math.floor(avg_jq), Math.ceil(avg_jq)];
// } else if (history_host_team.sum_jq && history_guest_team.sum_jq) {
// var avg_jq = (1.0 * history_host_team.sum_jq / history_host_team.data.length + 1.0 * history_guest_team.sum_jq / history_guest_team.data.length) / 2.0;
// model.pre[1] = [Math.floor(avg_jq), Math.ceil(avg_jq)];
// }
model.pre[1] = _.uniq(model.pre[1]); model.pre[1] = _.uniq(model.pre[1]);
var h = await trait_team(item.yiqiu_host_team_id, item.match_time); var h = await trait_team(item.yiqiu_host_team_id, item.match_time);
var g = await trait_team(item.yiqiu_guest_team_id, item.match_time); var g = await trait_team(item.yiqiu_guest_team_id, item.match_time);
model.trait = [h, g]; model.trait = [h, g];
try { try {
// 胜平负 总进球 比分 半全场
//[["胜", "平"], [3, 4]]
model.pre_all = [...model.pre, ...predictScoreAndHalfFull(model.pre)]; model.pre_all = [...model.pre, ...predictScoreAndHalfFull(model.pre)];
} }
catch (error) { catch (error) {
...@@ -521,45 +464,33 @@ async function start1(issue_name) { ...@@ -521,45 +464,33 @@ async function start1(issue_name) {
} }
} }
function predictScoreAndHalfFull(pre) { function predictScoreAndHalfFull(pre) {
// 输入参数结构: pre = [["胜", "平"], [3, 4]]
const [winDrawLose, totalGoals] = pre; const [winDrawLose, totalGoals] = pre;
// 比分预测结果
const scorePredictions = []; const scorePredictions = [];
// 半全场预测结果
const halfFullPredictions = []; const halfFullPredictions = [];
// 根据胜平负和总进球生成比分预测
for (const outcome of winDrawLose) { for (const outcome of winDrawLose) {
for (const goals of totalGoals) { for (const goals of totalGoals) {
// 随机生成2-4个比分预测
const count = Math.floor(Math.random() * 3) + 2; const count = Math.floor(Math.random() * 3) + 2;
for (let i = 0; i < count; i++) { for (let i = 0; i < count; i++) {
if (outcome === "胜") { if (outcome === "胜") {
// 主队胜的比分: 主队进球 > 客队进球,且总和=goals
// 主队至少进1球,最多进goals-1球
// 客队最多进主队进球-1球
const minHome = Math.max(1, Math.ceil(goals / 2)); const minHome = Math.max(1, Math.ceil(goals / 2));
const maxHome = goals; const maxHome = goals;
if (minHome > maxHome) if (minHome > maxHome)
continue; // 无解情况跳过 continue;
const home = Math.floor(Math.random() * (maxHome - minHome + 1)) + minHome; const home = Math.floor(Math.random() * (maxHome - minHome + 1)) + minHome;
const away = goals - home; const away = goals - home;
scorePredictions.push(`${home}-${away}`); scorePredictions.push(`${home}-${away}`);
} }
else if (outcome === "平") { else if (outcome === "平") {
// 平局的比分: 主队进球 = 客队进球,且总和=goals
if (goals % 2 === 0) { if (goals % 2 === 0) {
const score = goals / 2; const score = goals / 2;
scorePredictions.push(`${score}-${score}`); scorePredictions.push(`${score}-${score}`);
} }
} }
else if (outcome === "负") { else if (outcome === "负") {
// 客队胜的比分: 主队进球 < 客队进球,且总和=goals
// 客队至少进1球,最多进goals-1球
// 主队最多进客队进球-1球
const minAway = Math.max(1, Math.ceil(goals / 2)); const minAway = Math.max(1, Math.ceil(goals / 2));
const maxAway = goals; const maxAway = goals;
if (minAway > maxAway) if (minAway > maxAway)
continue; // 无解情况跳过 continue;
const away = Math.floor(Math.random() * (maxAway - minAway + 1)) + minAway; const away = Math.floor(Math.random() * (maxAway - minAway + 1)) + minAway;
const home = goals - away; const home = goals - away;
scorePredictions.push(`${home}-${away}`); scorePredictions.push(`${home}-${away}`);
...@@ -567,29 +498,23 @@ function predictScoreAndHalfFull(pre) { ...@@ -567,29 +498,23 @@ function predictScoreAndHalfFull(pre) {
} }
} }
} }
// 根据胜平负生成半全场预测
for (const outcome of winDrawLose) { for (const outcome of winDrawLose) {
// 随机生成2-4个半全场预测
const count = Math.floor(Math.random() * 3) + 2; const count = Math.floor(Math.random() * 3) + 2;
for (let i = 0; i < count; i++) { for (let i = 0; i < count; i++) {
if (outcome === "胜") { if (outcome === "胜") {
// 可能的情况: 胜胜, 平胜
const options = ["胜胜", "平胜"]; const options = ["胜胜", "平胜"];
halfFullPredictions.push(options[Math.floor(Math.random() * options.length)]); halfFullPredictions.push(options[Math.floor(Math.random() * options.length)]);
} }
else if (outcome === "平") { else if (outcome === "平") {
// 可能的情况: 平平, 胜平, 负平
const options = ["平平", "胜平", "负平"]; const options = ["平平", "胜平", "负平"];
halfFullPredictions.push(options[Math.floor(Math.random() * options.length)]); halfFullPredictions.push(options[Math.floor(Math.random() * options.length)]);
} }
else if (outcome === "负") { else if (outcome === "负") {
// 可能的情况: 负负, 平负
const options = ["负负", "平负"]; const options = ["负负", "平负"];
halfFullPredictions.push(options[Math.floor(Math.random() * options.length)]); halfFullPredictions.push(options[Math.floor(Math.random() * options.length)]);
} }
} }
} }
// 去重并限制数量
const uniqueScores = [...new Set(scorePredictions)].slice(0, 4); const uniqueScores = [...new Set(scorePredictions)].slice(0, 4);
const uniqueHalfFull = [...new Set(halfFullPredictions)].slice(0, 4); const uniqueHalfFull = [...new Set(halfFullPredictions)].slice(0, 4);
return [uniqueScores, uniqueHalfFull]; return [uniqueScores, uniqueHalfFull];
...@@ -675,7 +600,6 @@ async function calc_pre_win() { ...@@ -675,7 +600,6 @@ async function calc_pre_win() {
await (0, common_1.sleep)(1000); await (0, common_1.sleep)(1000);
} }
exports.calc_pre_win = calc_pre_win; exports.calc_pre_win = calc_pre_win;
//生成比赛数据
async function create_match_data() { async function create_match_data() {
for (let index = -3; index < 1; index++) { for (let index = -3; index < 1; index++) {
await start1(moment().add(-index, 'days').format('YYYY-MM-DD')).catch(a => console.log(a)); await start1(moment().add(-index, 'days').format('YYYY-MM-DD')).catch(a => console.log(a));
......
...@@ -13,12 +13,7 @@ if (global['app_config'].job.enable_piscina) { ...@@ -13,12 +13,7 @@ if (global['app_config'].job.enable_piscina) {
minThreads: 1, minThreads: 1,
maxQueue: 100, maxQueue: 100,
idleTimeout: 60000, idleTimeout: 60000,
concurrentTasksPerWorker: 5, //单个工作线程同时处理的任务数 任务包含异步操作时可以考虑增加 concurrentTasksPerWorker: 5,
// resourceLimits: {
// maxOldGenerationSizeMb: 1024,
// maxYoungGenerationSizeMb: 256,
// stackSizeMb: 4,
// },
}); });
async function run_task(args) { async function run_task(args) {
return piscina.run(args); return piscina.run(args);
......
...@@ -2,18 +2,9 @@ ...@@ -2,18 +2,9 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.demo_test = exports.demoJobHandler = void 0; exports.demo_test = exports.demoJobHandler = void 0;
const common_1 = require("../../libs/common"); const common_1 = require("../../libs/common");
/**
* demo任务
* @param {any} jobLogger 由xxl-job组件定义的任务logger,会将日志内容输出到文件,可在调度中心查看执行日志
* @param {{ jobParam1: any, jobParam2: any }} jobParams 任务参数
* @param {Object} context 任务上下文
* @return {Promise<void>} 函数必须返回一个 promise
*/
async function demoJobHandler(jobLogger, jobParams, context) { async function demoJobHandler(jobLogger, jobParams, context) {
// jobLogger.debug('params: %o, context: %o', jobParams, context)
for (let i = 1; i < 10; i++) { for (let i = 1; i < 10; i++) {
await (0, common_1.sleep)(1000); await (0, common_1.sleep)(1000);
// jobLogger.debug(`${i}s passed`)
} }
return { result: 'return value' }; return { result: 'return value' };
} }
...@@ -22,7 +13,6 @@ async function demo_test(jobLogger, jobParams, context) { ...@@ -22,7 +13,6 @@ async function demo_test(jobLogger, jobParams, context) {
jobLogger.debug('params: %o, context: %o', jobParams, context); jobLogger.debug('params: %o, context: %o', jobParams, context);
for (let i = 1; i < 5; i++) { for (let i = 1; i < 5; i++) {
await (0, common_1.sleep)(1000); await (0, common_1.sleep)(1000);
// jobLogger.debug(`${i}s passed`)
} }
return { result: 'return value' }; return { result: 'return value' };
} }
......
...@@ -2,28 +2,16 @@ ...@@ -2,28 +2,16 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs"); const fs = require("fs");
const path = require('path'); const path = require('path');
//多线程情况下 需要重新初始化config配置
require('../../config/index'); require('../../config/index');
const job_handlers = new Map(); const job_handlers = new Map();
/**
* 递归加载指定目录下所有 .js 文件
* @param {string|string[]} dirPaths 要加载的目录路径(可以是字符串或数组)
* @param {object} [options] 配置选项
* @param {boolean} [options.ignoreNodeModules=true] 是否忽略 node_modules 目录
* @param {RegExp|function} [options.filter] 自定义过滤条件
* @returns {object} 包含所有加载模块的对象(以相对路径为键)
*/
function loadAllJSFiles(dirPaths, options = {}) { function loadAllJSFiles(dirPaths, options = {}) {
const { ignoreNodeModules = true, filter = null } = options; const { ignoreNodeModules = true, filter = null } = options;
const loadedModules = {}; const loadedModules = {};
// 统一处理为数组形式
if (!Array.isArray(dirPaths)) { if (!Array.isArray(dirPaths)) {
dirPaths = [dirPaths]; dirPaths = [dirPaths];
} }
dirPaths.forEach(dirPath => { dirPaths.forEach(dirPath => {
// 解析为绝对路径
const absoluteDir = path.resolve(dirPath); const absoluteDir = path.resolve(dirPath);
// 递归读取目录
function scanDirectory(currentDir, relativePath = '') { function scanDirectory(currentDir, relativePath = '') {
const files = fs.readdirSync(currentDir); const files = fs.readdirSync(currentDir);
files.forEach(file => { files.forEach(file => {
...@@ -31,11 +19,9 @@ function loadAllJSFiles(dirPaths, options = {}) { ...@@ -31,11 +19,9 @@ function loadAllJSFiles(dirPaths, options = {}) {
const stat = fs.statSync(fullPath); const stat = fs.statSync(fullPath);
const newRelativePath = path.join(relativePath, file); const newRelativePath = path.join(relativePath, file);
if (stat.isDirectory()) { if (stat.isDirectory()) {
// 跳过 node_modules 目录(如果配置了忽略)
if (ignoreNodeModules && file === 'node_modules') { if (ignoreNodeModules && file === 'node_modules') {
return; return;
} }
// 递归扫描子目录
scanDirectory(fullPath, newRelativePath); scanDirectory(fullPath, newRelativePath);
} }
else if (path.extname(file) === '.js' && else if (path.extname(file) === '.js' &&
...@@ -43,7 +29,6 @@ function loadAllJSFiles(dirPaths, options = {}) { ...@@ -43,7 +29,6 @@ function loadAllJSFiles(dirPaths, options = {}) {
(typeof filter === 'function' && filter(fullPath)) || (typeof filter === 'function' && filter(fullPath)) ||
(filter instanceof RegExp && filter.test(fullPath)))) { (filter instanceof RegExp && filter.test(fullPath)))) {
try { try {
// 加载模块并存储
const module = require(fullPath); const module = require(fullPath);
const moduleKey = newRelativePath.replace(/\.js$/, ''); const moduleKey = newRelativePath.replace(/\.js$/, '');
loadedModules[moduleKey] = module; loadedModules[moduleKey] = module;
...@@ -83,7 +68,6 @@ function wrapper_task(func) { ...@@ -83,7 +68,6 @@ function wrapper_task(func) {
continue; continue;
} }
job_handlers.set(key2, wrapper_task(m[key2])); job_handlers.set(key2, wrapper_task(m[key2]));
// console.log(key2)
} }
} }
} }
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.Executor = void 0; exports.Executor = void 0;
const job_manager_1 = require("./job_manager"); const job_manager_1 = require("./job_manager");
// const logger = require('./logger')
// const log = logger('xxl-job-executor')
const axios_1 = require("axios"); const axios_1 = require("axios");
class Executor { class Executor {
executorKey; executorKey;
...@@ -12,14 +10,6 @@ class Executor { ...@@ -12,14 +10,6 @@ class Executor {
executorUrl; executorUrl;
jobHandlers; jobHandlers;
jobManager; jobManager;
/**
* @param {string} executorKey
* @param {string} scheduleCenterUrl
* @param {string} accessToken
* @param {string} jobLogPath
* @param {Map} jobHandlers
* @param {*} context
*/
constructor(executorKey, scheduleCenterUrl, accessToken, jobLogPath, jobHandlers, context) { constructor(executorKey, scheduleCenterUrl, accessToken, jobLogPath, jobHandlers, context) {
this.executorKey = executorKey; this.executorKey = executorKey;
this.scheduleCenterUrl = scheduleCenterUrl; this.scheduleCenterUrl = scheduleCenterUrl;
...@@ -27,16 +17,10 @@ class Executor { ...@@ -27,16 +17,10 @@ class Executor {
this.jobHandlers = jobHandlers; this.jobHandlers = jobHandlers;
this.jobManager = new job_manager_1.JobManager(jobLogPath, context); this.jobManager = new job_manager_1.JobManager(jobLogPath, context);
} }
/**
* 应用执行器中间件
* @param {*} app
* @param {string} domain
*/
applyMiddleware({ app, domain }) { applyMiddleware({ app, domain }) {
this.executorUrl = domain; this.executorUrl = domain;
const express = require('express'); const express = require('express');
var router = new express.Router(); var router = new express.Router();
//请求认证
router.use(async (req, res, next) => { router.use(async (req, res, next) => {
res.status(200); res.status(200);
const token = req.headers && req.headers['xxl-job-access-token']; const token = req.headers && req.headers['xxl-job-access-token'];
...@@ -53,11 +37,6 @@ class Executor { ...@@ -53,11 +37,6 @@ class Executor {
this.addJobRoutes(router); this.addJobRoutes(router);
app.use(router); app.use(router);
} }
/**
* 添加xxl-job相关的路由,供调度中心访问
* @param {express.Router} router
* @param {string} baseUri
*/
addJobRoutes(router) { addJobRoutes(router) {
router.post(`/beat`, async (req, res, next) => { router.post(`/beat`, async (req, res, next) => {
res.send(this.beat()); res.send(this.beat());
...@@ -77,31 +56,12 @@ class Executor { ...@@ -77,31 +56,12 @@ class Executor {
res.send(data); res.send(data);
}); });
} }
/**
* 心跳检测:调度中心检测执行器是否在线时使用
* @return {{code: number, msg: string}}
*/
beat() { beat() {
return { code: 200, msg: 'success' }; return { code: 200, msg: 'success' };
} }
/**
* 忙碌检测:调度中心检测指定执行器上指定任务是否忙碌(运行中)时使用
* @param {string} jobId - 任务ID
* @return {{code: number, msg: string}}
*/
idleBeat(jobId) { idleBeat(jobId) {
return (this.jobManager.hasJob(jobId) ? { code: 500, msg: 'busy' } : { code: 200, msg: 'idle' }); return (this.jobManager.hasJob(jobId) ? { code: 500, msg: 'busy' } : { code: 200, msg: 'idle' });
} }
/**
* 触发任务执行
* @param {number} jobId - 任务ID
* @param {string} handlerName - 任务的handler名字
* @param {string} jobJsonParams - 任务参数
* @param {number} executorTimeout - 任务超时时间,单位秒,大于零时生效
* @param {number} logId - 本次调度日志ID
* @param {number} - 本次调度日志时间
* @return {{code: number, msg: string}}
*/
run({ jobId, executorHandler: handlerName, executorParams: jobJsonParams, executorTimeout, logId, logDateTime }) { run({ jobId, executorHandler: handlerName, executorParams: jobJsonParams, executorTimeout, logId, logDateTime }) {
const jobHandler = this.jobHandlers.get(handlerName); const jobHandler = this.jobHandlers.get(handlerName);
if (!jobHandler) { if (!jobHandler) {
...@@ -110,67 +70,19 @@ class Executor { ...@@ -110,67 +70,19 @@ class Executor {
this.jobManager.runJob(jobId, jobJsonParams, logId, logDateTime, executorTimeout, handlerName, jobHandler, this.callback.bind(this)); this.jobManager.runJob(jobId, jobJsonParams, logId, logDateTime, executorTimeout, handlerName, jobHandler, this.callback.bind(this));
return { code: 200, msg: 'success' }; return { code: 200, msg: 'success' };
} }
/**
* 终止任务
* @param {number} jobId - 任务ID
* @return {{code: number, msg: string}}
*/
killJob(jobId) { killJob(jobId) {
return { code: 500, msg: `not yet support, jobId(${jobId})` }; return { code: 500, msg: `not yet support, jobId(${jobId})` };
} }
/**
* 查看执行日志
* @param {number} logDateTime - 本次调度日志时间
* @param {number} logId - 本次调度日志ID
* @param {number} fromLineNum - 日志开始行号
* @return {*} - fromLineNum:日志开始行号; toLineNum:日志结束行号; logContent:日志内容
*/
async readLog(logDateTime, logId, fromLineNum) { async readLog(logDateTime, logId, fromLineNum) {
//待实现
return { return {
code: 200, content: { code: 200, content: {
"fromLineNum": 0, "fromLineNum": 0,
"toLineNum": 100, "toLineNum": 100,
"logContent": "test", "logContent": "test",
"isEnd": true // 日志是否全部加载完 "isEnd": true
} }
}; };
//let logContent
//let toLineNum
// try {
// const lines = await this.jobManager.readJobLog(logDateTime, logId)
// lines.splice(0, fromLineNum - 1)
// if (last(lines) === '') lines.pop()
// toLineNum = fromLineNum + lines.length - 1
// lines.unshift('')
// logContent = lines.join('\n')
// } catch (err) {
// log.err('readLog error: %o', err.message)
// toLineNum = fromLineNum
// logContent = err.toString()
// }
// 请求数据格式如下,放置在 RequestBody 中,JSON格式:
// {
// "logDateTim":0, // 本次调度日志时间
// "logId":0, // 本次调度日志ID
// "fromLineNum":0 // 日志开始行号,滚动加载日志
// }
// 响应数据格式:
// {
// "code":200, // 200 表示正常、其他失败
// "msg": null // 错误提示消息
// "content":{
// "fromLineNum":0, // 本次请求,日志开始行数
// "toLineNum":100, // 本次请求,日志结束行号
// "logContent":"xxx", // 本次请求日志内容
// "isEnd":true // 日志是否全部加载完
// }
// }
// return { code: 200, content: { fromLineNum, toLineNum, logContent } }
} }
/**
* 执行器注册:执行器注册时使用,调度中心会实时感知注册成功的执行器并发起任务调度
*/
async registry() { async registry() {
return axios_1.default.post(`${this.scheduleCenterUrl}/api/registry`, { return axios_1.default.post(`${this.scheduleCenterUrl}/api/registry`, {
registryGroup: 'EXECUTOR', registryGroup: 'EXECUTOR',
...@@ -182,12 +94,8 @@ class Executor { ...@@ -182,12 +94,8 @@ class Executor {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
} }
}).then((response) => { }).then((response) => {
// console.log('执行器注册成功:', response.data);
}).catch(error => console.error('执行器注册失败:', error.message)); }).catch(error => console.error('执行器注册失败:', error.message));
} }
/**
* 执行器注册摘除:执行器注册摘除时使用,注册摘除后的执行器不参与任务调度与执行
*/
async registryRemove() { async registryRemove() {
return axios_1.default.post(`${this.scheduleCenterUrl}/api/registryRemove`, { return axios_1.default.post(`${this.scheduleCenterUrl}/api/registryRemove`, {
'registryGroup': 'EXECUTOR', 'registryGroup': 'EXECUTOR',
...@@ -200,11 +108,6 @@ class Executor { ...@@ -200,11 +108,6 @@ class Executor {
} }
}).then((response) => console.log('执行器移除成功:', response.data)).catch(error => console.error('执行器移除失败:', error.message)); }).then((response) => console.log('执行器移除成功:', response.data)).catch(error => console.error('执行器移除失败:', error.message));
} }
/**
* 任务回调:执行器执行完任务后,回调任务结果时使用
* @param {Error|null} error 错误对象
* @param {{logId: number, result: any ,use_time:number}} jobResult 任务结果
*/
async callback(error, { logId, result, use_time }) { async callback(error, { logId, result, use_time }) {
var handleMsg = JSON.stringify({ use_time, result, error: error && error.message }); var handleMsg = JSON.stringify({ use_time, result, error: error && error.message });
return axios_1.default.post(`${this.scheduleCenterUrl}/api/callback`, [{ return axios_1.default.post(`${this.scheduleCenterUrl}/api/callback`, [{
......
...@@ -2,35 +2,18 @@ ...@@ -2,35 +2,18 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.XxlJobExecutor = void 0; exports.XxlJobExecutor = void 0;
const executor_1 = require("./executor"); const executor_1 = require("./executor");
/**
* XxlJobExecutor
*/
class XxlJobExecutor { class XxlJobExecutor {
executor; executor;
registryInterval; registryInterval;
/**
* 创建 XxlJobExecutor 实例
* @param {Map<String, Function>} jobHandlers 所有的任务执行函数,key: 任务标识,即调度中心任务配置的JobHandler;value: 任务执行函数
* @param {Object} context 为所有任务执行函数指定公共的上下文对象,常见比如数据库实例 { database, redis }
*/
constructor(opts, jobHandlers, context = undefined) { constructor(opts, jobHandlers, context = undefined) {
const { XXL_JOB_EXECUTOR_KEY: executorKey, XXL_JOB_SCHEDULE_CENTER_URL: scheduleCenterUrl, XXL_JOB_ACCESS_TOKEN: accessToken, XXL_JOB_JOB_LOG_PATH: jobLogPath, } = opts; const { XXL_JOB_EXECUTOR_KEY: executorKey, XXL_JOB_SCHEDULE_CENTER_URL: scheduleCenterUrl, XXL_JOB_ACCESS_TOKEN: accessToken, XXL_JOB_JOB_LOG_PATH: jobLogPath, } = opts;
this.executor = new executor_1.Executor(executorKey, scheduleCenterUrl, accessToken, jobLogPath, jobHandlers, context); this.executor = new executor_1.Executor(executorKey, scheduleCenterUrl, accessToken, jobLogPath, jobHandlers, context);
} }
/**
* 应用执行器组件
* @param {Object} args
* @param {any} args.app 执行器server, express
* @param {string} args.appDomain 执行器 server 地址
*/
applyMiddleware({ app, domain }) { applyMiddleware({ app, domain }) {
this.executor.applyMiddleware({ app, domain }); this.executor.applyMiddleware({ app, domain });
const registry = this.executor.registry.bind(this.executor); const registry = this.executor.registry.bind(this.executor);
registry() && (this.registryInterval = setInterval(registry, 30000)); registry() && (this.registryInterval = setInterval(registry, 30000));
} }
/**
* 关闭服务前应调用该方法,将执行器从调度中心摘除
*/
async close() { async close() {
if (this.registryInterval) { if (this.registryInterval) {
clearInterval(this.registryInterval); clearInterval(this.registryInterval);
......
...@@ -3,66 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true }); ...@@ -3,66 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.JobManager = void 0; exports.JobManager = void 0;
const moment = require("moment"); const moment = require("moment");
const Path = require("path"); const Path = require("path");
// const Path = require('path')
// const logger = require('./logger')
// const log = logger('xxl-job-manager')
// const { Task, tapTask } = require('./purefuncs')
// const { mkdir, searchInFile } = require('./file')
/**
* 任务管理
*/
class JobManager { class JobManager {
context; context;
runningJobs; runningJobs;
jobLogPath; jobLogPath;
/**
* @param {string} jobLogPath
* @param {*} context
*/
constructor(jobLogPath, context) { constructor(jobLogPath, context) {
// mkdir(jobLogPath)
this.jobLogPath = jobLogPath; this.jobLogPath = jobLogPath;
this.context = context; this.context = context;
this.runningJobs = new Set(); this.runningJobs = new Set();
} }
/**
* 根据调度时间获取日志文件路径
* @param {number} dateTime
* @return {string}
*/
getLogFilePath(dateTime) { getLogFilePath(dateTime) {
return Path.resolve(process.cwd(), `${this.jobLogPath}/${moment(dateTime, 'x').format('YYYY-MM-DD')}.log`); return Path.resolve(process.cwd(), `${this.jobLogPath}/${moment(dateTime, 'x').format('YYYY-MM-DD')}.log`);
} }
/**
* 构造任务logger的namespace
* @param {string} handlerName
* @param {number} dateTime
* @param {number} logId
* @return {string}
*/
getJobLoggerNamespace(handlerName, dateTime, logId) { getJobLoggerNamespace(handlerName, dateTime, logId) {
return `${handlerName}-${moment(dateTime, 'x').format('YYMMDD')}-${logId}-executing`; return `${handlerName}-${moment(dateTime, 'x').format('YYMMDD')}-${logId}-executing`;
} }
/**
* @param {{number}} jobId
* @return {boolean}
*/
hasJob(jobId) { hasJob(jobId) {
return this.runningJobs.has(jobId); return this.runningJobs.has(jobId);
} }
async runJob(jobId, // 任务ID async runJob(jobId, jobJsonParams, logId, logDateTime, executorTimeout, handlerName, jobHandler, callback) {
jobJsonParams, // 任务参数(JSON格式)
logId, // 日志ID
logDateTime, // 日志时间
executorTimeout, // 执行超时时间(秒)
handlerName, // 处理器名称
jobHandler, // 任务处理函数
callback // 回调函数
) {
// 1. 初始化日志记录器
// const loggerNamespace = this.getJobLoggerNamespace(handlerName, logDateTime, logId);
// const logFilePath = this.getLogFilePath(logDateTime);
// const jobLogger = logger(loggerNamespace, logFilePath);
let result, timeoutTimer, error; let result, timeoutTimer, error;
let use_time = new Date().getTime(); let use_time = new Date().getTime();
try { try {
...@@ -110,27 +69,11 @@ class JobManager { ...@@ -110,27 +69,11 @@ class JobManager {
error error
}); });
} }
/**
* @param {number} logDateTime
* @param {number} logId
* @return {Promise<Array>}
*/
async readJobLog(logDateTime, logId) { async readJobLog(logDateTime, logId) {
const logFilePath = this.getLogFilePath(logDateTime); const logFilePath = this.getLogFilePath(logDateTime);
const jobLogNamespace = this.getJobLoggerNamespace('', logDateTime, logId) + ' '; const jobLogNamespace = this.getJobLoggerNamespace('', logDateTime, logId) + ' ';
return fs.existsSync(logFilePath) ? await searchInFile(logFilePath, jobLogNamespace, `${jobLogNamespace} end`) : []; return fs.existsSync(logFilePath) ? await searchInFile(logFilePath, jobLogNamespace, `${jobLogNamespace} end`) : [];
} }
/**
* @param {number} jobId
* @param {number} logId
* @param {*} jobLogger
* @param {function} callback
* @param {number} timeoutTimer
* @param {number} use_time
* @param {*} result
* @param {*} error
* @return {Promise<void>}
*/
async finishJob({ jobId, logId, callback, timeoutTimer, use_time, result, error }) { async finishJob({ jobId, logId, callback, timeoutTimer, use_time, result, error }) {
try { try {
timeoutTimer && clearTimeout(timeoutTimer); timeoutTimer && clearTimeout(timeoutTimer);
......
// import debug from 'debug';
// import fs from 'fs';
// import os from 'os';
// import util from 'util';
// // 类型定义
// type LogLevel = 'error' | 'info' | 'warn' | 'debug' | 'trace';
// type LoggerMethods = {
// [key in LogLevel]: debug.Debugger;
// } & {
// close: () => void;
// };
// interface LoggerOptions {
// namespace: string;
// logFilePath?: string;
// enabledLevels?: string;
// debugEnabled?: boolean;
// }
// // 配置解析
// const parseEnvBool = (envVar: string): boolean => {
// const value = process.env[envVar] || '';
// return /^(yes|on|true|enable|enabled|1)$/i.test(value);
// };
// const getEnvValue = (envVar: string, defaultValue: string): string => {
// return process.env[envVar] !== undefined ? process.env[envVar] : defaultValue;
// };
// // 默认配置
// const DEFAULT_LOG_LEVELS = 'info:*,warn:*,error:*,debug:*,trace:*';
// const WRITE_STREAM_OPTIONS: fs.WriteStreamOptions = {
// flags: 'a',
// encoding: 'utf8',
// autoClose: true,
// emitClose: true
// };
// // 空日志函数
// const noop = (..._args: any[]): void => {};
// const noopLogger: LoggerMethods = {
// error: noop,
// info: noop,
// warn: noop,
// debug: noop,
// trace: noop,
// close: noop
// };
// // 创建基础日志函数
// const createBaseLoggers = (namespace: string): Omit<LoggerMethods, 'close'> => {
// return {
// error: debug('error').extend(namespace),
// info: debug('info').extend(namespace),
// warn: debug('warn').extend(namespace),
// debug: debug('debug').extend(namespace),
// trace: debug('trace').extend(namespace)
// };
// };
// // 配置日志级别
// const configureLogLevels = (
// logger: Omit<LoggerMethods, 'close'>,
// enabledLevels: string
// ): void => {
// Object.entries(logger).forEach(([level]) => {
// logger[level as LogLevel].enabled = enabledLevels.includes(level);
// });
// };
// // 创建文件日志写入器
// const createFileLogger = (
// logFilePath: string,
// logger: Omit<LoggerMethods, 'close'>,
// enabledLevels: string
// ): LoggerMethods => {
// const writeStream = fs.createWriteStream(logFilePath, WRITE_STREAM_OPTIONS);
// const logToFile = (...args: any[]): void => {
// writeStream.write(`${util.format(...args)}${os.EOL}`);
// };
// const logToConsoleAndFile = (...args: any[]): void => {
// const message = util.format(...args);
// console.error(message);
// writeStream.write(`${message}${os.EOL}`);
// };
// // 配置日志输出方式
// Object.entries(logger).forEach(([level, logFn]) => {
// logFn.log = enabledLevels.includes(level) ? logToConsoleAndFile : logToFile;
// });
// // 返回完整logger对象
// return {
// ...logger,
// close: (): void => {
// writeStream.end();
// // 切换回仅控制台日志
// Object.values(logger).forEach((logFn) => {
// logFn.log = console.error;
// });
// }
// };
// };
// // 主导出函数
// export const createLogger = (
// options: LoggerOptions | string
// ): LoggerMethods => {
// // 处理参数重载
// const normalizedOptions = typeof options === 'string'
// ? { namespace: options }
// : options;
// const {
// namespace,
// logFilePath,
// enabledLevels = getEnvValue('DEBUG', DEFAULT_LOG_LEVELS),
// debugEnabled = parseEnvBool('XXL_JOB_DEBUG_LOG')
// } = normalizedOptions;
// if (!debugEnabled && !logFilePath) {
// return noopLogger;
// }
// const logger = createBaseLoggers(namespace);
// // 配置日志级别
// configureLogLevels(logger, enabledLevels);
// if (!logFilePath) {
// return {
// ...logger,
// close: noop
// };
// }
// // 文件日志配置
// return createFileLogger(logFilePath, logger, enabledLevels);
// };
// // 默认导出
// export default createLogger;
//# sourceMappingURL=logger.js.map //# sourceMappingURL=logger.js.map
\ No newline at end of file \ No newline at end of file
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
"outDir": "build/", "outDir": "build/",
"experimentalDecorators": true, "experimentalDecorators": true,
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"sourceMap": true "sourceMap": true,
"removeComments": true
}, },
"include": [ "include": [
"src/**/*.ts" "src/**/*.ts"
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!