123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- using Attribute;
- using Base;
- using Dto;
- using Enums;
- using Extensions;
- using Filters;
- using Infrastructure;
- using Mapster;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using Model;
- using Model.Base;
- using Services;
- using Util;
- namespace Controllers
- {
- /// <summary>
- /// 登录
- /// </summary>
- [ApiExplorerSettings(GroupName = "sys")]
- public class SysLoginController : BaseController
- {
- private readonly ISysUserService sysUserService;
- private readonly ISysMenuService sysMenuService;
- private readonly ISysLoginService sysLoginService;
- private readonly ISysPermissionService permissionService;
- private readonly ISysRoleService roleService;
- public SysLoginController(
- ISysMenuService sysMenuService,
- ISysUserService sysUserService,
- ISysLoginService sysLoginService,
- ISysPermissionService permissionService,
- ISysRoleService sysRoleService)
- {
- this.sysMenuService = sysMenuService;
- this.sysUserService = sysUserService;
- this.sysLoginService = sysLoginService;
- this.permissionService = permissionService;
- roleService = sysRoleService;
- }
- /// <summary>
- /// 登录
- /// </summary>
- /// <param name="loginBody">登录对象</param>
- /// <returns></returns>
- [Route("/v1/tel/sysServer/oauth2/token")]
- [HttpPost]
- [Log(Title = "登录")]
- public IActionResult Login([FromBody] LoginBodyDto loginBody)
- {
- if (loginBody == null) { throw new CustomException("请求参数错误"); }
- loginBody.loginIP = HttpContextExtension.GetClientUserIp(HttpContext);
- sysLoginService.CheckLockUser(loginBody.username);
- string location = ""; //HttpContextExtension.GetIpInfo(loginBody.LoginIP);
- var user = sysLoginService.Login(loginBody, new SysLogininfor() { LoginLocation = location });
- List<SysRole> roles = roleService.SelectUserRoleListByUserId(user.userId);
- //权限集合 eg *:*:*,system:user:list
- List<string> permissions = permissionService.GetMenuPermission(user);
- TokenModel loginUser = new(user.Adapt<TokenModel>(), roles.Adapt<List<Roles>>());
- CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.userId, permissions);
-
- return SUCCESS(sysLoginService.GetLoginInfo(loginUser));
- }
- /// <summary>
- /// 注销
- /// </summary>
- /// <returns></returns>
- [Log(Title = "注销")]
- [HttpPost("logout")]
- public IActionResult LogOut()
- {
- //Task.Run(async () =>
- //{
- // //注销登录的用户,相当于ASP.NET中的FormsAuthentication.SignOut
- // await HttpContext.SignOutAsync();
- //}).Wait();
- var userid = HttpContext.GetUId();
- var name = HttpContext.GetName();
- CacheService.RemoveUserPerms(GlobalConstant.UserPermKEY + userid);
- return SUCCESS(new { name, id = userid });
- }
- /// <summary>
- /// 获取用户信息
- /// </summary>
- /// <returns></returns>
- [Verify]
- [HttpGet("getInfo")]
- public IActionResult GetUserInfo()
- {
- long userid = HttpContext.GetUId();
- var user = sysUserService.SelectUserById(userid);
- //前端校验按钮权限使用
- //角色集合 eg: admin,yunying,common
- List<string> roles = permissionService.GetRolePermission(user);
- //权限集合 eg *:*:*,system:user:list
- List<string> permissions = permissionService.GetMenuPermission(user);
- return SUCCESS(new { user, roles, permissions });
- }
- /// <summary>
- /// 获取路由信息
- /// </summary>
- /// <returns></returns>
- [Verify]
- [HttpGet("getRouters")]
- public IActionResult GetRouters()
- {
- long uid = HttpContext.GetUId();
- var menus = sysMenuService.SelectMenuTreeByUserId(uid);
- return SUCCESS(sysMenuService.BuildMenus(menus));
- }
- /// <summary>
- /// 注册
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("/register")]
- [AllowAnonymous]
- [Log(Title = "注册", BusinessType = BusinessType.INSERT)]
- public IActionResult Register([FromBody] RegisterDto dto)
- {
- dto.UserIP = HttpContext.GetClientUserIp();
- SysUser user = sysUserService.Register(dto);
- if (user.userId > 0)
- {
- return SUCCESS(user);
- }
- return ToResponse(ResultCode.CUSTOM_ERROR, "注册失败,请联系管理员");
- }
-
- /// <summary>
- /// 生成二维码
- /// </summary>
- /// <param name="uuid"></param>
- /// <param name="deviceId"></param>
- /// <returns></returns>
- [HttpGet("/GenerateQrcode")]
- public IActionResult GenerateQrcode(string uuid, string deviceId)
- {
- var state = Guid.NewGuid().ToString();
- var dict = new Dictionary<string, object>
- {
- { "state", state }
- };
- CacheService.SetScanLogin(uuid, dict);
- return SUCCESS(new
- {
- status = 1,
- state,
- uuid,
- codeContent = new { uuid, deviceId }// "https://qm.qq.com/cgi-bin/qm/qr?k=kgt4HsckdljU0VM-0kxND6d_igmfuPlL&authKey=r55YUbruiKQ5iwC/folG7KLCmZ++Y4rQVgNlvLbUniUMkbk24Y9+zNuOmOnjAjRc&noverify=0"
- });
- }
- }
- }
|