2025-02-11 15:27:15 +08:00
|
|
|
package com.ff.system;
|
|
|
|
|
|
|
|
import com.ff.base.constant.Constants;
|
|
|
|
import com.ff.base.core.domain.AjaxResult;
|
|
|
|
import com.ff.base.core.domain.model.LoginBody;
|
2025-02-25 10:05:13 +08:00
|
|
|
import com.ff.base.enums.LoginType;
|
2025-02-11 15:27:15 +08:00
|
|
|
import com.ff.base.system.domain.SysMenu;
|
2025-02-25 10:05:13 +08:00
|
|
|
import com.ff.base.system.domain.SysRole;
|
2025-02-11 15:27:15 +08:00
|
|
|
import com.ff.base.system.domain.SysUser;
|
|
|
|
import com.ff.base.system.service.ISysDatasourceService;
|
|
|
|
import com.ff.base.system.service.ISysMenuService;
|
2025-02-27 16:26:02 +08:00
|
|
|
import com.ff.base.system.service.ITenantAgentService;
|
2025-02-11 15:27:15 +08:00
|
|
|
import com.ff.base.utils.SecurityUtils;
|
|
|
|
import com.ff.base.web.service.SysLoginService;
|
|
|
|
import com.ff.base.web.service.SysPermissionService;
|
2025-02-25 10:05:13 +08:00
|
|
|
import com.ff.base.system.service.ITenantSecretKeyService;
|
2025-02-11 15:27:15 +08:00
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
2025-02-25 10:05:13 +08:00
|
|
|
import org.springframework.util.CollectionUtils;
|
2025-02-11 15:27:15 +08:00
|
|
|
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 javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
2025-02-25 10:05:13 +08:00
|
|
|
import java.util.ArrayList;
|
2025-02-11 15:27:15 +08:00
|
|
|
import java.util.List;
|
|
|
|
import java.util.Set;
|
2025-02-25 10:05:13 +08:00
|
|
|
import java.util.stream.Collectors;
|
2025-02-11 15:27:15 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 登录验证
|
|
|
|
*
|
|
|
|
* @author ff
|
|
|
|
*/
|
|
|
|
@RestController
|
2025-02-25 10:05:13 +08:00
|
|
|
public class SysLoginController {
|
2025-02-11 15:27:15 +08:00
|
|
|
@Autowired
|
|
|
|
private SysLoginService loginService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private ISysMenuService menuService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private SysPermissionService permissionService;
|
|
|
|
|
|
|
|
@Resource
|
2025-02-25 10:05:13 +08:00
|
|
|
private ISysDatasourceService datasourceService;
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private ITenantSecretKeyService tenantSecretKeyService;
|
2025-02-11 15:27:15 +08:00
|
|
|
|
2025-02-27 16:26:02 +08:00
|
|
|
@Resource
|
|
|
|
private ITenantAgentService tenantAgentService;
|
|
|
|
|
|
|
|
|
2025-02-11 15:27:15 +08:00
|
|
|
/**
|
|
|
|
* 登录方法
|
|
|
|
*
|
|
|
|
* @param loginBody 登录信息
|
|
|
|
* @return 结果
|
|
|
|
*/
|
|
|
|
@PostMapping("/login")
|
2025-02-25 10:05:13 +08:00
|
|
|
public AjaxResult login(@RequestBody LoginBody loginBody) {
|
2025-02-11 15:27:15 +08:00
|
|
|
AjaxResult ajax = AjaxResult.success();
|
|
|
|
// 生成令牌
|
2025-02-25 10:05:13 +08:00
|
|
|
String token = "";
|
|
|
|
// 验证码校验
|
2025-03-12 17:55:57 +08:00
|
|
|
loginService.validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid());
|
2025-02-25 10:05:13 +08:00
|
|
|
// 登录前置校验
|
|
|
|
loginService.loginPreCheck(loginBody.getUsername(), loginBody.getPassword());
|
|
|
|
if (LoginType.TENANT.getValue().equals(loginBody.getLoginType())) {
|
|
|
|
token = tenantSecretKeyService.login(loginBody.getUsername(), loginBody.getPassword());
|
2025-02-27 16:26:02 +08:00
|
|
|
} else if (LoginType.AGENT.getValue().equals(loginBody.getLoginType())) {
|
|
|
|
token = tenantAgentService.login(loginBody.getUsername(), loginBody.getPassword());
|
2025-02-25 10:05:13 +08:00
|
|
|
} else {
|
|
|
|
token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
|
|
|
loginBody.getUuid());
|
|
|
|
}
|
|
|
|
|
2025-02-11 15:27:15 +08:00
|
|
|
ajax.put(Constants.TOKEN, token);
|
|
|
|
return ajax;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取用户信息
|
|
|
|
*
|
|
|
|
* @return 用户信息
|
|
|
|
*/
|
|
|
|
@GetMapping("getInfo")
|
2025-02-25 10:05:13 +08:00
|
|
|
public AjaxResult getInfo(HttpServletRequest request) {
|
2025-02-11 15:27:15 +08:00
|
|
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
|
// 角色集合
|
|
|
|
Set<String> roles = permissionService.getRolePermission(user);
|
|
|
|
// 权限集合
|
|
|
|
Set<String> permissions = permissionService.getMenuPermission(user);
|
|
|
|
|
|
|
|
// 切换数据源
|
|
|
|
String tenantId = request.getHeader(Constants.TENANT_ID);
|
|
|
|
|
|
|
|
AjaxResult ajax = AjaxResult.success();
|
|
|
|
ajax.put("user", user);
|
|
|
|
ajax.put("roles", roles);
|
|
|
|
ajax.put("permissions", permissions);
|
|
|
|
ajax.put("timeZone", datasourceService.selectSysDatasourceByTenantId(tenantId));
|
|
|
|
ajax.put("timeZoneName", datasourceService.selectTimeZoneNameByTenantId(tenantId));
|
|
|
|
return ajax;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取路由信息
|
|
|
|
*
|
|
|
|
* @return 路由信息
|
|
|
|
*/
|
|
|
|
@GetMapping("getRouters")
|
2025-02-25 10:05:13 +08:00
|
|
|
public AjaxResult getRouters() {
|
|
|
|
List<Long> roleIds = SecurityUtils.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
|
|
|
|
List<SysMenu> menus = new ArrayList<>();
|
|
|
|
if (!CollectionUtils.isEmpty(roleIds)) {
|
|
|
|
menus = menuService.selectMenuTree(roleIds);
|
|
|
|
}
|
|
|
|
|
2025-02-11 15:27:15 +08:00
|
|
|
return AjaxResult.success(menuService.buildMenus(menus));
|
|
|
|
}
|
|
|
|
}
|