开发辅助

Quick Reference
https://cdn.rg1008.com/sources/view/reference/index.html

AICODE模板配置
https://doc.rg1008.com/docs/rg_dev_ai/rg_dev_ai-1fmp9gd4iqi64

前端后台模板
https://cdn.rg1008.com/sources/view/admin/index.html

关键信息

  •  关键词: modify_time 数据库表需要加的字段,便于更新推送

  •  关键词: groupTableKey 表组信息

  •  标准:参数 _ori = init 表示接口获取为原始数据 _ori= convert 表示接口获取为转换后 数据

  •  标准:查询接口请求的数据命名(全部小写驼峰 userName 或者全部 小写下划线 user_name)

  •  标准:数据库表结构必须有主键,且其中一个字段必须唯一(自增列或者唯一列)

  •  标准:响应和请求字段全部以 小写驼峰命名, 如:数据库字段 user_name, 那么请求和显示字段为 userName

  •  标准:后端接口接收全局参数全部以”_”开始,如当前用户ID, _userId

  •  标准:url请求头参数,如果放在头里面信息,建议以“X”开头,如XownerId

  •  标准:接口url 地址全部以小写开始,如果多个字母,使用“-”连接

  •  标准:接口存储详见 restful api 规范, put:修改,delete:删除,petch:局部更新,get:查询

  •  概念:bridge 通过bridge_{mkey}.json文件进行前后端输入输出转换

  •  概念:mapper 通过mapper_{mkey}_sql.json文件进行数据库和后端代码转换

  •  概念:dim 维数据,控制数据库值 和 页面显示名称映射

  •  概念:batO 记录操作类型 修改(u)、删除(d)、新增(i)、修改或插入(ui)

  •  关键字:用户对外显示名pushName, 为便于查询,入库时候把名字按下面规则写入
    SHOW_NAME 对外显示的名字 real_name,account:nike_name,email,telephone,user_id

  •  关键词:{mkey} 对应后台 mapper_{mkey}_sql.json文件

  •  关键词:{resField} 对应mapper文件里面 responseField

  •  关键词:{ownerId} 对应项目表 bo_project 里面 project_id; 值来至 XownerId等

  •  关键词:{sysId} 对应系统表 bo_system里面 sys_id 值来至如 XsysId

  •  关键词:_nodejs 通过nodejs中间件对数据根据业务进行二次转换

  •  关键词:_node2list=true 当 _nodejs=’listtotree’ 时候,设置为true,将获取到的level重新转回列表

  •  关键词:XfromAppId 对外服务的应用ID,便于根据应用进行数据授权

  •  关键词:XuserFromFirstShareId一级分享用户ID, bo_user user_id

  •  关键词:XuserFromSecondShareId 二级分享用户ID, bo_user user_id

  •  关键词:XverifyApi 合法api验证参数

  •  关键词:Authorization 存储当前用户认证信息

  •  关键词:XfilterAreaCode 行政区编码, 对应 bo_sys_area area_code

  •  关键词:Xlang 页面浏览器语言 zh-CN

  •  关键词:Content-Type: application/json; charset=utf-8 请求类型

  •  关键词: _columnField 控制显示mapper里面那个字段

  •  关键词: _columnAlias 控制显示mapper里面那个字段(下划线alias小写列名)

  •  关键词: _dataT 控制结果数据转换类型 stirng/int

  •  关键词: popeResField/popeMkey 权限配置继承

  •  关键词: _localCacheKey 前端本地化存储的缓存key window.$localforageCache

  •  关键词: _frowWs=true 来至websoket

  •  关键词: _queues={ownerId}|{mkey}|{resField} 用于唯一性的粒度更小的websoket

  •  关键词: _order=sortid:asc|sys_id:desc 排序(sql危险字符会被删除 asc 升序 desc 降序)

  •  关键词: _sortchild=sortid:asc|sys_id:desc 排序(sql危险字符会被删除 asc 升序 desc 降序)

  •  关键词: _showParams=true (url)显示参数,用户开发排查和调试

  •  关键词: _showResult=true (url)显示处理前结果,用户开发排查和调试

  •  关键词: _nocache=true 不受缓存控制,通常用于开发者调试

  •  关键词: _mapperType=1 通过Sql语句加载过滤(通常用于权限和sql映射)

  •  关键词: _rmtKvF kv值结果转 v, 参数值为列 field1,field2

  •  关键词: _rmtKvT kv值结果转 v, 值有sqlConfig.Base.RmtKvMappers配置

  •  关键词: _chartType=uchart/echart 图表组件类型

  •  关键词: _nodebiz=true 开启nodejs组合和处理数据

  •  关键词: nodeAtO 把列表数组转换对象,值为数组对象里面唯一字段(如nodeAtO=mfId)

  •  关键词: _nodedir 业务插件存放目录 开启nodejs组合和处理数据

  •  关键词: _showResult=true 开启nodejs 显示结果,便于排查和调试

  •  关键词: _showParams=true 开启nodejs 显示参数,便于排查和调试

  •  关键词: _dbkv=true (url)只返回KvtRecord格式的数据

  •  关键词: _filterDateId=0 业务时间参数,结合{{whereSqlDateId:startdate}}

  •  关键词: removeActions=add,edit,detail,up,down,history,detail,ocr,del,check,import,export,refresh,search,popedom,api 移除不显示的功能

  •  关键词: filterRemoves=fieldName 移除不过滤的字段


 //用于处理引用已有的权限
  if (dictionaryUrl.ContainsKey("_popeResField"))
  {
       pf.ReponseField = dictionaryUrl["_popeResField"].ToString();
  }
  if (dictionaryUrl.ContainsKey("_popeMkey"))
  {
       pf.ModuleKey = dictionaryUrl["_popeMkey"].ToString();
  }
      //处理权限继承
      filterT._popeResField = fieldT;
      filterT._popeMkey = mkeyT;
      mkeyT = "bo-user-account";
      fieldT = "pswd_detail";
      res.account = {
        batO: "ui"
      };
  •  关键词:_verifyMenuId 通过特殊方式验证菜单并获取权限

