Skip to content

数据模型

在请求参数和返回参数中可对参数进行数据处理,选择对应的数据模型对参数值进行二次处理。 An image

  • 请求参数模型
  1. 手机号校验:校验参数值是否符合手机号规则
  2. 邮箱校验:校验参数值是否符合邮箱地址规则
  3. 长度校验:校验参数值是否设置的长度规则,需设置【模型规则】列,如:6
  4. 数值校验:校验参数值是否是否是数值
  5. 正则校验:校验参数值是否设置的正则规则,需设置【模型规则】列,如:^[0-9]+$
  • 返回参数模型
  1. 字段隐藏:在返回字段数据中删掉该字段
  2. 主键/子集:对返回的列表数据根据主键/子集规则进行内嵌结构转换
  3. 内容拼接:对字段数据进行固定值拼接
  4. 内容替换:对字段数据按规则替换
  5. 内容截取:对字段数据按规则截取,需设置【模型规则】列,如:0,2
  6. 内容分割:对字段数据按规则分割,需设置【模型规则】列,如:@
  7. 时间格式化:对字段数据按规则格式化,需设置【模型规则】列,如:yyyy-MM-dd
  8. 函数标识:根据函数标识的字段对返回数据进行内嵌结构转换
  9. 数据脱敏:对返回的字段数据进行加密脱敏

  • 数据处理示例
    下面示例对返回数据设置多个数据模型 An image

模型处理后结果 An image


  • 结构转换示例
    对编写关联多表查询的sql返回的关联数据进行逻辑嵌套处理。

关联查询SQL

sql
select
  u.user_id,
  u.`user_name`,
  r.role_name,
  r.role_id,
  m.menu_name,
  m.menu_id
from
  base_sys_user u,
  base_sys_role r,
  base_sys_role_menu rm,
  base_sys_menu m
where
  u.role_id = r.role_id
  and r.role_id = rm.role_id
  and rm.menu_id = m.menu_id

查询结果

An image

设置数据模型
对SQL脚本返回中的主键字段设置为数据模型【主键】,【子集】列roles和menus为手动新增的对象字段,SQL脚本中是不存在,【子集】下面是内嵌的字段列,是SQL脚本中存在关联字段An image

处理后的内嵌数据

json
{
  "msg": "success",
  "code": 0,
  "data": [
    {
      "roles": [
        {
          "role_id": 2,
          "role_name": "用户",
          "menus": [
            {
              "menu_id": 7,
              "menu_name": "接口详情"
            },
            {
              "menu_id": 3,
              "menu_name": "工作台"
            }
          ]
        }
      ],
      "user_id": 10002,
      "user_name": "admin321"
    }
  ]
}

  • 函数使用示例
    使用数据库自带的函数实现关联内嵌json查询。如mysql的JSON_ARRAYAGG函数。

函数SQL

sql
SELECT
  u.user_id,
  u.user_name,
  JSON_ARRAYAGG(
    JSON_OBJECT(
      'roleId', r.role_id,
      'roleName', r.role_name,
      'menus', role_menus.menus
    )
  ) AS roles
FROM base_sys_user u
INNER JOIN base_sys_role r ON u.role_id = r.role_id
INNER JOIN (
  SELECT
    rm.role_id,
    JSON_ARRAYAGG(
      JSON_OBJECT(
        'menuId', m.menu_id,
        'menuName', m.menu_name
      )
    ) AS menus
  FROM base_sys_role_menu rm
  INNER JOIN base_sys_menu m ON rm.menu_id = m.menu_id
  GROUP BY rm.role_id
) AS role_menus ON r.role_id = role_menus.role_id
GROUP BY u.user_id, u.user_name;

查询结果An image

设置数据模型对SQL脚本中的JSON_ARRAYAGG的别名字段设置为数据模型中的【函数标识】An image

处理后的内嵌数据An image