.net core 实例教程(十五)用户管理相关接口实现代码
小白浏览:4022024-03-23 10:02:27本文累计收益:0我也要赚钱

本文源码下载地址:http://www.80cxy.com/Blog/ResourceView?arId=202403191532545995NAAqJh

系列教程地址:http://www.80cxy.com/Blog/ArticleView?arId=202403191517574161ay3s5V

本文实现用户管理相关模块代码,主要有分页获取用户列表、增加用户、修改用户、删除用户以及批量删除用户接口。下面直接上代码。

一、仓储代码
(一)仓储接口代码
/// <summary>
        /// 根据用户Id获取用户信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<SysUser?> FindOneUserById(string id);
        /// <summary>
        /// 根据用户名查找用户
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <returns></returns>
        Task<SysUser?> FindOneByUserName(string userName);
        /// <summary>
        /// 分页获取用户数据
        /// </summary>
        /// <param name="pageIndex">第几页</param>
        /// <param name="pageSize">每页条数</param>
        /// <param name="wheres">查询条件</param>
        /// <param name="sort">排序字段</param>
        /// <param name="order">排序分类</param>
        /// <returns></returns>
        Task<(SysUser[], int total)> GetUserList(int pageIndex, int pageSize, string wheres, string sort, string order);
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="userName">登录名</param>
        /// <param name="realName">真实姓名</param>
        /// <param name="userType">用户类型</param>
        /// <returns></returns>
        Task<SysUser> AddUser(string userName, string password, string realName, string photoPath);
        /// <summary>
        /// 修改用户
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="userName">登录名</param>
        /// <param name="realName">真实姓名</param>
        /// <param name="userType">用户类型</param>
        /// <returns></returns>
        Task<SysUser> EditUser(string id, string userName, string realName, string photoPath);
        /// <summary>
        /// 根据用户id删除一个用户
        /// </summary>
        /// <param name="id">用户id</param>
        /// <returns></returns>
        Task DeleteUser(string id);
        /// <summary>
        /// 根据用户id数组,批量删除用户
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        void DeleteUserRange(string[] ids);
        /// <summary>
        /// 验证用户名密码是否正确
        /// </summary>
        /// <param name="user">用户信息</param>
        /// <param name="password">登录密码</param>
        /// <returns></returns>
        string CheckForSignInAsync(SysUser user, string password);
