fix: try to use dto in user manage

This commit is contained in:
anjoy8 2022-03-15 18:25:27 +08:00
parent cb2016c2bb
commit 6fa0b153b0
5 changed files with 110 additions and 36 deletions

View File

@ -633,7 +633,7 @@
用户管理
</summary>
</member>
<member name="M:Blog.Core.Controllers.UserController.#ctor(Blog.Core.IRepository.UnitOfWork.IUnitOfWork,Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices,Blog.Core.Common.HttpContextUser.IUser,Microsoft.Extensions.Logging.ILogger{Blog.Core.Controllers.UserController})">
<member name="M:Blog.Core.Controllers.UserController.#ctor(Blog.Core.IRepository.UnitOfWork.IUnitOfWork,Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices,Blog.Core.Common.HttpContextUser.IUser,AutoMapper.IMapper,Microsoft.Extensions.Logging.ILogger{Blog.Core.Controllers.UserController})">
<summary>
构造函数
</summary>
@ -642,6 +642,7 @@
<param name="userRoleServices"></param>
<param name="roleServices"></param>
<param name="user"></param>
<param name="mapper"></param>
<param name="logger"></param>
</member>
<member name="M:Blog.Core.Controllers.UserController.Get(System.Int32,System.String)">
@ -660,14 +661,14 @@
<param name="token">令牌</param>
<returns></returns>
</member>
<member name="M:Blog.Core.Controllers.UserController.Post(Blog.Core.Model.Models.SysUserInfo)">
<member name="M:Blog.Core.Controllers.UserController.Post(Blog.Core.Model.ViewModels.SysUserInfoDto)">
<summary>
添加一个用户
</summary>
<param name="sysUserInfo"></param>
<returns></returns>
</member>
<member name="M:Blog.Core.Controllers.UserController.Put(Blog.Core.Model.Models.SysUserInfo)">
<member name="M:Blog.Core.Controllers.UserController.Put(Blog.Core.Model.ViewModels.SysUserInfoDto)">
<summary>
更新用户与角色
</summary>
@ -686,12 +687,13 @@
用户角色关系
</summary>
</member>
<member name="M:Blog.Core.Controllers.UserRoleController.#ctor(Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices)">
<member name="M:Blog.Core.Controllers.UserRoleController.#ctor(Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,AutoMapper.IMapper,Blog.Core.IServices.IRoleServices)">
<summary>
构造函数
</summary>
<param name="sysUserInfoServices"></param>
<param name="userRoleServices"></param>
<param name="mapper"></param>
<param name="roleServices"></param>
</member>
<member name="M:Blog.Core.Controllers.UserRoleController.AddUser(System.String,System.String)">

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AutoMapper;
using Blog.Core.AuthHelper.OverWrite;
using Blog.Core.Common.Helper;
using Blog.Core.Common.HttpContextUser;
@ -9,6 +10,7 @@ using Blog.Core.IRepository.UnitOfWork;
using Blog.Core.IServices;
using Blog.Core.Model;
using Blog.Core.Model.Models;
using Blog.Core.Model.ViewModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
@ -21,13 +23,14 @@ namespace Blog.Core.Controllers
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)]
public class UserController : ControllerBase
public class UserController : BaseApiController
{
private readonly IUnitOfWork _unitOfWork;
readonly ISysUserInfoServices _sysUserInfoServices;
readonly IUserRoleServices _userRoleServices;
readonly IRoleServices _roleServices;
private readonly IUser _user;
private readonly IMapper _mapper;
private readonly ILogger<UserController> _logger;
/// <summary>
@ -38,14 +41,18 @@ namespace Blog.Core.Controllers
/// <param name="userRoleServices"></param>
/// <param name="roleServices"></param>
/// <param name="user"></param>
/// <param name="mapper"></param>
/// <param name="logger"></param>
public UserController(IUnitOfWork unitOfWork, ISysUserInfoServices sysUserInfoServices, IUserRoleServices userRoleServices, IRoleServices roleServices, IUser user, ILogger<UserController> logger)
public UserController(IUnitOfWork unitOfWork, ISysUserInfoServices sysUserInfoServices,
IUserRoleServices userRoleServices, IRoleServices roleServices,
IUser user, IMapper mapper, ILogger<UserController> logger)
{
_unitOfWork = unitOfWork;
_sysUserInfoServices = sysUserInfoServices;
_userRoleServices = userRoleServices;
_roleServices = roleServices;
_user = user;
_mapper = mapper;
_logger = logger;
}
@ -57,7 +64,7 @@ namespace Blog.Core.Controllers
/// <returns></returns>
// GET: api/User
[HttpGet]
public async Task<MessageModel<PageModel<SysUserInfo>>> Get(int page = 1, string key = "")
public async Task<MessageModel<PageModel<SysUserInfoDto>>> Get(int page = 1, string key = "")
{
if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
{
@ -87,12 +94,7 @@ namespace Blog.Core.Controllers
#endregion
return new MessageModel<PageModel<SysUserInfo>>()
{
msg = "获取成功",
success = data.dataCount >= 0,
response = data
};
return SuccessPage(data.page, data.dataCount, data.PageSize, _mapper.Map<List<SysUserInfoDto>>(sysUserInfos), data.pageCount);
}
@ -114,9 +116,9 @@ namespace Blog.Core.Controllers
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<MessageModel<SysUserInfo>> GetInfoByToken(string token)
public async Task<MessageModel<SysUserInfoDto>> GetInfoByToken(string token)
{
var data = new MessageModel<SysUserInfo>();
var data = new MessageModel<SysUserInfoDto>();
if (!string.IsNullOrEmpty(token))
{
var tokenModel = JwtHelper.SerializeJwt(token);
@ -125,7 +127,7 @@ namespace Blog.Core.Controllers
var userinfo = await _sysUserInfoServices.QueryById(tokenModel.Uid);
if (userinfo != null)
{
data.response = userinfo;
data.response = _mapper.Map<SysUserInfoDto>(userinfo);
data.success = true;
data.msg = "获取成功";
}
@ -142,14 +144,14 @@ namespace Blog.Core.Controllers
/// <returns></returns>
// POST: api/User
[HttpPost]
public async Task<MessageModel<string>> Post([FromBody] SysUserInfo sysUserInfo)
public async Task<MessageModel<string>> Post([FromBody] SysUserInfoDto sysUserInfo)
{
var data = new MessageModel<string>();
sysUserInfo.LoginPWD = MD5Helper.MD5Encrypt32(sysUserInfo.LoginPWD);
sysUserInfo.Remark = _user.Name;
sysUserInfo.uLoginPWD = MD5Helper.MD5Encrypt32(sysUserInfo.uLoginPWD);
sysUserInfo.uRemark = _user.Name;
var id = await _sysUserInfoServices.Add(sysUserInfo);
var id = await _sysUserInfoServices.Add(_mapper.Map<SysUserInfo>(sysUserInfo));
data.success = id > 0;
if (data.success)
{
@ -167,7 +169,7 @@ namespace Blog.Core.Controllers
/// <returns></returns>
// PUT: api/User/5
[HttpPut]
public async Task<MessageModel<string>> Put([FromBody] SysUserInfo sysUserInfo)
public async Task<MessageModel<string>> Put([FromBody] SysUserInfoDto sysUserInfo)
{
// 这里使用事务处理
@ -176,12 +178,12 @@ namespace Blog.Core.Controllers
{
_unitOfWork.BeginTran();
if (sysUserInfo != null && sysUserInfo.Id > 0)
if (sysUserInfo != null && sysUserInfo.uID > 0)
{
if (sysUserInfo.RIDs.Count > 0)
{
// 无论 Update Or Add , 先删除当前用户的全部 U_R 关系
var usreroles = (await _userRoleServices.Query(d => d.UserId == sysUserInfo.Id)).Select(d => d.Id.ToString()).ToArray();
var usreroles = (await _userRoleServices.Query(d => d.UserId == sysUserInfo.uID)).Select(d => d.Id.ToString()).ToArray();
if (usreroles.Count() > 0)
{
var isAllDeleted = await _userRoleServices.DeleteByIds(usreroles);
@ -191,21 +193,21 @@ namespace Blog.Core.Controllers
var userRolsAdd = new List<UserRole>();
sysUserInfo.RIDs.ForEach(rid =>
{
userRolsAdd.Add(new UserRole(sysUserInfo.Id, rid));
userRolsAdd.Add(new UserRole(sysUserInfo.uID, rid));
});
await _userRoleServices.Add(userRolsAdd);
}
data.success = await _sysUserInfoServices.Update(sysUserInfo);
data.success = await _sysUserInfoServices.Update(_mapper.Map<SysUserInfo>(sysUserInfo));
_unitOfWork.CommitTran();
if (data.success)
{
data.msg = "更新成功";
data.response = sysUserInfo?.Id.ObjToString();
data.response = sysUserInfo?.uID.ObjToString();
}
}
}

View File

@ -1,7 +1,9 @@
using System.Threading.Tasks;
using AutoMapper;
using Blog.Core.IServices;
using Blog.Core.Model;
using Blog.Core.Model.Models;
using Blog.Core.Model.ViewModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@ -16,21 +18,24 @@ namespace Blog.Core.Controllers
[Authorize(Permissions.Name)]
public class UserRoleController : Controller
{
readonly ISysUserInfoServices _sysUserInfoServices;
readonly IUserRoleServices _userRoleServices;
readonly IRoleServices _roleServices;
private readonly ISysUserInfoServices _sysUserInfoServices;
private readonly IUserRoleServices _userRoleServices;
private readonly IRoleServices _roleServices;
private readonly IMapper _mapper;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="sysUserInfoServices"></param>
/// <param name="userRoleServices"></param>
/// <param name="mapper"></param>
/// <param name="roleServices"></param>
public UserRoleController(ISysUserInfoServices sysUserInfoServices, IUserRoleServices userRoleServices, IRoleServices roleServices)
public UserRoleController(ISysUserInfoServices sysUserInfoServices, IUserRoleServices userRoleServices, IMapper mapper, IRoleServices roleServices)
{
this._sysUserInfoServices = sysUserInfoServices;
this._userRoleServices = userRoleServices;
this._roleServices = roleServices;
_sysUserInfoServices = sysUserInfoServices;
_userRoleServices = userRoleServices;
_roleServices = roleServices;
_mapper = mapper;
}
@ -42,13 +47,14 @@ namespace Blog.Core.Controllers
/// <param name="loginPwd"></param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<SysUserInfo>> AddUser(string loginName, string loginPwd)
public async Task<MessageModel<SysUserInfoDto>> AddUser(string loginName, string loginPwd)
{
return new MessageModel<SysUserInfo>()
var userInfo = await _sysUserInfoServices.SaveUserInfo(loginName, loginPwd);
return new MessageModel<SysUserInfoDto>()
{
success = true,
msg = "添加成功",
response = await _sysUserInfoServices.SaveUserInfo(loginName, loginPwd)
response = _mapper.Map<SysUserInfoDto>(userInfo)
};
}

View File

@ -13,6 +13,43 @@ namespace Blog.Core.AutoMapper
{
CreateMap<BlogArticle, BlogViewModels>();
CreateMap<BlogViewModels, BlogArticle>();
CreateMap<SysUserInfo, SysUserInfoDto>()
.ForMember(a => a.uID, o => o.MapFrom(d => d.Id))
.ForMember(a => a.RIDs, o => o.MapFrom(d => d.RIDs))
.ForMember(a => a.addr, o => o.MapFrom(d => d.Address))
.ForMember(a => a.age, o => o.MapFrom(d => d.Age))
.ForMember(a => a.birth, o => o.MapFrom(d => d.Birth))
.ForMember(a => a.uStatus, o => o.MapFrom(d => d.Status))
.ForMember(a => a.uUpdateTime, o => o.MapFrom(d => d.UpdateTime))
.ForMember(a => a.uCreateTime, o => o.MapFrom(d => d.CreateTime))
.ForMember(a => a.uErrorCount, o => o.MapFrom(d => d.ErrorCount))
.ForMember(a => a.uLastErrTime, o => o.MapFrom(d => d.LastErrorTime))
.ForMember(a => a.uLoginName, o => o.MapFrom(d => d.LoginName))
.ForMember(a => a.uLoginPWD, o => o.MapFrom(d => d.LoginPWD))
.ForMember(a => a.uRemark, o => o.MapFrom(d => d.Remark))
.ForMember(a => a.uRealName, o => o.MapFrom(d => d.RealName))
.ForMember(a => a.name, o => o.MapFrom(d => d.Name))
.ForMember(a => a.tdIsDelete, o => o.MapFrom(d => d.IsDeleted))
.ForMember(a => a.RoleNames, o => o.MapFrom(d => d.RoleNames));
CreateMap<SysUserInfoDto, SysUserInfo>()
.ForMember(a => a.Id, o => o.MapFrom(d => d.uID))
.ForMember(a => a.Address, o => o.MapFrom(d => d.addr))
.ForMember(a => a.RIDs, o => o.MapFrom(d => d.RIDs))
.ForMember(a => a.Age, o => o.MapFrom(d => d.age))
.ForMember(a => a.Birth, o => o.MapFrom(d => d.birth))
.ForMember(a => a.Status, o => o.MapFrom(d => d.uStatus))
.ForMember(a => a.UpdateTime, o => o.MapFrom(d => d.uUpdateTime))
.ForMember(a => a.CreateTime, o => o.MapFrom(d => d.uCreateTime))
.ForMember(a => a.ErrorCount, o => o.MapFrom(d => d.uErrorCount))
.ForMember(a => a.LastErrorTime, o => o.MapFrom(d => d.uLastErrTime))
.ForMember(a => a.LoginName, o => o.MapFrom(d => d.uLoginName))
.ForMember(a => a.LoginPWD, o => o.MapFrom(d => d.uLoginPWD))
.ForMember(a => a.Remark, o => o.MapFrom(d => d.uRemark))
.ForMember(a => a.RealName, o => o.MapFrom(d => d.uRealName))
.ForMember(a => a.Name, o => o.MapFrom(d => d.name))
.ForMember(a => a.IsDeleted, o => o.MapFrom(d => d.tdIsDelete))
.ForMember(a => a.RoleNames, o => o.MapFrom(d => d.RoleNames));
}
}
}

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
namespace Blog.Core.Model.ViewModels
{
public class SysUserInfoDto
{
public int uID { get; set; }
public string uLoginName { get; set; }
public string uLoginPWD { get; set; }
public string uRealName { get; set; }
public int uStatus { get; set; }
public string uRemark { get; set; }
public System.DateTime uCreateTime { get; set; } = DateTime.Now;
public System.DateTime uUpdateTime { get; set; } = DateTime.Now;
public DateTime uLastErrTime { get; set; } = DateTime.Now;
public int uErrorCount { get; set; }
public string name { get; set; }
public int sex { get; set; } = 0;
public int age { get; set; }
public DateTime birth { get; set; } = DateTime.Now;
public string addr { get; set; }
public bool tdIsDelete { get; set; }
public List<string> RoleNames { get; set; }
public List<int> RIDs { get; set; }
}
}