SysLoginController.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.ruoyi.web.controller.system;
  2. import cn.dev33.satoken.exception.NotLoginException;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import com.ruoyi.common.constant.Constants;
  5. import com.ruoyi.common.core.domain.R;
  6. import com.ruoyi.common.core.domain.entity.SysMenu;
  7. import com.ruoyi.common.core.domain.entity.SysUser;
  8. import com.ruoyi.common.core.domain.model.LoginBody;
  9. import com.ruoyi.common.helper.LoginHelper;
  10. import com.ruoyi.system.domain.vo.RouterVo;
  11. import com.ruoyi.system.service.ISysMenuService;
  12. import com.ruoyi.system.service.ISysUserService;
  13. import com.ruoyi.system.service.SysLoginService;
  14. import com.ruoyi.system.service.SysPermissionService;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.RequiredArgsConstructor;
  18. import org.springframework.validation.annotation.Validated;
  19. import org.springframework.web.bind.annotation.GetMapping;
  20. import org.springframework.web.bind.annotation.PostMapping;
  21. import org.springframework.web.bind.annotation.RequestBody;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Set;
  27. /**
  28. * 登录验证
  29. *
  30. * @author Lion Li
  31. */
  32. @Validated
  33. @Api(value = "登录验证控制器", tags = {"登录验证管理"})
  34. @RequiredArgsConstructor
  35. @RestController
  36. public class SysLoginController {
  37. private final SysLoginService loginService;
  38. private final ISysMenuService menuService;
  39. private final ISysUserService userService;
  40. private final SysPermissionService permissionService;
  41. /**
  42. * 登录方法
  43. *
  44. * @param loginBody 登录信息
  45. * @return 结果
  46. */
  47. @ApiOperation("登录方法")
  48. @PostMapping("/login")
  49. public R<Map<String, Object>> login(@Validated @RequestBody LoginBody loginBody) {
  50. Map<String, Object> ajax = new HashMap<>();
  51. // 生成令牌
  52. String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
  53. loginBody.getUuid());
  54. ajax.put(Constants.TOKEN, token);
  55. return R.ok(ajax);
  56. }
  57. @ApiOperation("登出方法")
  58. @PostMapping("/logout")
  59. public R<Void> logout() {
  60. try {
  61. StpUtil.logout();
  62. } catch (NotLoginException e) {
  63. }
  64. return R.ok("退出成功");
  65. }
  66. /**
  67. * 获取用户信息
  68. *
  69. * @return 用户信息
  70. */
  71. @ApiOperation("获取用户信息")
  72. @GetMapping("getInfo")
  73. public R<Map<String, Object>> getInfo() {
  74. SysUser user = userService.selectUserById(LoginHelper.getUserId());
  75. // 角色集合
  76. Set<String> roles = permissionService.getRolePermission(user);
  77. // 权限集合
  78. Set<String> permissions = permissionService.getMenuPermission(user);
  79. Map<String, Object> ajax = new HashMap<>();
  80. ajax.put("user", user);
  81. ajax.put("roles", roles);
  82. ajax.put("permissions", permissions);
  83. return R.ok(ajax);
  84. }
  85. /**
  86. * 获取路由信息
  87. *
  88. * @return 路由信息
  89. */
  90. @ApiOperation("获取路由信息")
  91. @GetMapping("getRouters")
  92. public R<List<RouterVo>> getRouters() {
  93. Long userId = LoginHelper.getUserId();
  94. List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
  95. return R.ok(menuService.buildMenus(menus));
  96. }
  97. }