//控制特殊接口不受_menuId控制,只用于站内


export function verifyMenuId(menuId, userId, mkey, field) {
  return encryptByDES(`${userId}|${menuId}|${mkey}|${field}|${dayjs().add(6, 'second').valueOf()}`);
}

   let _menuId = (that.rootMeta || {}).menuId;
        let _mkey = (that.rootMeta || {}).mkey;
        let _field = (that.rootMeta || {}).field;
        let _verifyMenuId = that.$verifyGuid.menuId(_menuId, that.$loginAuth.getUserId(), _mkey, _field);
  • 关键词: menuId 控制权限的栏目ID,对应表bosys_menu 里面menu_id, 如果需要授权的接口,_menuId必须传递
 string temp = _desService.DecryptDefault(pf.OwnerId, pf.SysId, dictionaryUrl["_verifyMenuId"]?.ToString());
            menuId = temp.Split("|")[1];
            userId = temp.Split("|")[0];
            pf.ModuleKey= temp.Split("|")[2];
            pf.ReponseField = temp.Split("|")[3];
            DateTime? dataE = DateTimeUtil.ConvertTimestamp(Convert.ToDouble(temp.Split("|")[4]));
            totalSeconds = (dataE.Value - DateTime.Now).TotalSeconds;
  •  关键词:rmt 控制请求转换来源类型 page/search/detail/add/edit
  •  关键词:_rmtSecond 二级转换类型 L2O(列表转对象)
  •  关键词:success 数据是否正确请求
  •  关键词:data 响应的结果数据,格式如[{}] 或 {}
  •  关键词:error 异常存储对象, 配合 errorCode 和 errorText使用
  •  关键词:paging 分页结果存储对象
  •  关键词:pageSize 当前每页显示的记录数
  •  关键词:totalCount 当前记录总数
  •  关键词:totalPage 当前总页数
  •  关键词:pageIndex 当前第几页(第一页为1)
  •  关键词:currentCount 当前已加载的记录数
  •  关键词:currentRate 当前已加载记录数占总记录数的比例
  •  建议词:areaCode 行政编码
  •  建议词:parentId 上级ID
  •  建议词:createUserId 创建用户ID
  •  建议词:createDate 数据创建时间
  •  建议词:modifyUserId 修改用户ID
  •  建议词:modifyTime 数据修改时间
  •  建议词:auditStatus 审核状态 -1 草稿箱 0 待审核 1 已通过 2 已打回
  •  建议词:auditUserId 审核用户ID
  •  建议词:auditDate 审核时间
  •  建议词:remark 备注
  •  建议词:description 概要
  •  建议词:content 内容(大数据)
  •  建议词:status 状态 0=停用,1=正常 2=待审核 3=待确认 -1 待提交
  •  建议词:isEnabled 1启用 0禁用
  •  建议词:lng 经度,浮点型,精确12位
  •  建议词:lat 维度,浮点型,精确12位
  •  建议词:geography 空间类型,存储 经纬度点、线、面 数据,MYSQL类型:geometry,MSSQL类型:geography
  •  建议词:_fromSource 来源应用类型 wechatpc/wechat/wechatmini
  •  建议词:_fromTerminal来源应用类型 wechatpc/wechat/wechatmini window.$appNavs.fromTerminal
  •  建议词:_openUser 第三方登录参数,直接加密后传递给平台授权登录
  •  是否:is_ (库列名)
  •  迭代:parent_ (库列名)
  •  富文本:_content (库列名)
