SysLoginController.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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.beans.factory.annotation.Autowired;
  20. import org.springframework.validation.annotation.Validated;
  21. import org.springframework.web.bind.annotation.GetMapping;
  22. import org.springframework.web.bind.annotation.PostMapping;
  23. import org.springframework.web.bind.annotation.RequestBody;
  24. import org.springframework.web.bind.annotation.RestController;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.Set;
  29. /**
  30. * 登录验证
  31. *
  32. * @author Lion Li
  33. */
  34. @Validated
  35. @Api(value = "登录验证控制器", tags = {"登录验证管理"})
  36. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  37. @RestController
  38. public class SysLoginController {
  39. private final SysLoginService loginService;
  40. private final ISysMenuService menuService;
  41. private final SysPermissionService permissionService;
  42. /**
  43. * 登录方法
  44. *
  45. * @param loginBody 登录信息
  46. * @return 结果
  47. */
  48. @ApiOperation("登录方法")
  49. @PostMapping("/login")
  50. public AjaxResult<Map<String, Object>> login(@RequestBody LoginBody loginBody) {
  51. Map<String, Object> ajax = new HashMap<>();
  52. // 生成令牌
  53. String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
  54. loginBody.getUuid());
  55. ajax.put(Constants.TOKEN, token);
  56. return AjaxResult.success(ajax);
  57. }
  58. @ApiOperation("登出方法")
  59. @PostMapping("/logout")
  60. public AjaxResult<Void> logout(){
  61. try {
  62. StpUtil.logout();
  63. } catch (NotLoginException e) {
  64. }
  65. return AjaxResult.success("退出成功");
  66. }
  67. /**
  68. * 获取用户信息
  69. *
  70. * @return 用户信息
  71. */
  72. @ApiOperation("获取用户信息")
  73. @GetMapping("getInfo")
  74. public AjaxResult<Map<String, Object>> getInfo() {
  75. SysUser user = SpringUtils.getBean(UserService.class).selectUserById(LoginUtils.getUserId());
  76. // 角色集合
  77. Set<String> roles = permissionService.getRolePermission(user);
  78. // 权限集合
  79. Set<String> permissions = permissionService.getMenuPermission(user);
  80. Map<String, Object> ajax = new HashMap<>();
  81. ajax.put("user", user);
  82. ajax.put("roles", roles);
  83. ajax.put("permissions", permissions);
  84. return AjaxResult.success(ajax);
  85. }
  86. /**
  87. * 获取路由信息
  88. *
  89. * @return 路由信息
  90. */
  91. @ApiOperation("获取路由信息")
  92. @GetMapping("getRouters")
  93. public AjaxResult<List<RouterVo>> getRouters() {
  94. Long userId = LoginUtils.getUserId();
  95. List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
  96. return AjaxResult.success(menuService.buildMenus(menus));
  97. }
  98. }