|
|
|
|
using Admin.Core.Model;
|
|
|
|
|
using Admin.Core.Common.Resource;
|
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq.Expressions;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Admin.Core.Common;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using AutoMapper;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using Admin.Core.IService.ISys;
|
|
|
|
|
using Admin.Core.Model.Sys;
|
|
|
|
|
|
|
|
|
|
namespace Admin.Core.Api
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// SysUserController
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Route("api/[controller]/[action]")]
|
|
|
|
|
[ApiController]
|
|
|
|
|
[Authorize(Permissions.Name)]
|
|
|
|
|
public class SysUserController : BaseApiUserController
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// _sysUserService
|
|
|
|
|
/// </summary>
|
|
|
|
|
private readonly ISysUserRoleService _sysUserRoleService;
|
|
|
|
|
private readonly ISysRoleService _sysRoleService;
|
|
|
|
|
private readonly ISysPostService _sysPostService;
|
|
|
|
|
private readonly ISysUserPostService _sysUserPostService;
|
|
|
|
|
private readonly ISysDeptService _sysDeptService;
|
|
|
|
|
private readonly IMapper _mapper;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 构造方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sysUserService"></param>
|
|
|
|
|
/// <param name="sysUserRoleService"></param>
|
|
|
|
|
/// <param name="sysRoleService"></param>
|
|
|
|
|
/// <param name="sysPostService"></param>
|
|
|
|
|
/// <param name="sysUserPostService"></param>
|
|
|
|
|
/// <param name="sysDeptService"></param>
|
|
|
|
|
/// <param name="mapper"></param>
|
|
|
|
|
public SysUserController(ISysUserService sysUserService, ISysUserRoleService sysUserRoleService, ISysRoleService sysRoleService, ISysPostService sysPostService,
|
|
|
|
|
ISysUserPostService sysUserPostService, ISysDeptService sysDeptService, IMapper mapper) : base(sysUserService)
|
|
|
|
|
{
|
|
|
|
|
_sysUserService = sysUserService;
|
|
|
|
|
_sysUserRoleService = sysUserRoleService;
|
|
|
|
|
_sysRoleService = sysRoleService;
|
|
|
|
|
_sysPostService = sysPostService;
|
|
|
|
|
_sysUserPostService = sysUserPostService;
|
|
|
|
|
_sysDeptService = sysDeptService;
|
|
|
|
|
_mapper = mapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 分页查询
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pageQuery"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<PageModel<UserModel>>> GetByPage([FromBody] PageQuery<UserQuery> pageQuery)
|
|
|
|
|
{
|
|
|
|
|
if (!pageQuery.Query.IsNotEmptyOrNull())
|
|
|
|
|
{
|
|
|
|
|
pageQuery.Query = new UserQuery();
|
|
|
|
|
}
|
|
|
|
|
var model = await _sysUserService.SelectUserList(pageQuery);
|
|
|
|
|
return SuccessPage(model);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取所有用户
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<List<SysUser>>> GetAllUser(string roleKey = "")
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserRoleService.GetAllUser(roleKey));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据ID查询
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="id">主键</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<UserView>> GetByID(int id)
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.GetByID(id));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 新增一条数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request">SysUser</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<int>> Add([FromBody] UserView request)
|
|
|
|
|
{
|
|
|
|
|
MessageModel<int> data = new MessageModel<int>();
|
|
|
|
|
|
|
|
|
|
var exist = await _sysUserService.CheckLoginNameUnique(request.SysUser.LoginName);
|
|
|
|
|
if (exist)
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = "账号已存在!";
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
request.SysUser.CreateBy = CurrentUser.LoginName;
|
|
|
|
|
request.SysUser.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
|
|
|
|
|
data.data = await _sysUserService.InsertUser(request);
|
|
|
|
|
if (data.data > 0)
|
|
|
|
|
{
|
|
|
|
|
data.success = true;
|
|
|
|
|
data.msg = Resource_SysBase.OprateSuccess;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateFail;
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新一条数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="request">SysUser</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<bool>> Update([FromBody] UserView request)
|
|
|
|
|
{
|
|
|
|
|
var data = new MessageModel<bool>();
|
|
|
|
|
if (UserView.IsAdmin(request.SysUser.UserID))
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateAdmin;
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
request.SysUser.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
data.data = await _sysUserService.UpdateUser(request);
|
|
|
|
|
|
|
|
|
|
if (data.data)
|
|
|
|
|
{
|
|
|
|
|
data.success = true;
|
|
|
|
|
data.msg = Resource_SysBase.OprateSuccess;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateFail;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 删除数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ids">主键</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<bool>> Del(List<int> ids)
|
|
|
|
|
{
|
|
|
|
|
var data = new MessageModel<bool>();
|
|
|
|
|
|
|
|
|
|
foreach (var userId in ids)
|
|
|
|
|
{
|
|
|
|
|
if (UserView.IsAdmin(userId))
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateAdmin;
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data.data = await _sysUserService.DeleteUserByIds(ids.ToArray(), CurrentUser.LoginName);
|
|
|
|
|
|
|
|
|
|
if (data.data)
|
|
|
|
|
{
|
|
|
|
|
data.success = true;
|
|
|
|
|
data.msg = Resource_SysBase.OprateSuccess;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateFail;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 修改用户状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="user"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<bool>> ChangeStatus(SysUser user)
|
|
|
|
|
{
|
|
|
|
|
var data = new MessageModel<bool>();
|
|
|
|
|
if (UserView.IsAdmin(user.UserID))
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateAdmin;
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
data.data = await _sysUserService.UpdateUserStatus(user);
|
|
|
|
|
|
|
|
|
|
if (data.data)
|
|
|
|
|
{
|
|
|
|
|
data.success = true;
|
|
|
|
|
data.msg = Resource_SysBase.OprateSuccess;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
data.success = false;
|
|
|
|
|
data.msg = Resource_SysBase.OprateFail;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用户数据导出
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="user"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<string>> Export(SysUser user)
|
|
|
|
|
{
|
|
|
|
|
Expression<Func<SysUser, bool>> whereExpression = a => true;
|
|
|
|
|
var list = await _sysUserService.QueryAsync(whereExpression);
|
|
|
|
|
return Success<string>(ExcelHelper.ExportToList(list, "用户数据"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用户数据导入
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="file"></param>
|
|
|
|
|
/// <param name="updateSupport"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public MessageModel<bool> ImportData(string file, bool updateSupport)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
return Success(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用户数据导入模板
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public MessageModel<string> ImportTemplate()
|
|
|
|
|
{
|
|
|
|
|
return Success<string>(string.Empty);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据用户编号获取详细信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<UserView>> GetInfo(int userId)
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.GetInfo(userId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 重置密码
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="user"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<string>> ResetPwd(SysUser user)
|
|
|
|
|
{
|
|
|
|
|
var data = new MessageModel<string>();
|
|
|
|
|
|
|
|
|
|
user.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
data.success = await _sysUserService.ResetPwd(user);
|
|
|
|
|
|
|
|
|
|
if (data.success)
|
|
|
|
|
{
|
|
|
|
|
data.msg = Resource_SysBase.OprateSuccess;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
data.msg = Resource_SysBase.OprateFail;
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据用户编号获取授权角色
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<UserView>> AuthRole(int userId)
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.AuthRole(userId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询用户已分配角色列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<UserView>> AllocatedList(int userId)
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.AllocatedList(userId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询用户未分配角色列表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="userId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<UserView>> UnallocatedList(int userId)
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.UnallocatedList(userId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 用户授权角色
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="view"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<bool>> InsertAuthRole(UserRoleView view)
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.InsertUserAuth(view.UserID, view.RoleIds.ToArray()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 个人信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<MessageModel<UserView>> Profile()
|
|
|
|
|
{
|
|
|
|
|
return Success(await _sysUserService.GetInfo(CurrentUser.UserID));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 修改用户基础信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<bool>> UpdateProfile(SysUser user)
|
|
|
|
|
{
|
|
|
|
|
user.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
return Success(await _sysUserService.UpdateUserProfile(user));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 重置密码
|
|
|
|
|
/// </summary>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<bool>> UpdatePwd(string oldPassword, string newPassword)
|
|
|
|
|
{
|
|
|
|
|
MessageModel<bool> model = new MessageModel<bool>();
|
|
|
|
|
var user = await _sysUserService.QueryByIdAsync(CurrentUser.UserID);
|
|
|
|
|
if (MD5Helper.MD5Encrypt32(oldPassword) == user.Password)
|
|
|
|
|
{
|
|
|
|
|
user.Password = MD5Helper.MD5Encrypt32(newPassword);
|
|
|
|
|
user.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
user.UpdateTime = DateTime.Now;
|
|
|
|
|
model.success = await _sysUserService.UpdateAsync(user);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
model.success = false;
|
|
|
|
|
model.msg = Resource_SysBase.OprateFail;
|
|
|
|
|
}
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 头像上传
|
|
|
|
|
/// </summary>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<MessageModel<string>> Avatar()
|
|
|
|
|
{
|
|
|
|
|
MessageModel<string> model = new MessageModel<string>();
|
|
|
|
|
//获取Form提交的文件
|
|
|
|
|
var files = Request.Form.Files;
|
|
|
|
|
if (files.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
model.success = false;
|
|
|
|
|
model.msg = "文件不存在!";
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
model = await FileHelper.FileSaveByBlob(files);
|
|
|
|
|
if (model.success)
|
|
|
|
|
{
|
|
|
|
|
var user = await _sysUserService.QueryByIdAsync(CurrentUser.UserID);
|
|
|
|
|
user.Avatar = model.data;
|
|
|
|
|
user.UpdateBy = CurrentUser.LoginName;
|
|
|
|
|
user.UpdateTime = DateTime.Now;
|
|
|
|
|
await _sysUserService.UpdateAsync(user);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|