Enhancer 全局对象

isProduction() 是否在生产环境。生产环境是指项目发布后部署运行的环境。

  • @return {Boolean} 是否在生产环境。

getLogger() 获取日志对象用于输出内容到日志中。

【例】

var logger = Enhancer.getLogger();
logger.info('一般级别的信息内容。', '其他信息');
logger.warn('警告内容。');
logger.error('错误内容');
// 如果是测试环境,可以在桥窗口看到这些内容输出。
// 如果是生产环境,当且仅当配置文件 repository/project/logger_settings.json 文件的
// app 日志级别设置了对应级别输出后, 才能在 logs/app.log 文件中看到相关的日志。

setData(name, value, expire, callback) 设置全局数据。该数据会保存到 Redis,不参与@变量@解析体系。

  • @param name {String} [必须]
  • @param value {String} [必须]
  • @param expire {Number} [可选] 过期时间,单位秒
  • @param callback {Function} 获取数据回调函数,回调参数第一个为错误对象

getData(name, callback) 获取全局数据。

  • @param name {String} 变量名
  • @param callback {Function} 获取数据回调函数,回调参数第一个为错误对象,第二个为拿到的值。

【例】

Enhancer.setData('mydata', 'This is a test data');
Enhancer.setData('mydata2', 'This is a test data2', 10, function(err) {
    if (err) {
      // 错误处理
      return;
    }
});
Enhancer.getData('mydata', function(err, value) {
    if (err) {
      // 错误处理
      return;
    }
    console.log(value); //=> 'This is a test data';
})

getVariable(name) 获取服务器端全局变量。(与用户无关的变量)

  • @param name {String} 变量名
  • @return {Object} 变量值

setVariable(name, variable) 设置服务器端全局变量,只能在工作台【全局配置】-【系统启动函数】中使用,设置后能在全局使用该@变量@。前端用:@0-变量@

  • @param name {String}
  • @param variable {Object}

setSessionVariable(name, value) 设置当前用户会话变量。在测试环境中可能无效,需要设置环境变量来模拟。发布后的生产环境有效。

  • @param name {String} 变量名,设置后可以在 SQL 中使用 @变量@。
  • @param variable {Object}

getSessionVariable(name) 获取当前用户会话变量。

  • @param name {String} 变量名
  • @return {Object} 变量值

getDatabaseService() 获取数据库服务。

  • @return DatabaseService

getDatabaseConfig() 获取数据库配置。

  • @return databaseConfiguration

【使用说明】当 Enhancer 封装的通用数据连接服务不能够满足一些特殊要求时,可以通过此接口获取数据库配置,然后自行创建原生数据库连接对象。具体创建和使用方法参考:mysql, oracle, mssql(sql-server)。特别注意,原生对象创建操作应在自定义接口中进行。

【例】

var mysql = require('mysql');
var dbconfig = Enhancer.getDatabaseConfig();
var defaultConf = dbconfig.connections[dbconfig.default];
var conn = mysql.createConnection({
    host: defaultConf.host,
    port: defaultConf.port,
    user: defaultConf.user,
    database: defaultConf.database,
    password: defaultConf.password,
    multipleStatements: true
});

var sql = ` SELECT * FROM inc_deposit_standard ORDER BY id;
  SELECT * FROM inc_completion_coefficient ORDER BY threshold;
  SELECT * FROM loan_completion_coefficient;
  UPDATE ...`;

var params = [...]
conn.query(sql, params, function(err, results) {
    if (err) {
        conn.release();
        // done 方法可能来自上下文环境,也可能不存在这个方法,此处示意。
        return done(err);
    }
    console.log(results);
    ...
    conn.release();
});

getContextRequest() 获取当前 HTTP 请求对象。

  • @return {HttpRequest} http 请求对象,该对象完整地保留了本次 http 请求的相关信息,是对 nodejs 原生 Http.IncomingMessage 对象的扩展。除了拥有 http 请求基本的参数属性之外还有以下常用属性和方法:
    • request.query {Object} 本次 http 请求 url 中的参数键值对。比如 request.query['name']可以取到url携带的name参数值。
    • request.body {Object} 本次 http 请求消息体键值对内容。
    • request.cookies {Object} 本次 http 请求携带的 cookie 键值对。
    • request.headers {Object} 本次 http 请求的 协议头对象。

详细文档请参考 request api

getContextResponse() 获取当前 HTTP 请求回应对象。

  • @return {HttpResponse} 对象是对 nodejs 原生 Http.ServerResponse 对象的扩展。除了拥有 http 响应所需的基本方法外还有以下常用方法:
    • response.status(code) 设置响应代码,默认 200。
    • response.send(text|json) 发送给客户端内容并结束响应。
    • response.cookie(name, value) 给客户端设置 cookie。

详细文档请参考 response api

getCurrentUser() 获取当前用户。

  • @return {User} 用户对象,详情见用户对象 API。

getUserFileDir() 获取用户文件所在目录。

  • @return {String} 用户通过本应用存储在服务器上的文件目录绝对路径。

resolveUserFilePath(url|path) 解析用户文件资源 url,获取该文件在服务器上存储的绝对路径。【注】非生产环境返回的是桥所在机器地址。测试环境下上传的文件,不应用于发布后的程序中并获取路径。

  • @param url {String} 用户上传文件后,获得的文件 url,通常是一个 http 地址。如:http://127.0.0.1:5301/file/20180422/JnPw3Av6YrFCQ9KdXo36-99U.png
  • @return {String} 该 url 对应的文件,在服务器上存放的绝度路径地址。

getRoleList 获取系统角色列表。【注】非生产环境返回的是模拟数据,供测试用。

  • @return {Array} 角色列表,格式如:[{id: "admin", display_name: "管理员", description: "..."}, ...]

