系统配置

平台提供了系统配置组件及类库,用于存储及获取配置信息。支持按组织配置,下级组织继承上级组织的配置。并且可以扩展为其他路径配置

在应用中添加配置组件后

  • 在应用中生成两张表:配置表 config 和 配置项表 config_schema
  • 在企业门户应用的统一通用配置中,可以配置该应用的配置信息

在 IDE 中,从市场下载系统配置组件(无需添加到页面上)

1719477364891

配置表结构

系统配置存储在 config 表中,结构如下,其中配置、分组、路径和服务联合唯一

模型名 字段名 说明
主键 id id ID
配置 name name 配置
配置名称 label label 配置的描述
配置内容 content content 配置的内容,JSON 格式,一个配置可以包含多个配置项
分组 grouping grouping 用户自定义
路径 path path 以/分隔的路径,路径上定义的配置,路径的下级节点可继承该配置
路径名称 pathLabel path_label 路径的描述
标签 tag tag 用户自定义
服务 service service 配置对应的应用名,系统提供的配置大多属于企业门户 entry

配置内容可以通过配置一个配置结构,实现界面编辑,配置结构存储在 config_schema 表中,结构如下,其中配置和服务联合唯一

模型名 字段名 说明
主键 id id 主键
配置 name name 配置
配置名称 label label 配置的描述
配置结构 schemaContent schema_content 配置的结构,符合 xRender 规范的 JSON 格式
标签 tag tag 用户自定义
服务 service service 配置对应的应用名,系统提供的配置大多属于企业门户 entry

使用配置

添加配置项

企业门户应用提供“统一配置项”,用于给应用添加配置项,如下图所示

1719477492596

配置项中最主要是填写“配置结构”,为了便于填写,表单下方给出了“配置结构模板”,列举了常用的四种模板(输入、单选、多选、开关)。首次添加配置结构时,将模板内容复制到配置结构中,再进行修改。也可以打开其他配置项,参考它的配置结构。另外,配置项使用 xRender,参考官网 https://xrender.fun/

1719477541133

添加配置

企业门户应用提供“统一通用配置”,用于给应用添加配置,如下图所示

1719477565815

选择一个配置项,在“配置内容”中显示出对应的配置内容,如下图所示

1719477618632

获取配置

系统提供前后端方法,用于获取配置信息

JS 库

JS 库为 model/UI2/wxsys/lib/base/config.js

JS 库提供两个方法

  • 方法一:获取配置
    • getConfigByPage(page,serviceName,name,grouping,path,range)
  • 方法二:按组织获取配置
    • getOrgConfigByPage(page,serviceName,name,grouping,path,range)
  • 参数说明
    • page:页面对象,必填
    • serviceName:服务,必填,用于请求路径和 sql 查询
    • name:配置,支持多个配置(多配置使用英文逗号隔开(48)),也可以指定为模糊查询。传入 123 查询 name=123 的配置,传入 123% 查询 name like 123% 的配置,传入 123,234 查询 name in (123,234) 的配置
    • grouping:分组,用于 sql 查询
    • path:路径,支持传入多个,逗号分隔。作为 getOrgConfig 的参数时,path 指组织的 fid 或 id,如果传入的是人员 id,查找配置的顺序为,先找人员的配置,然后找主岗的配置
    • range:范围,path 参数不为空时生效,self 取自身,nearest 取最近,all 取全部,默认为 nearest
  • 返回结果为 JSON 数组
    • name:配置
    • label:配置名称
    • grouping:分组
    • content:配置内容,JSON 格式
    • path:路径

获取企业门户应用中的常用功能个数 portal.commonFunc,示例代码如下

    import Config from "$UI/wxsys/lib/base/config"

    Config.getConfigByPage(this,"entry","portal.commonFunc").then(function(data){
            if (data.length > 0){
                var content = data[0].content;
    if(content && content.countfunc){
                    self.limit = content.countfunc
                }
            }
            var data = self.comp("countData");
            data.refreshData();
        },function(error){
            throw error;
        });

Java 库

Java 库为 com.justep.util.ConfigUtil,提供两个方法

  • 方法一:获取配置
    • JSONArray getConfig(String service,String name,String grouping,String path,String range)
  • 方法二:按组织获取
    • JSONArray getOrgConfig(String service,String name,String grouping,String path,String range)
  • 参数说明
    • service 服务,传 null 表示获取当前应用的配置
    • name:配置,支持多个配置(多配置使用英文逗号隔开(48)),也可以指定为模糊查询。传入 123 查询 name=123 的配置,传入 123% 查询 name like 123% 的配置,传入 123,234 查询 name in (123,234) 的配置()
    • grouping:分组,用于 sql 查询
    • path:路径,支持传入多个,逗号分隔。作为 getOrgConfig 的参数时,path 指组织的 fid 或 id,如果传入的是人员 id,查找配置的顺序为,先找人员的配置,然后找主岗的配置
    • range:范围,path 参数不为空时生效,self 取自身,nearest 取最近,all 取全部,默认为 nearest
  • 返回结果为 JSON 数组
    • name:配置
    • label:配置名称
    • grouping:分组
    • content:配置内容,JSON 格式
    • path:路径

