electripper-v2/ruoyi-web/src/main/java/com/ruoyi/web/common/LoginController.java
2025-04-26 15:48:10 +08:00

143 lines
4.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ruoyi.web.common;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import com.ruoyi.common.utils.ServiceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.Menu;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.model.WxLoginBody;
import com.ruoyi.common.core.domain.vo.UserVO;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.dashboard.constants.StatKeys;
import com.ruoyi.dashboard.domain.stat.StatQuery;
import com.ruoyi.dashboard.domain.stat.StatVO;
import com.ruoyi.dashboard.service.DashboardService;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.menu.service.MenuService;
import com.ruoyi.system.user.service.UserService;
/**
* 登录验证
*
* @author ruoyi
*/
@RestController
public class LoginController
{
@Autowired
private SysLoginService loginService;
@Autowired
private MenuService menuService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private UserService userService;
@Autowired
private DashboardService dashboardService;
@Value("${ruoyi.loginById}")
private Boolean loginById;
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
// 微信登录
@PostMapping("/wxLogin")
@Anonymous
public AjaxResult wxLogin(@RequestBody WxLoginBody wxLoginBody) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.wxLogin(wxLoginBody);
ajax.put(Constants.TOKEN, token);
return ajax;
}
// ID登录测试
@PostMapping("/loginById")
@Anonymous
public AjaxResult loginById(Long userId) {
ServiceUtil.assertion(!loginById, "接口不可用");
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.loginById(userId);
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*
* @return 用户信息
*/
@GetMapping("/getInfo")
public AjaxResult getInfo()
{
UserVO user = userService.selectUserById(SecurityUtils.getUserId());
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
// 统计数据
StatQuery query = new StatQuery();
query.setScope(false);
query.setUserId(user.getUserId());
query.setBonusUserId(user.getUserId());
query.setKeys(Arrays.asList(
StatKeys.WITHDRAW_SUCCESS_AMOUNT,
StatKeys.BONUS_WAIT_DIVIDE_AMOUNT
));
StatVO stat = dashboardService.selectStat(query);
AjaxResult ajax = AjaxResult.success();
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
ajax.put("stat", stat);
return ajax;
}
/**
* 获取路由信息
*
* @return 路由信息
*/
@GetMapping("/getRouters")
public AjaxResult getRouters()
{
Long userId = SecurityUtils.getUserId();
List<Menu> menus = menuService.selectMenuTreeByUserId(userId);
return AjaxResult.success(menuService.buildMenus(menus));
}
}