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; using Yi.Framework.WebCore.AuthorizationPolicy; namespace Yi.Framework.ApiMicroservice.Controllers { [ApiController] [Route("api/[controller]/[action]")] [Authorize] public class UserController : ControllerBase { private readonly ILogger _logger; private IUserService _userService; public UserController(ILogger logger, IUserService userService) { _logger = logger; _userService = userService; } /// /// 查 /// /// [Authorize(PolicyName.Menu)] [HttpGet] public async Task GetUser() { return Result.Success().SetData(await _userService.GetAllEntitiesTrueAsync()); } /// /// 更 /// /// /// [HttpPut] [Authorize(PolicyName.Menu)] public async Task UpdateUser(user _user) { await _userService.UpdateAsync(_user); return Result.Success(); } /// /// 删 /// /// /// [HttpDelete] [Authorize(PolicyName.Menu)] public async Task DelListUser(List _ids) { await _userService.DelListByUpdateAsync(_ids); return Result.Success(); } /// /// 增 /// /// /// [HttpPost] [Authorize(PolicyName.Menu)] public async Task AddUser(user _user) { await _userService.AddAsync(_user); return Result.Success(); } /// /// SetRoleByUser /// 给多个用户设置多个角色,ids有用户id与 角色列表ids,多对多,ids1用户,ids2为角色 /// 用户设置给用户设置角色 /// /// /// [HttpPost] public async Task SetRoleByUser(IdsListDto idsListDto) { await _userService.SetRoleByUser(idsListDto.ids2, idsListDto.ids1); return Result.Success(); } /// /// 根据http上下文的用户得到该用户信息,关联角色 /// 用于显示账号信息页中的用户信息和角色信息 /// /// [HttpGet] public async Task GetUserInRolesByHttpUser() { var _user = HttpContext.GetCurrentUserInfo(); return Result.Success().SetData( await _userService.GetUserInRolesByHttpUser(_user.id)); } /// /// 得到登录用户的递归菜单,放到导航栏 /// 用户放到导航栏中 /// /// [HttpGet] public async Task GetMenuByHttpUser() { var allMenuIds= _userService.GetCurrentMenuInfo(HttpContext.GetCurrentUserInfo().id); return Result.Success().SetData(await _userService.GetMenuByHttpUser(allMenuIds)); } /// /// 得到请求模型 /// /// /// [HttpGet] public async Task GetAxiosByRouter(string router) { var _user = HttpContext.GetCurrentUserInfo(); var menuIds = _userService.GetCurrentMenuInfo(_user.id); if (menuIds == null) { return Result.Error(); } var menuList= await _userService.GetAxiosByRouter(router, menuIds); AxiosUrlsModel urlsModel = new(); menuList.ForEach(u => { switch (u.menu_name) { case "get":urlsModel.get = u.mould.url;break; case "del": urlsModel.del = u.mould.url; break; case "add": urlsModel.add = u.mould.url; break; case "update": urlsModel.update = u.mould.url; break; } }); return Result.Success().SetData(urlsModel); } } }