config.js
7.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
"use strict";
const configure = function () {
const path = require('path'),
fs = require('fs-extra'),
chalk = require('chalk'),
customize = require('kml-customize'),
PROJECT_NAME = 'ncov';
let BASE_URL = `https://dev.kmlab.com/${PROJECT_NAME}/`;
let host = '58.246.253.126';
let port = '5433';
let database = 'jhsaas';
let username = 'pms';
let password = 'pms';
let redisHost = '192.168.1.90';
let redisPort = 6379;
let redisDB = 0;
let redisPass = 'itomix';
const root = process.cwd(),
server_path = 'server', //后端主目录
init_path = 'init', //后端初始化目录
lib_path = 'lib', //后端自定义库
modules_path = 'modules', //后端模块定义
routers_path = 'routers', //后端路由定义
entities_path = 'entities', //实体类定义
public_path = 'public', //静态资源目录
logs_path = 'logs', //日志目录
views_path = 'views', //前端视图输出
mock_path = 'mock' //mock数据目录
;
let config = {
//sequelize数据库连接定义
sequelize: {
database: database,
username: username,
password: password,
options: {
timezone: '+08:00', //保证时区正确
host: host,
port: port,
dialect: 'postgres',
//storage: 'path/to/database.sqlite', //SQLite only
pool: {
max: 5,
min: 0,
idle: 10000
}
},
syncDB: false
},
redis: {
host: redisHost,
port: redisPort,
db: redisDB,
pass: redisPass
},
//系统目录定义
system: {
bind_port: 9120, //绑定端口
base_url: BASE_URL, //主URL
project_name: PROJECT_NAME, //项目名
additional: '_action', //路由后缀
mock_file: '.js', //对应url请求时获取mock数据类型的文件后缀
mock_mode: process.env.MOCK_MODE || false, //mock模式, auto=自动|true|false
real_mode: /^product|real$/.test(process.env.NODE_ENV) //连接真实生产环境
},
//系统路径
path: {
ROUTERS_PATH: path.resolve(root, server_path, routers_path), //后端路由定义
ENTITIES_PATH: path.resolve(root, server_path, entities_path), //实体类定义
INIT_PATH: path.resolve(root, server_path, init_path), //后端初始化目录,固定
LIB_PATH: path.resolve(root, server_path, lib_path), //后端自定义库,固定
MODULES_PATH: path.resolve(root, server_path, modules_path), //后端模块定义
MOCK_PATH: path.resolve(root, mock_path), ///mock数据目录
PUBLIC_PATH: path.resolve(root, public_path), //静态资源目录
VIEWS_PATH: path.resolve(root, views_path), //前端视图输出
LOGS_PATH: path.resolve(root, logs_path) //日志目录
},
//文件上传目录定义
upload: {
root: `/opt/${PROJECT_NAME}-img/`,
base_url: null,
appimg: 'appimg/',
qrimg: 'qrimg/',
wximg: 'wximg/'
},
//微信定义
wechat: {
api_host: 'http://localhost:3800',
wx_app: 'itomix',
api_token: '',
authorizer_appid: ''
},
//微信小程序
weapp: {
api_host: 'http://localhost:3800',
api_token: '',
authorizer_appid: '',
watermark_ttl: 7200, //敏感数据有效期(s)
token_prefix: 'WXID', //token前缀
token_ttl: 36000, //token有效期(s)
share_prefix: 'WXSHARE', //分享前缀
share_ttl: 3600 * 48, //分享有效期(s)
strict_mode: true
},
//内部应用接口验证定义
app_config: {
api_token: ''
},
//ID生成器
id_worker: {
datacenterId: 9
},
//枚举参数
ENUM: {
DEFAULT: {
USERTYPE: 'P',
USERPASSWORD: '8888',
USERROLE: {
ADMIN: 'ADMIN',
USER: 'USER'
},
DUTY: '管理员',
PLATTYPE: 'P',
DUTYNAME: '管理员',
CORPTYPE: 'P',
DUTYTYPE: 'P'
},
TYPE: {
APPLY: 'APPLY',
ENABLE: 'ENABLE',
FAIL: 'FAIL',
IGNORE: 'IGNORE',
DISABLE: 'DISABLE',
USE: 'USE',
USER: 'USER',
AUTO: 'AUTO',
DEFAULT: 'DEFAULT'
},
STATE: {
SUCCESS: 'SUCCESS',
OK: 'OK',
ERROR: 'ERROR'
},
PLATTYPE: {
P: 'P',
B: 'B'
},
LIMIT: 20,
OFFSET: 0,
DEFAULT_LIMIT: 999,
DEFAULT_PARAMS_ARRAY: ['create_id', 'create_name', 'create_code', 'create_date',
'optr_id', 'optr_name', 'optr_code', 'optr_date'],
STATUS_ARRAY: ['APPLY', 'ENABLE', 'DISABLE', 'Y', 'N', 'PUBLIC', 'PRIVATE']
},
// 微信跳转页
mpurl_map: {
index: 'index.html'
},
// 缓存设定
cache: {
ttl: {
PIN_TIMEOUT: 300, // 5分钟的验证码超时时间
AGAIN_PIN: 240, // 4分钟再次发送验证码
EXPRESS_TTL: 86400, // 1 day
SESSION_TTL: 86400, // 1 day
CRON_LOCK: 5
}
},
// 定时器
"cron_helper": `
┌────────────── second (optional)
│ ┌──────────── minute
│ │ ┌────────── hour
│ │ │ ┌──────── day of month
│ │ │ │ ┌────── month
│ │ │ │ │ ┌──── day of week
│ │ │ │ │ │
│ │ │ │ │ │
* * * * * *
ss mm H D M dw
`,
"unique_schedule": false, // 独立运行定时器任务
"schedule": {
"alive": {
"name": "心跳检查",
"cron": "0-59/1 * * * * *",
"enable": false
},
"crawler": {
"name": "nCov数据抓取",
"cron": "0-59/10 * * * * *",
"enable": false
},
},
// 获取数据的api地址
NCOV_API: {
area: {
url: 'https://lab.isaaclin.cn/nCoV/api/area',
param: {
latest: 1
}
}
}
};
//创建目录
let config_path = config.path;
for (let p in config_path) {
if (config_path.hasOwnProperty(p)) {
let path = config_path[p];
fs.ensureDir(path, function (err, added_root) {
if (err) {
return console.error(chalk.red('create folder error'), chalk.red(JSON.stringify(err, null, 4)));
}
added_root && console.info(chalk.green(path + ' is created'));
});
}
}
return customize(config);
}();
//绑定到全局变量
global.config = global.config = configure;
module.exports = configure;