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.Attribute; using Yi.Framework.Common.Const; using Yi.Framework.Common.Enum; using Yi.Framework.Common.Helper; using Yi.Framework.Common.Models; using Yi.Framework.DTOModel; using Yi.Framework.Interface; using Yi.Framework.Model.Models; using Yi.Framework.Repository; using Yi.Framework.WebCore; using Yi.Framework.WebCore.AttributeExtend; using Yi.Framework.WebCore.AuthorizationPolicy; namespace Yi.Framework.ApiMicroservice.Controllers { /// /// 用户管理 /// [ApiController] [Authorize] [Route("api/[controller]/[action]")] public class UserController : BaseSimpleRdController { private IUserService _iUserService; public UserController(ILogger logger, IUserService iUserService) : base(logger, iUserService) { _iUserService = iUserService; } /// /// 动态条件分页查询 /// /// /// /// /// [HttpGet] [Permission("system:user:query")] public async Task PageList([FromQuery] UserEntity user, [FromQuery] PageParModel page, [FromQuery] long? deptId) { return Result.Success().SetData(await _iUserService.SelctPageList(user, page, deptId)); } /// /// 更改用户状态 /// /// /// /// [HttpPut] [Permission("system:user:edit")] [Log("用户模块", OperEnum.Update)] public async Task UpdateStatus(long userId, bool isDel) { return Result.Success().SetData(await _repository.UpdateIgnoreNullAsync(new UserEntity() { Id = userId, IsDeleted = isDel })); } /// /// 给多用户设置多角色 /// /// /// [HttpPut] [Permission("system:user:edit")] [Log("用户模块", OperEnum.Update)] public async Task GiveUserSetRole(GiveUserSetRoleDto giveUserSetRoleDto) { return Result.Success().SetStatus(await _iUserService.GiveUserSetRole(giveUserSetRoleDto.UserIds, giveUserSetRoleDto.RoleIds)); } /// /// 通过用户id得到用户信息关联部门、岗位、角色 /// /// /// [HttpGet] [Route("{id}")] [Permission("system:user:query")] public override async Task GetById([FromRoute] long id) { return Result.Success().SetData(await _iUserService.GetInfoById(id)); } /// /// 更新用户信息 /// /// /// [HttpPut] [Permission("system:user:edit")] [Log("用户模块", OperEnum.Update)] public async Task Update(UserInfoDto userDto) { if (await _repository.IsAnyAsync(u => userDto.User.UserName.Equals(u.UserName) && !userDto.User.Id.Equals(u.Id))) { return Result.Error("用户名已存在,修改失败!"); } return Result.Success().SetStatus(await _iUserService.UpdateInfo(userDto)); } /// /// 更新个人中心信息 /// /// /// [HttpPut] [Permission("system:user:edit")] [Log("用户模块", OperEnum.Update)] public async Task UpdateProfile(UserInfoDto userDto) { return Result.Success().SetStatus(await _iUserService.UpdateProfile(userDto)); } /// /// 添加用户 /// /// /// [HttpPost] [Permission("system:user:add")] [Log("用户模块", OperEnum.Insert)] public async Task Add(UserInfoDto userDto) { if (string.IsNullOrEmpty(userDto.User.Password)) { return Result.Error("密码为空,添加失败!"); } if (await _repository.IsAnyAsync(u => userDto.User.UserName.Equals(u.UserName))) { return Result.Error("用户已经存在,添加失败!"); } return Result.Success().SetStatus(await _iUserService.AddInfo(userDto)); } /// /// 重置密码 /// /// /// [HttpPut] [Permission("system:user:edit")] [Log("用户模块", OperEnum.Update)] public async Task RestPassword(UserEntity user) { return Result.Success().SetStatus(await _iUserService.RestPassword(user.Id, user.Password)); } [Permission("system:user:query")] public override Task GetList() { return base.GetList(); } [Permission("system:user:remove")] [Log("用户模块", OperEnum.Delete)] public override Task DelList(List ids) { return base.DelList(ids); } } }