开发辅助
Quick Reference
https://cdn.rg1008.com/sources/view/reference/index.html
AICODE模板配置
https://doc.rg1008.com/docs/rg_dev_ai/rg_dev_ai-1fmp9gd4iqi64
关键信息
关键词: 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;