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();