一、编写menu.json文件
{
"systemKey": "blog",
"applicationKey": "member",
"menus": [
{
"menuKey": "member",
"menuName": "客户管理",
"path": "#",
"sort": 1,
"childMenu": [
{
"menuKey": "member.member",
"menuName": "客户列表",
"path": "/member/list",
"sort": 1
},
{
"menuKey": "member.tag",
"menuName": "客户标签管理",
"path": "/member/tag",
"sort": 2
},
{
"menuKey": "member.integral",
"menuName": "客户标签管理",
"path": "/member/integral",
"sort": 3
}
]
},
{
"menuKey": "system",
"menuName": "系统管理",
"path": "#",
"sort": 1,
"childMenu": [
{
"menuKey": "system.operateLog",
"menuName": "系统操作日志",
"path": "/system/operateLog",
"sort": 2
}
]
}
]
}
二、在Controller类的接口方法上添加@NoLogin注解或@SourceAuth注解
@RestPathController("/sys-user")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@NoLogin
@PostMapping("/login")
public ResultModel<SysUserLoginVO> login(@RequestBody @Validated SysUserLoginDTO dto) {
return ResultModel.ok(sysUserService.login(dto));
}
@PostMapping("/info")
public ResultModel<SysUserVO> info(@RequestHeader(value = "token", required = false) String token) {
return ResultModel.ok(sysUserService.info(token));
}
@SourceAuth(menuKeys = "system.sysUser", authKeys = "list", authName = "系统用户列表")
@PostMapping("/list")
public ResultModel<PageInfo<SysUserListVO>> list(@RequestBody SysUserListDTO dto) {
return ResultModel.ok(sysUserService.list(dto));
}
@SourceAuth(menuKeys = "system.sysUser", authKeys = "enable", authName = "启用/禁用系统用户")
@GetMapping("/enable/{id}")
public ResultModel<Void> enable(@PathVariable Long id) {
sysUserService.enable(id);
return ResultModel.ok();
}
@SourceAuth(menuKeys = "system.sysUser", authKeys = "sync-crm-user", authName = "同步CRM用户")
@PostMapping("/sync-crm-user")
public ResultModel<Void> syncCrmUser() {
sysUserService.syncCrmUser();
return ResultModel.ok();
}
@PostMapping("/update-password")
public ResultModel<Void> updatePassword(@RequestBody UpdatePasswordDTO dto) {
sysUserService.updatePassword(dto);
return ResultModel.ok();
}
}
- 加了@NoLogin的登录方法无需登录即可访问
- 加了@SourceAuth的方法需要对应的权限才可访问,其中menuKeys必须要对应menu.json文件中,最底层一级菜单的menuKey才行;authKeys是当前操作的权限,会拼接上菜单key。
三、最终页面效果
全自动生成,无需在页面上增删改查。