131 lines
3.6 KiB
C#
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);
|
|
}
|
|
} |