SysLoginController.java 3.4 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.AjaxResult;
  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.core.service.UserService;
  10. import com.ruoyi.common.utils.LoginUtils;
  11. import com.ruoyi.common.utils.spring.SpringUtils;
  12. import com.ruoyi.system.domain.vo.RouterVo;
  13. import com.ruoyi.system.service.ISysMenuService;
  14. import com.ruoyi.system.service.SysLoginService;
  15. import com.ruoyi.system.service.SysPermissionService;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import lombok.RequiredArgsConstructor;
  19. import org.springframework.validation.annotation.Validated;
  20. import org.springframework.web.bind.annotation.GetMapping;
  21. import org.springframework.web.bind.annotation.PostMapping;
  22. import org.springframework.web.bind.annotation.RequestBody;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.Set;
  28. /**
  29. * 登录验证
  30. *
  31. * @author Lion Li
  32. */
  33. @Validated
  34. @Api(value = "登录验证控制器", tags = {"登录验证管理"})
  35. @RequiredArgsConstructor
  36. @RestController
  37. public class SysLoginController {
  38. private final SysLoginService loginService;
  39. private final ISysMenuService menuService;
  40. private final SysPermissionService permissionService;
  41. /**
  42. * 登录方法
  43. *
  44. * @param loginBody 登录信息
  45. * @return 结果
  46. */
  47. @ApiOperation("登录方法")
  48. @PostMapping("/login")
  49. public AjaxResult<Map<String, Object>> login(@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 AjaxResult.success(ajax);
  56. }
  57. @ApiOperation("登出方法")
  58. @PostMapping("/logout")
  59. public AjaxResult<Void> logout() {
  60. try {
  61. StpUtil.logout();
  62. } catch (NotLoginException e) {
  63. }
  64. return AjaxResult.success("退出成功");
  65. }
  66. /**
  67. * 获取用户信息
  68. *
  69. * @return 用户信息
  70. */
  71. @ApiOperation("获取用户信息")
  72. @GetMapping("getInfo")
  73. public AjaxResult<Map<String, Object>> getInfo() {
  74. SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.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 AjaxResult.success(ajax);
  84. }
  85. /**
  86. * 获取路由信息
  87. *
  88. * @return 路由信息
  89. */
  90. @ApiOperation("获取路由信息")
  91. @GetMapping("getRouters")
  92. public AjaxResult<List<RouterVo>> getRouters() {
  93. Long userId = LoginUtils.getUserId();
  94. List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
  95. return AjaxResult.success(menuService.buildMenus(menus));
  96. }
  97. }