getRolePageList(role_id) 获取角色可访问的页面。【注】非生产环境返回的是模拟数据,供测试用。

  • @param role_id {String} 角色 ID。
  • @return {Array} 页面列表,格式如:[101, 120, 103]。

getMenuNodeList() 获取系统菜单列表。【注】非生产环境返回的是模拟数据,供测试用。

  • @param {Array} 菜单列表,格式如:
    [
    {
      "node_id": 101, // 节点编号
      "node_name": "我的预定", // 节点名
      "parent_node_id": 0, // 父节点编号
      "is_leaf": "Y", // 是否是叶子节点
      "ord": 4, // 同层内序号
      "page_id": 101, // 页面编号
      "icon": "fas fa-calendar-check", // 节点图标
      "hidden": "N", // 是否隐藏节点
      "is_public": "N" // 是否是公共页面
    },
    ...
    ]
    

setRole(id, name, des, homePage, callback) 设置角色,如果角色不存在,则会添加此新角色。【注】非生产环境此操作为模拟操作。

  • @param id {String} [必须]角色 ID。
  • @param name {String} [必须]角色名。
  • @param des {String} [可空] 描述。
  • @param homePage {Number} [可空] 该角色登入系统后默认的首页。
  • @param callback {Function} 设置完毕回调函数,参数如下
    • err 表示系统级错误,没有错误则此参数值为 null
    • result 操作结果,如:{success: true, message: 'OK'}

【例】

Enhancer.setRole('super', '超级管理员,权利最大的用户', function(err, result) {
    if (err) {
        console.error(err);
        ... // 一些错误处理 
        return
    }
    ...
    // 继续做一些事情。
});

removeRole(id, callback) 删除角色。【注】非生产环境此操作为模拟操作。

  • @param id {String} 角色 ID。
  • @param callback {Function} 回调函数,表述同 setRole 方法。

setRolePage(id, page_id, callback) 设置角色可使用页面。【注】非生产环境此操作为模拟操作。

  • @param id {String} 角色 ID。
  • @param page_id {String | Array} 页面 ID 或数组,如:101 或者 [101, 102, 103]。
  • @param callback {Function} 回调函数,表述同 setRole 方法。

removeRolePage(id, page_id, callback) 移除角色可使用页面。【注】非生产环境此操作为模拟操作。

  • @param id {String} 角色 ID。
  • @param page_id {String | Array} 页面 ID 或数组,如:101 或者 [101, 102, 103]。
  • @param callback {Function} 回调函数,表述同 setRole 方法。

logoutUser(userId, callback) 注销用户。【注】非生产环境此操作为模拟操作。

  • @param userId {String | Number} 用户登录 ID。
  • @param callback {Function} 回调函数,参数如下:
    • err 错误对象,没有错误则为 null。
    • result 操作结果, 1 表示注销成功,0 表示未找到注销用户或者该用户不在登录状态。

【例】

Enhancer.logoutUser('zhangsan', function(err, result) {
    if (err) {
        done(err);
        return
    }
    result = result ? {
        success: true,
        message: '注销成功。'
    } : {
        success: false,
        message: '注销失败。'
    }
    // done 方法可能来自上下文环境,也可能不存在这个方法,此处示意。
    done(null, result);

});

isUserLoggedIn(access_token, callback)用户是否登录。【注】再测试环境下为模拟结果,非真实用户状态。如果有使用桥,则桥的版本需要在 2.3.1 以上。

  • @param access_token {String} 用户登录令牌。一般在用户登录成功之后,access_token会存在于用户浏览器端的 cookie 中。
  • @callback {Function} 回调函数,参数如下:
    • err 错误对象,没有错误则为 null。
    • result 判断结果,是一个JSON对象,结构如下:
      {
          isLoggedIn: true, // 是否登录。
          userInfo: {USER_ID: 123, USER_NAME: '张三', ROLES: '管理员,人事经理', ...} // 用户信息。也即用户登录后产生的,属于该用户的相关变量。若用户未登录则为 null。
      }
      

【例】

var access_token = 'LWodRhVLDCpai8989XsYhtAXe05kJ433';
Enhancer.isUserLoggedIn(access_token, function(err, result) {
    if (err) {
        console.error(err);
        res.send({success:false, message: '异常发生'});
        return
    }
    // res 对象可能来自上下文环境,也可能不存在,此处示意。
    res.send({success:true, result: result});
});

isUserIdLoggedIn(user_id, callback)用户是否登录。【注】再测试环境下为模拟结果,非真实用户状态。如果有使用桥,则桥的版本需要在 2.3.1 以上。

  • @param user_id {String | Number} 用户 ID。
  • @callback {Function} 回调函数,参数如下:
    • err 错误对象,没有错误则为 null。
    • result 判断结果,是一个JSON对象,结构如下:
      {
          isLoggedIn: true, // 是否登录。
          userInfo: {USER_ID: 123, USER_NAME: '张三', ROLES: '管理员,人事经理', ...} // 用户信息。也即用户登录后产生的,属于该用户的相关变量。若用户未登录则为 null。
      }
      

getSessionNumber(callback) 获取当前会话数。【注】非生产环境返回的是模拟数据。桥版本要求 1.6.0 以上。

  • @param callback {Function} 回调函数,参数如下:
    • err 错误对象,没有错误则为 null。
    • result 操作结果 如:{num: 20, logged: 18}。num 为当前会话人数,logged 为会话人数中已登录人数。

【注意】此功能会遍历 redis 中存储的全部会话记录,对于高并发场景比如同时在线上万人,此方法会造成一定性能损耗,所以建议业务上只开放给管理员使用。

results matching ""

    No results matching ""