SysLoginController.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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.core.domain.model.SmsLoginBody;
  10. import com.ruoyi.common.helper.LoginHelper;
  11. import com.ruoyi.system.domain.vo.RouterVo;
  12. import com.ruoyi.system.service.ISysMenuService;
  13. import com.ruoyi.system.service.ISysUserService;
  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 javax.validation.constraints.NotBlank;
  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
  37. @RestController
  38. public class SysLoginController {
  39. private final SysLoginService loginService;
  40. private final ISysMenuService menuService;
  41. private final ISysUserService userService;
  42. private final SysPermissionService permissionService;
  43. /**
  44. * 登录方法
  45. *
  46. * @param loginBody 登录信息
  47. * @return 结果
  48. */
  49. @ApiOperation("登录方法")
  50. @PostMapping("/login")
  51. public R<Map<String, Object>> login(@Validated @RequestBody LoginBody loginBody) {
  52. Map<String, Object> ajax = new HashMap<>();
  53. // 生成令牌
  54. String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
  55. loginBody.getUuid());
  56. ajax.put(Constants.TOKEN, token);
  57. return R.ok(ajax);
  58. }
  59. /**
  60. * 短信登录(示例)
  61. *
  62. * @param smsLoginBody 登录信息
  63. * @return 结果
  64. */
  65. @ApiOperation("短信登录(示例)")
  66. @PostMapping("/smsLogin")
  67. public R<Map<String, Object>> smsLogin(@Validated @RequestBody SmsLoginBody smsLoginBody) {
  68. Map<String, Object> ajax = new HashMap<>();
  69. // 生成令牌
  70. String token = loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode());
  71. ajax.put(Constants.TOKEN, token);
  72. return R.ok(ajax);
  73. }
  74. /**
  75. * 小程序登录(示例)
  76. *
  77. * @param xcxCode 小程序code
  78. * @return 结果
  79. */
  80. @ApiOperation("短信登录(示例)")
  81. @PostMapping("/xcxLogin")
  82. public R<Map<String, Object>> xcxLogin(@NotBlank(message = "{xcx.code.not.blank}") String xcxCode) {
  83. Map<String, Object> ajax = new HashMap<>();
  84. // 生成令牌
  85. String token = loginService.xcxLogin(xcxCode);
  86. ajax.put(Constants.TOKEN, token);
  87. return R.ok(ajax);
  88. }
  89. @ApiOperation("登出方法")
  90. @PostMapping("/logout")
  91. public R<Void> logout() {
  92. try {
  93. StpUtil.logout();
  94. loginService.logout(LoginHelper.getUsername());
  95. } catch (NotLoginException e) {
  96. }
  97. return R.ok("退出成功");
  98. }
  99. /**
  100. * 获取用户信息
  101. *
  102. * @return 用户信息
  103. */
  104. @ApiOperation("获取用户信息")
  105. @GetMapping("getInfo")
  106. public R<Map<String, Object>> getInfo() {
  107. SysUser user = userService.selectUserById(LoginHelper.getUserId());
  108. // 角色集合
  109. Set<String> roles = permissionService.getRolePermission(user);
  110. // 权限集合
  111. Set<String> permissions = permissionService.getMenuPermission(user);
  112. Map<String, Object> ajax = new HashMap<>();
  113. ajax.put("user", user);
  114. ajax.put("roles", roles);
  115. ajax.put("permissions", permissions);
  116. return R.ok(ajax);
  117. }
  118. /**
  119. * 获取路由信息
  120. *
  121. * @return 路由信息
  122. */
  123. @ApiOperation("获取路由信息")
  124. @GetMapping("getRouters")
  125. public R<List<RouterVo>> getRouters() {
  126. Long userId = LoginHelper.getUserId();
  127. List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
  128. return R.ok(menuService.buildMenus(menus));
  129. }
  130. }