通用下拉
前言
通用下拉接口是一个高效且灵活的数据接口设计,旨在简化前端下拉选项列表的获取过程。通过定义特定的路由规则,前端可以轻松地请求对应表的下拉选项数据,无需为每个下拉列表单独编写后端接口。
该设计的核心思想是将路由规则与数据表进行映射。例如,通过访问/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的下拉数据
- 例1:
- 请求方式: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": {}
}
]
}
