UNPKG

mm_os

Version:

MM_OS服务端架构,用于快速构建应用程序,支持网站建设、小程序后台、AI应用、物联网(IOT/AIOT)、游戏服务端等多种场景。

100 lines (89 loc) 2.03 kB
const { Drive } = require('mm_machine'); /** * 领域服务基类 * 负责协调多个模型和业务逻辑,提供业务操作的高级抽象 */ class Service extends Drive { static config = { // 服务名称 name: 'default', // 依赖的富血模型 models: [], }; /** * 构造函数 * @param {object} config 配置参数 * @param {object} parent 父对象 */ constructor(config, parent) { super({ ...Service.config, ...config || {} }, parent); // 模型实例集合 this._model = {}; } } /** * 获取模板目录 * @returns {string} 模板目录 */ Service.prototype.getTplDir = function() { return __dirname; }; /** * 初始化核心 * @param {object} model 模型实例集合 * @param {object} eventer 事件管理器 * @param {object} logger 日志管理器 */ Service.prototype._initCore = async function(model, eventer, logger) { // 初始化依赖项 if (logger) { this.setLogger(logger); } if (eventer) { this.getEventer = function () { return eventer; }; } if (model) { this._model = model; } this._checkDeps(); }; /** * 检查依赖项 * @private */ Service.prototype._checkDeps = function() { let { models } = this.config; for (var i = 0; i < models.length; i++) { var name = models[i]; if (!this._model[name]) { this.log('error', `model ${name} 未找到`); } } }; /** * 销毁服务 */ Service.prototype._destroy = function() { // 清理依赖引用 this._model = {}; // 移除所有监听器 this.removeAllListeners(); }; /** * 获取模型实例 * @param {string} name 模型名称 * @returns {object | null} 模型实例或null */ Service.prototype.getModel = function(name) { if (!name || typeof name !== 'string') { throw new Error('模型名称必须是非空字符串'); } return this._model[name] || null; }; exports.Service = Service;