Dispenser/DispenserCore/Service/UserService.cs

131 lines
3.6 KiB
C#

using DispenserCommon.DB;
using DispenserCommon.Interface;
using DispenserCommon.Ioc;
using DispenserCommon.Utils;
using DispenserCore.Model.Entity;
using DispenserUI.Exceptions;
using Masuit.Tools;
namespace DispenserCore.Service;
[Component]
public class UserService : Instant
{
private const string DefaultPassword = "88888888";
private readonly SqliteHelper _db = ServiceLocator.GetService<SqliteHelper>();
/// <summary>
/// 添加用户
/// </summary>
/// <param name="user">待添加的用户</param>
public User AddUser(User user)
{
var userName = user.UserName;
// 校验用户名是否已经存在
if (_db.Query<User>("select * from users where user_name = ?", userName).Any())
throw new BizException($"用户名{userName}已存在");
// 这里用到了一个很神奇的工具库 masuit.tools ,这个家伙有点像java 的 hutool
if (user.Password.IsNullOrEmpty()) user.Password = DefaultPassword;
// 对密码进行加密
user.Password = EncryptPassword(user.Password);
// 进行插入,返回插入后的用户对象
_db.Insert(user);
// 返回插入后的用户对象前,将密码清空
user.Password = "";
return user;
}
/// <summary>
/// 对密码进行加密
/// </summary>
/// <param name="password">明文</param>
/// <returns>加密后的密码</returns>
private static string EncryptPassword(string password)
{
return Md5Util.Md5(password + "_mass-transfer");
}
/// <summary>
/// 根据账号来获取用户信息
/// </summary>
/// <param name="userName">用户账号</param>
/// <returns></returns>
public User? GetUserByUserName(string userName)
{
return _db.Query<User>("select * from users where user_name = ?", userName).FirstOrDefault();
}
/// <summary>
/// 获取所有的用户列表
/// </summary>
/// <returns></returns>
public List<User> GetAllUsers()
{
return _db.ListAll<User>();
}
/// <summary>
/// 更新用户信息
/// </summary>
/// <param name="user"></param>
public void UpdateUser(User user)
{
_db.Update(user);
}
/// <summary>
/// 删除用户
/// </summary>
/// <param name="id"></param>
public void DeleteUser(string id)
{
_db.DeleteById<User>(id);
}
/// <summary>
/// 用户登录校验
/// </summary>
/// <param name="userName">用户账号</param>
/// <param name="password">用户密码</param>
/// <returns>用户信息</returns>
/// <exception cref="BizException">登录异常信息</exception>
public User Login(string userName, string password)
{
var user = GetUserByUserName(userName);
if (user == null) throw new BizException("用户名或密码有误");
if (user.Password != EncryptPassword(password)) throw new BizException("用户名或密码有误");
// 返回插入后的用户对象前,将密码清空
user.Password = "";
return user;
}
/// <summary>
/// 根据用户id来获取用户信息
/// </summary>
/// <param name="userId">用户id</param>
public User GetUserById(string userId)
{
return _db.GetById<User>(userId);
}
/// <summary>
/// 进行重置密码
/// </summary>
/// <param name="userId"></param>
public void ResetPassword(string userId)
{
var user = GetUserById(userId);
user.Password = EncryptPassword(DefaultPassword);
UpdateUser(user);
}
}