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(); /// /// 添加用户 /// /// 待添加的用户 public User AddUser(User user) { var userName = user.UserName; // 校验用户名是否已经存在 if (_db.Query("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; } /// /// 对密码进行加密 /// /// 明文 /// 加密后的密码 private static string EncryptPassword(string password) { return Md5Util.Md5(password + "_mass-transfer"); } /// /// 根据账号来获取用户信息 /// /// 用户账号 /// public User? GetUserByUserName(string userName) { return _db.Query("select * from users where user_name = ?", userName).FirstOrDefault(); } /// /// 获取所有的用户列表 /// /// public List GetAllUsers() { return _db.ListAll(); } /// /// 更新用户信息 /// /// public void UpdateUser(User user) { _db.Update(user); } /// /// 删除用户 /// /// public void DeleteUser(string id) { _db.DeleteById(id); } /// /// 用户登录校验 /// /// 用户账号 /// 用户密码 /// 用户信息 /// 登录异常信息 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; } /// /// 根据用户id来获取用户信息 /// /// 用户id public User GetUserById(string userId) { return _db.GetById(userId); } /// /// 进行重置密码 /// /// public void ResetPassword(string userId) { var user = GetUserById(userId); user.Password = EncryptPassword(DefaultPassword); UpdateUser(user); } }