using Attribute; using Base; using Common; using Dto; using Enums; using Extensions; using Filters; using Infrastructure; using Infrastructure.Model; using Mapster; using Microsoft.AspNetCore.Mvc; using Middleware; using Model; using Model.Base; using Services; using Util; using Vo; namespace Controllers.Feign { public class VsCodeController : BaseController { private readonly ISysUserService sysUserService; private readonly ISysPermissionService permissionService; private readonly ISysRoleService roleService; private readonly ISysLoginService sysLoginService; public VsCodeController(ISysUserService sysUserService, ISysPermissionService permissionService, ISysRoleService roleService, ISysLoginService sysLoginService) { this.sysUserService = sysUserService; this.permissionService = permissionService; this.roleService = roleService; this.sysLoginService = sysLoginService; } /// /// vscode登录 /// /// /// [HttpPost("/v1/omega_admin/vscode/login")] public IActionResult login([FromBody] VsLoginDto param) { SysUser user = sysUserService.GetFirst(m => m.username == param.username) ?? new SysUser(); string password = Function.MD532(param.password + user.salt); if(password != user.password) { return ToResponse(ResultCode.BAD_REQUEST, "用户名或密码错误"); } List roles = roleService.SelectUserRoleListByUserId(user.userId); List permissions = permissionService.GetMenuPermission(user); TokenModel loginUser = new(user.Adapt(), roles.Adapt>()); CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.userId, permissions); var result = sysLoginService.GetLoginInfo(loginUser); loginUser.refreshToken = result.refresh_token; return SUCCESS(new LoginVo { token = result.access_token, refreshToken = result.refresh_token }); } /// /// vscode刷新Token /// /// /// [HttpPost("/v1/omega_admin/vscode/refreshToken")] public IActionResult refreshToken([FromBody] VsRefreshTokenDto param) { TokenModel tokenModel = JwtUtil.GetLoginUser(HttpContext); if(tokenModel == null) { return ToResponse(ResultCode.BAD_REQUEST, "用户未登录"); } if(tokenModel.refreshToken != param.refreshToken) { return ToResponse(ResultCode.BAD_REQUEST, "刷新令牌错误"); } SysUser user = sysUserService.GetFirst(m => m.userId == tokenModel.userId) ?? new SysUser(); List roles = roleService.SelectUserRoleListByUserId(user.userId); List permissions = permissionService.GetMenuPermission(user); TokenModel loginUser = new(user.Adapt(), roles.Adapt>()); CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.userId, permissions); var result = sysLoginService.GetLoginInfo(loginUser); return SUCCESS(new LoginVo { token = result.access_token, refreshToken = result.refresh_token }); } } }