53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
const event = require('events');
|
|
const serviceMap = require('./serviceMap');
|
|
const { auth } = require('./middleware');
|
|
// const Provider = require('../common/Provider')
|
|
class ServiceManager extends event {
|
|
constructor(props = {}) {
|
|
mylog.info('初始化服务控制器...');
|
|
super(props);
|
|
this._map = serviceMap;
|
|
this.middleWares = [
|
|
auth
|
|
];
|
|
}
|
|
static getInstance() {
|
|
if(!ServiceManager.instance) {
|
|
ServiceManager.instance = new ServiceManager();
|
|
}
|
|
return ServiceManager.instance;
|
|
}
|
|
|
|
get ServiceMap() {
|
|
return this._map;
|
|
}
|
|
/**
|
|
*
|
|
* @desc 注册一个服务
|
|
* @param {*} [service={}]
|
|
* @param {String} path // 路由地址
|
|
* @param {String} type // HTTP请求类型['GET','POST','PUT'...]
|
|
* @param {Function} handler //处理函数
|
|
* @memberof ServiceManager
|
|
*/
|
|
regist(service = {}) {
|
|
const { version, ...main } = service;
|
|
this._map[version].push(main);
|
|
}
|
|
|
|
mountService(route, version) {
|
|
mylog.info('开始挂载中间价...');
|
|
this.middleWares.map(fn => {
|
|
route.use(fn);
|
|
});
|
|
mylog.info('开始挂载服务...');
|
|
if (this.ServiceMap[version] && this.ServiceMap[version].length !== 0) {
|
|
this.ServiceMap[version].map(service => {
|
|
route[service.method.toLowerCase()](service.url, service.controller);
|
|
});
|
|
}
|
|
return route;
|
|
}
|
|
}
|
|
|
|
module.exports = ServiceManager.getInstance(); |