通用下拉

前言

通用下拉接口是一个高效且灵活的数据接口设计,旨在简化前端下拉选项列表的获取过程。通过定义特定的路由规则,前端可以轻松地请求对应表的下拉选项数据,无需为每个下拉列表单独编写后端接口。

该设计的核心思想是将路由规则与数据表进行映射。例如,通过访问/sys/user/select路由,接口会自动从用户表中获取数据,并返回格式化的下拉列表数据;同样地,访问/sys/role/select路由则会返回角色下拉列表数据。

接口返回的数据格式统一为label/value格式,其中label表示下拉选项的显示文本,value表示选项的实际值。这种格式的数据易于被前端组件(如ApiSelect组件)解析和渲染,提高了开发效率和用户体验。

控制层类

系统默认的通用下拉接口处理类 mldong-admin/src/main/java/com/mldong/modules/sys/controller/LowCodeController.java

package com.mldong.modules.sys.controller;

@RestController
@Api(tags = "低代码相关接口")
@RequiredArgsConstructor
public class LowCodeController {
    @PostMapping("/{module}/{tableName}/select")
    @ApiOperation(value="通用下拉接口")
    public CommonResult<List<LabelValueVO>> defaultSelect(
        @PathVariable("module") String module,
        @PathVariable("tableName")String tableName,
        @RequestBody @Validated Dict param) {
        return CommonResult.data(LowCodeServiceUtil.select(module,tableName,param));
    }
}

关于接口重写

如果通用接口不满足需要,可自行去对应的实体控制层类添加接口方法,以/sys/user/select接口为例。

package com.mldong.modules.sys.controller;

@RestController
@Api(tags = "用户管理")
@RequiredArgsConstructor
public class UserController {
    private final UserService userService;

    @PostMapping("/sys/user/select")
    @ApiOperation(value="用户下拉列表", notes="sys:user:select")
    public CommonResult<List<LabelValueVO>> select(@RequestBody @Validated UserPageParam param) {
        return CommonResult.data(userService.select(param));
    }

}

上面就是对/sys/user/select进行了重写,其查询逻辑在对应的userSevice.select方法中。

关于通用下拉接口

  • 接口地址:{baseUrl}/{moduleName}/{entity}/select
    • 例1:/sys/post/select,对应的就是岗位表sys_post的下拉数据
    • 例2:/sys/user/select,对应的就是用户表sys_user的下拉数据
    • 例3:/sys/user/select,对应的就是角色表sys_role的下拉数据
  • 请求方式:POST
  • 入参样例:
{
  "labelKey": "name",
  "valueKey": "id"
}
  • labelKey(必填):指定下拉选项中用于显示文本的字段名。
  • valueKey(必填):指定下拉选项中用于标识选项实际值的字段名。
  • 其他参数和通用查询接口的参数一样
  • 响应样例:
{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "label": "架构师",
            "value": "1705025204485042177",
            "ext": {}
        },
        {
            "label": "后端开发",
            "value": "1705025270398529538",
            "ext": {}
        },
        {
            "label": "前端开发",
            "value": "1705025362337673217",
            "ext": {}
        },
        {
            "label": "业务员",
            "value": "1705025419610894338",
            "ext": {}
        },
        {
            "label": "总经理",
            "value": "1712270597442670593",
            "ext": {}
        },
        {
            "label": "部门经理",
            "value": "1712271151770308609",
            "ext": {}
        },
        {
            "label": "董事长",
            "value": "1712271647297966081",
            "ext": {}
        }
    ]
}