using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Yi.Framework.Common.Models; using Yi.Framework.DTOModel; using Yi.Framework.Interface; using Yi.Framework.Model.Models; using Yi.Framework.WebCore; namespace Yi.Framework.ApiMicroservice.Controllers { [ApiController] [Route("api/[controller]/[action]")] public class UserController : ControllerBase { private readonly ILogger _logger; private IUserService _userService; public UserController(ILogger logger, IUserService userService) { _logger = logger; _userService = userService; } /// /// 查 /// /// [HttpGet] public async Task GetUser() { return Result.Success().SetData(await _userService.GetAllEntitiesTrueAsync()); } /// /// 更 /// /// /// [HttpPut] public async Task UpdateUser(user _user) { await _userService.UpdateAsync(_user); return Result.Success(); } /// /// 删 /// /// /// [HttpDelete] public async Task DelListUser(List _ids) { await _userService.DelListByUpdateAsync(_ids); return Result.Success(); } /// /// 增 /// /// /// [HttpPost] public async Task AddUser(user _user) { await _userService.AddAsync(_user); return Result.Success(); } /// /// 通过上下文对象获取user(注意,_user下只有userId),返回值为该用户下所有的menu,(注意子类递归)并且需要关联mould /// /// [HttpPost] public async Task GetMenuMould() { var _user= this.HttpContext.GetCurrentUserInfo(); var menu_data = await _userService.GetMenusByUser(_user); return Result.Success().SetData(menu_data); } /// /// 给多个用户设置多个角色,ids有用户id与 角色列表ids,多对多,ids1用户,ids2为角色 /// /// /// [HttpPost] public async Task SetRoleByUser(IdsListDto idsListDto) { await _userService.SetRolesByUser(idsListDto.ids2, idsListDto.ids1); return Result.Success(); } /// /// 根据http上下文的用户得到该用户有哪些角色 /// /// [HttpGet] public async Task GetRolesByUser() { var _user = HttpContext.GetCurrentUserInfo(); var roleList = await _userService.GetRolesByUser(_user); return Result.Success().SetData(roleList); } /// /// 根据用户id得到该用户有哪些角色 /// /// [HttpGet] public async Task GetRolesByUserId(int userId) { var roleList = await _userService.GetRolesByUser(new user() { id=userId}); return Result.Success().SetData(roleList); } /// /// 根据http上下文的用户得到该用户信息,关联角色 /// /// [Authorize] [HttpGet] public async Task GetUserInfoById() { var _user = HttpContext.GetCurrentUserInfo(); return Result.Success().SetData(await _userService.GetUserInfoById(_user.id)); } [HttpGet] public async Task GetMenuByUserId() { var _user = HttpContext.GetCurrentUserInfo(); return Result.Success().SetData(await _userService.GetMenuById(_user.id)); } [HttpGet] public async Task GetRouterByUserId(string router) { var _user = HttpContext.GetCurrentUserInfo(out List menuIds); var menu_data = await _userService.GetMenuByUserId(router,_user.id, menuIds); AxiosUrlsModel urlsModel = new(); foreach (var _menu in menu_data) { var mould_name = _menu.mould.mould_name; switch (mould_name) { case "get":urlsModel.get= _menu.mould.url;break; case "add": urlsModel.add = _menu.mould.url; break; case "del": urlsModel.del = _menu.mould.url; break; case "update": urlsModel.update = _menu.mould.url; break; } } return Result.Success().SetData(urlsModel); } } }