基本信息
文档信息
| 文档名称 | 多租户APP_权限通配符 | | | | — | — | — | — | | 文档编号 | V2.0 | 文档版本日期 | 2024-01-30 | | APP名称 | 多租户APP | | | | 权限通配符 | | | | | 起草人 | 古宏 黄小杰 范明哲 | 起草日期 | 2022-01-30 | | 复审人 | | 复审日期 | |
版本历史
| 版本 | 日期 | 作者 | 更改参考 | 说明 | | — | — | — | — | — | | V1.0 | 2024-01-30 | 古宏 黄小杰 范明哲 | | 初稿 | | | | | | |
迭代分支
| 名称 | 内容 | | — | — | | 分支 | feat_xxx | | 前端原始分支 | | | 后端原始分支 | |
审批信息
| 签字/日期 | | | — | — | | 审核 | | | 审批 | | | | |
目标和范围
目标
-
安装国际化APP后,页面和提示语支持设置多语言
-
用户可以页面、提示语内容设置各个语种的译文。
-
国际化APP预置简体中文、英语两种语言。
-
用户可以设置当前账号的默认语言,平台界面和内容会根据用户选择的语言进行相应的译文映射。
范围
研发范围
- UI多语言(按钮、表头、搜索字段等)
- 提示语多语言
- 菜单多语言
- 导入导出多语言包
- 日志多语言
影响范围
描述本次优化迭代研发内容范围
前端影响范围
参考引用
列出引用或是参考的文档或是文献。
相关术语
文件中可能会引起混淆的专门术语的定义和缩写词的原文。
例如:
术语 | 解释 |
---|---|
多租户 | |
功能权限 | |
数据权限 | |
API权限 | |
作用域 | |
设置器 | |
区块组件 | |
大纲 | |
模型 | |
节点树 |
总体设计介绍
过程产物
| 过程产物类型 | 说明 | | — | — | | 产品需求原型设计(可选) | 根据功能点描述清楚页面结构的设计,可以是产品的设计原型链接。 | | 交互设计(可选) |
- 页面跳转方式:需包含起始点,终结点,例如触发时机/触发节点/触发元素 | | UI设计稿(可选) |
- 规定人机界面的内容、界面风格、交互方式等
- 样式至少包含状态:常态,选中,不可用,异常,悬停 | | 后端APP包 | | | 前端APP包 | |
性能指标(可选)
操作
| 操作 | 响应时间 | | — | — | | 打开一个网站 | xx秒 | | 数据库查询一条记录 (有索引) | xx毫秒 | | 从内存读取1M数据 | xx毫秒 | | Java程序本地方法调用 | xx毫秒 | | First paint | | | First Contentful Paint | | | Time to Interactive | | | Largest Contentful Paint | | | First Meaning Paint | |
吞吐量
指单位时间内系统处理的请求数量,体现系统的整体处理能力。对于网站,可用“请求数/秒”、“页面数/秒”或“访问人数/天”、“处理业务数/小时”等来衡量。重要指标有TPS(每秒处理的事物数)、QPS(每秒查询的请求数)、HPS (每秒HTTP请求数)等
并发量
指系统能够同时处理的请求的数目,这个数字反映了系统的负载性能。对于网站而言,并发数指网站用户同时提交 请求的用户数目
后端详细设计
总体原则:承接概要设计,进一步细化。
语言包实现方案:内存模型 扩展引擎multi_language内存模型,增加autoLog属性; 定义后端视图view.json,实现在线维护多语言包。 导入/导出语言包:直接使用现有导入导出APP。 注意项:需验证内存模型是否支持分布式场景!!!
业务/实例数据多语言方案 导出数据:使用snest-base-file.jar的APP能力实现导入导出语言包Excel文件。 扩展重写原来导入导出方法,导出需要在表头增加时区信息,文件名需要翻译当前语言;根据请求的时区转换时间字段的时间。 导入数据:扩展重写原来导入方法,解析表头是否指定时区,没有则取当前请求时区,转换时间字段的时间。 根据前端方案,调整调用service的数据结构,符合多语言的CRUD
APP开发
APP信息
| 标题 | 内容 | | — | — | | 名称 | 国际化多语言APP | | 版本 | v1.0.0 | | 描述 | 描述 | | 关键词 | 关键词 | | 证书 | 证书 | | 作者 | 作者 |
依赖项
在package.json
中体现
开发环境依赖
| 依赖 | 版本 | | — | — | | Java | >=1.8 | | SpringBoot | >=2.0.0 |
平台依赖
用于描述平台安装APP时,依赖其他APP
平台依赖 | 版本 |
---|---|
底座 | >1.0.0 |
多租户APP | *(所有版本) |
第三方依赖
| 依赖 | 版本 | | — | — | | maven | maven 包依赖,包含工具类、开源框架等 |
业务模型结构(必选)–架构师(业务建模)
承接概要设计的元模型对象结构清单。 有枚举值的,需要在字段描述中穷举出来。
sie_multil_language_app multil_language MODEL
/**
* 多语言模型
*
* @author sie
*/
@Model(isLogicDelete = Bool.True)
public class MultiLanguage extends BaseModel<MultiLanguage> {
@Property(columnName = "appName", displayName = "app名称",displayForModel = true)
private String appName;
@Property(columnName = "type", displayName = "类型")
private String type;
@Property(columnName = "key", displayName = "格式")
private String key;
@Property(columnName = "value", displayName = "译文")
private String value;
@Property(columnName = "lang", displayName = "语言")
private String lang;
}
/**
* 支持语言模型
*
* @author sie
*/
@Model(isLogicDelete = Bool.True)
public class SupportLanguage extends BaseModel<SupportLanguage> {
@Property(columnName = "lang", displayName = "语言")
private String lang;
@Property(columnName = "lang_code", displayName = "语言编码")
private String lang_code;
}
类图(可选)–架构师
通过类图展示程序结构。
时序图(可选)–架构师
通过时序图展示程序逻辑关系和调用链路。
时序图需要承接领域示意图与系统边界图那部分的复杂场景。
存在跨系统、跨领域间的通讯一定要有时序图
接口设计(必选)–开发
承接概要设计的接口清单,包括web接口、远程接口、本地接口(跨模块接口),详细说明接口IPO(输入、处理过程、输出)。
如果是HTTP接口,可以通过使用swagger定义导出,然后在“接口描述”上增加处理过程逻辑描述,或者直接在swagger定义时描述接口处理过程逻辑。
例如:
APP-sie_multi_language MODEL-multi_language create接口
create【多语言翻译数据管理】多语言翻译数据新增接口
补充描述:此接口支持批量新增翻译管理数据
接口请求路径示例:
http://10.10.6.172:8060/root/rpc/service/?model=multi_language&service=create
请求参数示例:
{
"id": "guid",
"jsonrpc": "2.0",
"method": "service",
"params": {
"args": {
"useDisplayForModel": true,
"valuesList": [
{
"app_name": "base",
"sys_source_name": "登录名",
"type": "meta",
"lang": "zh-CN",
"key":"base.rbac_user.displayName",
"value": "登录名"
},
{
"app_name": "base",
"sys_source_name": "系统异常!",
"type": "meta",
"lang": "en-US",
"key": "base.rbac_user.displayName",
"value": "System Error!"
}
]
},
"context": {
"uid": "",
"lang": "zh_CN"
},
"model": "multi_language",
"tag": "master",
"service": "create",
"app": "sie-multi-language"
}
}
返回参数示例:
{
"id": "guid",
"jsonrpc": "2.0",
"result": {
"data": [
],
"context": {
"uid": "",
"lang": "zh_CN",
"tenantId": "03kkylgjxf51b",
"token": "cae26ebfc0a54a39b2e0da35633d19b6cd11cb19efe6457ce5c8305f32fe206a59763a247662f8ce17da11ef56f4c86292fe7f1c35a3fc07acb24be88f99e0465a240d1185d3e86c2a578c4c8840a02553932676274d68774f8917fe4727ce9ce6683e2858afb96c345cc7dee0e28fcdf46511bb1878408c5f5995d7341aa54f9fa09d230277c4151d7468de927f77a111757cc7a5bce6ab54173fba5fd7029f2993807d54341a01453a469d0774ffe26d57252385d62c84076bb0136dbedeb1d34b738a8030e37b84f75912c1bec62f7992660ea7d2073f2fb30ad7ae2644206db542fc0b06198bd551a6a2ec0676d2",
"roles": [
"rbac_role_implementer_admin"
],
"sgs": [],
"curSg": null,
"globalFilter": {},
"clientId": null
}
}
}
接口时序图(可选)
如果接口逻辑复杂,需要详细描述接口的处理过程。
###
定时任务(可选)–开发
承接概要设计的定时任务清单(如果有),详细说明定时任务触发条件、实现逻辑。
例如:
Xx定时任务
| 任务名称 | Xxx | | — | — | | 描述 | | | 调度策略 | 每30分钟一次 | | 实现逻辑 | |
种子数据(可选)–开发
数据初始化
配置
数据字典
字典编码 | 字典名称 | 描述 | 字典项 |
---|---|---|---|
LANGUAGES | 语种 | 多语言语种 | 中文简体 (0)中文繁体 (1)英语 (2) |
字典编码 | 字典名称 | 描述 | 字典项 |
---|---|---|---|
Redis Key(可选)–开发
| 名称 | 信息 | | — | — | | key名称 | SSO:TOKEN:{登录账号} | | value类型 | string | | value示例,需要对value的字段进行说明:字段的含义:token来源:登录时候生成作用:校验登录 | eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1ZDA0NTJmMi1iMzU0LTQ0YjctYjZkYS04OTNiYTRkYjQ5OWUiLCJpc3MiOiJzaWUtaW90LWp3dCIsInN1YiI6IntcInBob25lTnVtYmVyXCI6XCIxMzYyNjIzMjEwOFwiLFwibG9naW5Gcm9tXCI6XCJQQ1wiLFwidXNlcm5hbWVcIjpcIjEzNjI2MjMyMTA4XCJ9IiwiaWF0IjoxNzA2MjMwOTMwfQ.Moftm51UDor0inoqD18tWI_LaQlz030LAqS5oRpmEXA |
异常处理(可选)–开发
列出开可能出现的业务异常、系统异常,并且统一编码说明。
异常类型 | 异常编码 | 异常提示 | 说明 |
---|---|---|---|
前端详细设计
APP开发
根据迭代内容选择新建、迭代的模板
新建APP(根据迭代选)
APP使用文档、介绍信息等等
写在README.md
中,在应用市场中展示给用户的信息
APP信息
在app.json
中体现
标题 | 内容 |
---|---|
name | APP名 |
version | 版本号 |
discription | 描述 |
keywords | 关键词 |
license | 证书 |
author | 作者 |
依赖项
在package.json
中体现
开发环境依赖
依赖 | 版本 |
---|---|
node | >=18 |
pnpm | >=8 |
平台依赖
用于描述平台安装APP时,依赖其他APP
平台依赖 | 版本 |
---|---|
底座 | >1.0.0 |
多租户APP | *(所有版本) |
第三方依赖
| 依赖 | 版本 | | — | — | | dependencies | npm包依赖,包含平台组件市场的npm包等,第三方依赖 | | devDependencies | 开发依赖 |
迭代的APP(根据迭代选)
当前APP信息
系需要体现此次迭代修改的内容
平台依赖
用于描述平台安装APP时,依赖其他APP 系需要体现此次迭代修改的内容
平台依赖 | 变更前版本 | 变更后 |
---|---|---|
底座 | >1.0.0 | >1.5.0 |
多租户APP | * | >2.0.0 |
组件
xxx组件
对应的产品文档/原型/设计稿
截图说明
组件扩展性
- 扩展的属性
- 可扩展的方法
- 不可扩展的内容注意事项
组件功能
列出组件功能说明
- 搜索功能
- 排序功能
- 清除输入功能
必要的组件属性
属性 | 描述 | 类型 | 默认值 |
---|---|---|---|
type | 节点类型 | string | - |
… | … | … | … |
必要的组件事件
事件 | 描述 | 参数 | 返回值 |
---|---|---|---|
click | 点击事件 | name,age | {} |
… | … | … | … |
SDK开发
SDK描述
版本号
依赖项
开发环境依赖
| 依赖 | 版本 | | — | — | | node | >=18 | | pnpm | >=8 |
第三方依赖
| 依赖 | 版本 | | — | — | | 引擎 | ~v1.0.0 | | 开发时的依赖项 | | | 使用时的依赖项 | | | … | … |
兼容性
向前兼容时需要注意的地方
开发规范
文件结构,接口规范,不支持的写法等
XXXX接口
描述该接口的功能|
入口
| 参数 | 描述 | 类型 | 是否必填 | 默认值 | | — | — | — | — | — | | comp | 组件配置 | object | 是 | - |
出口
| 返回值 | 描述 | 类型 | | — | — | — | | schema | node树 | object |
任务拆分
本次优化迭代内容,工作任务拆分,链接任务拆分基本点