(二)仓储接口实现代码
public async Task<SysUser?> FindOneUserById(string id)
        {
            return await _dbContext.SysUser.FindAsync(Guid.Parse(id));
        }
        public async Task<SysUser?> FindOneByUserName(string userName)
        {
            return await _dbContext.SysUser.SingleOrDefaultAsync(m => m.UserName == userName);
        }
        public async Task<(SysUser[], int total)> GetUserList(int pageIndex, int pageSize, string wheres, string sort, string order)
        {
            //where查询条件
            List<DataFilter> searchParametersList = FormatParameters.GetSearchParameters(wheres);
            //order排序条件
            Dictionary<string, QueryOrderBy> orderBy = FormatParameters.GetOrderParameters(sort, order);
            //构造查询条件
            Expression<Func<SysUser, bool>> expression = DataFilterConvertor<SysUser>.ToExpression(searchParametersList);
            var listAll = _dbContext.SysUser.Where(expression);
            int total = listAll.Count();
            var list = await listAll.OrderConditions(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToArrayAsync();
            return (list, total);
        }
        public async Task<SysUser> AddUser(string userName, string password, string realName, string photoPath)
        {
            SysUser model = SysUser.Add(userName, password, realName, photoPath);
            await _dbContext.SysUser.AddAsync(model);
            return model;
        }
        public async Task<SysUser> EditUser(string id, string userName, string realName, string photoPath)
        {
            var model = await FindOneUserById(id);
            model?.Edit(userName, realName, photoPath);
            return model;
        }
        public async Task DeleteUser(string id)
        {
            var model = await _dbContext.SysUser.FindAsync(Guid.Parse(id));
            if (model != null)
            {
                _dbContext.SysUser.Remove(model);
            }
        }
        public void DeleteUserRange(string[] ids)
        {
            _dbContext.SysUser.RemoveRange(_dbContext.SysUser.Where(x => ids.Contains(x.Id.ToString())).ToArray());
        }
二、领域服务代码
(一)领域服务接口代码
/// <summary>
        /// 分页获取用户数据
        /// </summary>
        /// <param name="pageIndex">第几页</param>
        /// <param name="pageSize">每页条数</param>
        /// <param name="wheres">查询条件</param>
        /// <param name="sort">排序字段</param>
        /// <param name="order">排序分类</param>
        /// <returns></returns>
        Task<ResponseContent> GetUserList(int pageIndex, int pageSize, string wheres, string sort, string order);
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <param name="userName">登录名</param>
        /// <param name="realName">真实姓名</param>
        /// <param name="userType">用户类型</param>
        /// <returns></returns>
        Task<ResponseContent> AddUser(string userName, string password, string realName, string photoPath);
        /// <summary>
        /// 修改用户
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="userName">登录名</param>
        /// <param name="realName">真实姓名</param>
        /// <param name="userType">用户类型</param>
        /// <returns></returns>
        Task<ResponseContent> EditUser(string id, string userName, string realName, string photoPath);
        /// <summary>
        /// 根据用户id删除一个用户
        /// </summary>
        /// <param name="id">用户id</param>
        /// <returns></returns>
        Task<ResponseContent> DeleteUser(string id);
        /// <summary>
        /// 根据用户id数组,批量删除用户
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        ResponseContent DeleteUserRange(string[] ids);
(二)领域服务接口实现代码
public async Task<ResponseContent> GetUserList(int pageIndex, int pageSize, string wheres, string sort, string order)
        {
            ResponseContent response = new ResponseContent();
            (var list, int total) = await _systemDomainRepostory.GetUserList(pageIndex, pageSize, wheres, sort, order);
            return response.Ok(new { total = total, rows = list });
        }

        public async Task<ResponseContent> AddUser(string userName, string password, string realName, string photoPath)
        {
            ResponseContent response = new ResponseContent();
            await _systemDomainRepostory.AddUser(userName, Md5.Encrypt(password), realName, photoPath);
            return response.Ok();
        }

        public async Task<ResponseContent> EditUser(string id, string userName, string realName, string photoPath)
        {
            ResponseContent response = new ResponseContent();
            var model = await _systemDomainRepostory.EditUser(id, userName, realName, photoPath);
            return response.Ok();
        }

        public async Task<ResponseContent> DeleteUser(string id)
        {
            ResponseContent response = new ResponseContent();
            await _systemDomainRepostory.DeleteUser(id);
            return response.Ok();
        }
        public ResponseContent DeleteUserRange(string[] ids)
        {
            ResponseContent response = new ResponseContent();
            _systemDomainRepostory.DeleteUserRange(ids);
            return response.Ok();
        }
三、Controller代码
/// <summary>
        /// 获取用户列表
        /// </summary>
        /// <remarks>
        /// 描述:分页获取用户列表接口
        /// </remarks>
        /// <param name="req">请求参数</param>
        /// <returns></returns>
        [HttpPost]
        public async Task<ActionResult> GetUserList(PageGridRequest req)
        {
            return new JsonResult(await _systemDomainService.GetUserList(req.PageIndex, req.PageSize, req.Wheres, req.Sort, req.Order));
        }
        /// <summary>
        /// 添加用户
        /// </summary>
        /// <remarks>
        /// 描述:添加后台管理用户接口
        /// </remarks>
        /// <param name="req"></param>
        /// <returns></returns>
        [HttpPost]
        [UnitOfWork(typeof(SignUpDbContext))]
        public async Task<ActionResult> AddUser(AddUserRequest req)
        {
            return new JsonResult(await _systemDomainService.AddUser(req.UserName, req.Password, req.RealName, req.PhotoPath));
        }
        /// <summary>
        /// 修改用户
        /// </summary>
        /// <remarks>
        /// 描述:修改用户基本信息接口
        /// </remarks>
        /// <param name="req"></param>
        /// <returns></returns>
        [HttpPut]
        [UnitOfWork(typeof(SignUpDbContext))]
        public async Task<ActionResult> EditUser(EditUserRequest req)
        {
            return new JsonResult(await _systemDomainService.EditUser(req.Id, req.UserName, req.RealName, req.PhotoPath));
        }
        /// <summary>
        /// 删除用户
        /// </summary>
        /// <remarks>
        /// 描述:删除后台管理用户
        /// </remarks>
        /// <param name="id">用户ID</param>
        /// <returns></returns>
        [HttpDelete]
        [UnitOfWork(typeof(SignUpDbContext))]
        public async Task<ActionResult> DeleteUser(string id)
        {
            return new JsonResult(await _systemDomainService.DeleteUser(id));
        }
        /// <summary>
        /// 批量删除用户
        /// </summary>
        /// <remarks>
        /// 描述:批量删除用户信息
        /// </remarks>
        /// <param name="ids"></param>
        /// <returns></returns>
        [HttpDelete]
        [UnitOfWork(typeof(SignUpDbContext))]
        public ActionResult DeleteUserRange(string[] ids)
        {
            return new JsonResult(_systemDomainService.DeleteUserRange(ids));
        }

using FluentValidation;

namespace SignUp.WebApi.ViewModels.System
{
    public record AddUserRequest(string UserName, string Password, string RealName, string? PhotoPath);
    public class AddUserRequestValidator : AbstractValidator<AddUserRequest>
    {
        public AddUserRequestValidator()
        {
            RuleFor(x => x.UserName).NotEmpty();
            RuleFor(x => x.RealName).NotEmpty();
        }
    }
}

using FluentValidation;

namespace SignUp.WebApi.ViewModels.System
{
    public record EditUserRequest(string Id, string UserName, string RealName, string? PhotoPath);
    public class EditUserRequestValidator : AbstractValidator<EditUserRequest>
    {
        public EditUserRequestValidator()
        {
            RuleFor(x => x.Id).NotEmpty();
            RuleFor(x => x.UserName).NotEmpty();
            RuleFor(x => x.RealName).NotEmpty();
        }
    }
}

学习交流

附笔者学习 .net core开发时参考相关项目实例源码:asp.net core webapi项目实例源代码锦集下载(72个)

评论列表
发表评论
+ 关注