UIStandardWebApi/UIStandardWebApi.Service/UserManagerService.cs

92 lines
3.2 KiB
C#
Raw Permalink Normal View History

2025-04-09 00:49:57 +00:00
using AutoMapper;
using Microsoft.Extensions.Caching.Memory;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UIStandardWebApi.Entity;
using UIStandardWebApi.EntityDto;
using UIStandardWebApi.EntityDto.User;
using UIStandardWebApi.IService;
namespace UIStandardWebApi.Service
{
/// <summary>
/// 用户管理服务层
/// </summary>
public class UserManagerService : BaseService, IUserManagerService
{
private readonly IMapper _IMapper;
private readonly IMemoryCache _IMemoryCache;
public UserManagerService(ISqlSugarClient client, IMapper mapper, IMemoryCache iMemoryCache) : base(client)
{
_IMapper = mapper;
_IMemoryCache = iMemoryCache;
}
/// <summary>
/// 登录成功查询到的用户信息
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <returns></returns>
public SysUserInfo? Login(string userName, string password)
{
string pwd = MD5Encrypt.Encrypt(password);
List<Sys_User> userList = _Client
.Queryable<Sys_User>()
.Where(c => c.Name.Equals(userName) && c.Password.Equals(pwd))
.ToList();
if (userList == null || userList.Count <= 0)
{
return null;
}
Sys_User user = userList.First();
SysUserInfo userinfo = _IMapper.Map<Sys_User, SysUserInfo>(user);
user.LastLoginTime = DateTime.Now;
_Client.Updateable(user).ExecuteCommand();
return userinfo;
}
/// <summary>
/// 更新密码
/// </summary>
/// <param name="userId"></param>
/// <param name="password"></param>
/// <returns></returns>
public async Task EditPassAsync(int userId, string password)
{
Sys_User user = base.Find<Sys_User>(userId);
user.Password = MD5Encrypt.Encrypt(password);
Update<Sys_User>(new List<Sys_User>() { user });
await Task.CompletedTask;
}
/// <summary>
/// 获取用户的分页列表
/// </summary>
/// <param name="pageindex"></param>
/// <param name="pageSize"></param>
/// <param name="searchaString"></param>
/// <returns></returns>
public async Task<PagingData<SysUserDTO>> GetUserPageAsync(int pageindex, int pageSize, string? searchaString = null)
{
int? status = 1;
Expressionable<Sys_User> expressionable = new Expressionable<Sys_User>();
expressionable.AndIF(!string.IsNullOrWhiteSpace(searchaString), u => u.Name.Contains(searchaString)).AndIF(status != null, it => it.Status == status);
PagingData<Sys_User> paging = base.QueryPage<Sys_User>(expressionable.ToExpression(), pageSize, pageindex, c => c.CreateTime, false);
PagingData<SysUserDTO> pagingData = _IMapper.Map<PagingData<Sys_User>, PagingData<SysUserDTO>>(paging);
return await Task.FromResult(pagingData);
}
}
}