$crypto.encryptByDES(JSON.stringify(loginInfo));


//登录信息。需要加密后传递给webview
loginInfo: {
  loginType: "wechatmini",//微信小程序  telephone/username
  userId: null,
  account: {
    userId: null,
    batO: "ui",
    nikeName: null,
    wxAppOpenId: null,
    wxUnionId: null
  },
  sex: {
    value: null // 1男 0 女 gender
  },
  province: null, //"Fujian"
  city: null, //"Fuzhou"
  country: null, //"China"
  headIcon: null //avatarUrl
},

nodejs插件处理结果数据 入口


/**
 * 自定义业务数据特殊处理,通过  params={_rmt,_mkey,_resField}
 * @param {结果} result
 * @param {参数} params
 */
function doBusiness(result, params) {
    if (params._showResult) {
        // 显示结果,便于排查和调试
        return result;
    } else if (params._showParams) {
        // 显示参数,便于排查和调试
        return params;
    } else if (params._mkey === "menu-nav" && params._resField === "content") {
        return result;
    } else if (params._ownerId && Array.isArray(params._ownerId) && params._ownerId.length > 0) {
        // 通过动态加载,便于业务化扩展
        var fnBusiness = require(`../${params._ownerId[0]}/commons/fn-common-data-business.js`);
        return fnBusiness.doBusiness(result, params);
    }  else if (params._ownerId && params._ownerId.length > 0) {
        // 通过动态加载,便于业务化扩展
        var fnBusiness = require(`../${params._ownerId}/commons/fn-common-data-business.js`);
        return fnBusiness.doBusiness(result, params);
    } else {
        return result;
    }
}
//业务特殊处理
exports.doBusiness = doBusiness;

nodejs插件处理结果数据

/**
 * 自定义业务数据特殊处理,通过  params={_rmt,_mkey,_resField}
 * @param {结果} result
 * @param {参数} params
 */
function doBusiness(result, params) {
    // 进行业务逻辑处理
    if (params._nodedir) {
        var fnBusiness = require(`../${params._nodedir}/fn-${params._mkey}-${params._resField}.js`);
        return fnBusiness.doBusiness(result, params);
    } else if (params._nodebiz) {
        var fnBusiness = require(`../business/fn-${params._mkey}-${params._resField}.js`);
        return fnBusiness.doBusiness(result, params);
    } else {
        return result;
    }
}
//业务特殊处理
exports.doBusiness = doBusiness;
文档更新时间: 2024-10-10 09:32   作者:admin