获取配置使用案例:获取开启双重认证配置 use-two-factor-login,示例代码如下

    JSONArray configs = ConfigUtil.getConfig(null,"use-two-factor-login",null,null,null);
        if(configs.size()>0) {
            JSONObject config = configs.getJSONObject(0);
            JSONObject items = config.getJSONObject("content");
            Boolean login = items.getBoolean("twoFactorLogin");
            return login;
        }

按组织获取使用案例:获取当前登录者的双重认证白名单配置 two-factor-login,示例代码如下

    JSONArray configs = ConfigUtil.getOrgConfig(null,"two-factor-login",null,userId,null);
        if(configs.size()>0) {
            JSONObject config = configs.getJSONObject(0);
            JSONObject items = config.getJSONObject("content")
            Boolean login = items.getBoolean("twoFactorLogin");
            return login;
        }

平台扩展

平台为了更好的配置,扩展了一些属性和编辑器

设置受保护的配置项

增加 ext.protect 属性,设置受保护的配置项,在前端获取该配置时,获取不到受保护的配置项

例如:设置 appSecret 和 appKey 为受保护的配置,代码如下

    {
        "ui:labelWidth": 180,
        "type": "object",
        "properties": {
            "appKey": {
                "title": "AppKey",
                "type": "string"
            },
            "appSecret": {
                "title": "AppSecret",
                "type": "string"
            },
            "agentId": {
                "title": "AgentId",
                "type": "string"
            },
            "enableProxy": {
                "title": "访问代理",
                "type": "boolean",
                "default": true,
                "ui:widget": "switch"
            }
        },
        "ext":{
            "protect":["appKey","appSecret"]
        }
    }

path 存人员 ID

增加 ext.personOption 属性,配置 path 存人员 id 还是人员成员 id,有些配置以人为主,不管在哪个岗位下,都使用人员的配置时使用。可选项为 person 或 personMember。不设置表示存人员成员 id

例如:双重认证白名单将配置设置到人员上,代码如下

    {
        "ui:labelWidth": 180,
        "type": "object",
        "properties": {
            "twoFactorLogin": {
                "title": "开启双重认证",
                "type": "boolean",
                "default": false,
                    "ui:widget":"switch"
            }
        },
        "ext": {
            "personOption": "person"
        }
    }

动态配置编码

增加 ext.asNamePart 属性,将某个属性的值添加到配置 name 中,形成 name--属性值的新 name,用于设置多个同类型的配置

例如:系统支持配置多个微信小程序,每个配置的 name 为 com.qq.weixin.miniapp--appID 的形式,代码如下

    {
        "ui:labelWidth": 180,
        "type": "object",
        "properties": {
            "appID": {
                "title": "appID",
                "type": "string"
            },
            "appSecret": {
                "title": "appSecret",
                "type": "string"
            },
            "token": {
                "title": "消息事件消息加解密token",
                "type": "string"
            },
            "encodingAESKey": {
                "title": "消息事件消息加解密encodingAESKey",
                "type": "string"
            },
            "notifyUrl": {
                "title": "微信推送消息解密后通知地址",
                "type": "string"
            }
        },
        "ext":{
            "asNamePart":"appID"
        }
    }

配置后的效果

1719480118515

为空时显示默认值还是空值

系统提供 alwaysShowDefault 属性,用来控制当一个配置项值为空时,显示默认值,还是显示空

  • 默认情况:显示默认值
  • alwaysShowDefault 设置为 true:显示默认值
  • alwaysShowDefault 设置为 false: 显示空

例如:组织配置中的用户名正则表达式,在用户清除后,需要显示为空,设置 alwaysShowDefault 为 false 即可,代码如下

    "usernameReg": {
        "title": "用户名正则表达式",
        "type": "string",
        "default": "^[a-z][a-z0-9]*$",
        "alwaysShowDefault":false
    },

xRender隐藏操作按钮(49)

xRender 组件默认开启“显示操作按钮”,开启后需要通过点击“确认”提交按钮才能提交 xrender 数据,关闭该属性后表单内组件填入内容失去焦点后,组件会自动自动校验数据,在校验通过后,所有表单数据会统一设置到绑定字段

图 3

显示 Html 片段的编辑器

系统提供 HtmlEditor 编辑器,用来显示一个 Html 片段,例如:图标配置中,在 SVG 配置项中添加一段 SVG 代码,下面显示出 SVG 图标,如下图所示

1719480489251

图标配置中的 SVG 配置项的代码如下

    "svg": {
        "title": "SVG",
        "type": "string",
        "widget": "HtmlEditor",
        "style": {
            "backgroundColor": "#cccccc",
            "width": "40px",
            "height": "40px",
            "padding": "3px",
            "marginTop": "5px"
        },
        "options": {
            "rows": 1
        }
    }

results matching ""

    No results matching ""