using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using TouchSocket.Core; using WCS.BLL.Services.IService; using WCS.DAL; using WCS.DAL.AuthDbModel; using WCS.Model; using WCS.Model.ApiModel; using WCS.Model.ApiModel.User; namespace WCS.BLL.Services.Service { public class UserService : IUserService { public UserService() { } public async Task>> GetUsers(GetUsersRequest request) { try { var users = await AuthDbHelp.db.Queryable() .WhereIF(!string.IsNullOrWhiteSpace(request.Info), o => o.LoginName.Contains(request.Info.Trim())) .OrderBy(o => o.Id) .ToListAsync(); //返回内容密码处理 if (users != null && users.Count > 0) { users.ForEach(t => { t.Password = "******"; }); } var response = new ResponseCommon>() { Code = 200, Message = "success", Data = users }; return response; } catch (Exception ex) { var response = new ResponseCommon>() { Code = 200, Message = "success", Data = null }; return response; } } public async Task> AddUser(AddUserRequest request) { try { var user = await AuthDbHelp.db.Queryable() .Where(t => t.LoginName == request.User.LoginName) .FirstAsync(); if (request.AddOrUpdate == AddOrUpdate.Update) { if (user == null) { return new ResponseCommon { Code = 201, Message = $"更新用户信息失败:用户{user.LoginName}不存在!", Data = null }; } else { user.Password = request.User.Password; user.LoginName = request.User.LoginName; user.RoleIds = request.User.RoleIds; var rowNum = await AuthDbHelp.db.Updateable(user).ExecuteCommandAsync(); if (rowNum == 0) { return new ResponseCommon { Code = 201, Message = $"更新用户信息失败:请重试!", Data = null }; } else { return new ResponseCommon { Code = 200, Message = $"更新用户信息成功!", Data = null }; } } } else if (request.AddOrUpdate == AddOrUpdate.Add) { if (user != null) { return new ResponseCommon { Code = 201, Message = $"添加用户失败:用户{request.User.LoginName}已存在", Data = null }; } else { var newUser = new UserBase() { LoginName = request.User.LoginName, Password = request.User.Password, RoleIds = request.User.RoleIds, IsAdmin = request.User.IsAdmin, Time = request.User.Time }; var rowNum = await AuthDbHelp.db.Insertable(newUser).ExecuteCommandAsync(); if (rowNum == 0) { return new ResponseCommon { Code = 201, Message = $"添加用户失败:请重试!", Data = null }; } else { return new ResponseCommon { Code = 200, Message = $"添加用户成功!", Data = null }; } } } else if (request.AddOrUpdate == AddOrUpdate.Delete) { if (user == null) { return new ResponseCommon { Code = 201, Message = $"删除用户失败:用户{request.User.LoginName}不存在", Data = null }; } else { var rowNum = await AuthDbHelp.db.Deleteable(user).ExecuteCommandAsync(); if (rowNum == 0) { return new ResponseCommon { Code = 201, Message = $"删除用户失败:请重试!", Data = null }; } else { return new ResponseCommon { Code = 200, Message = $"删除用户成功!", Data = null }; } } } else { var response = new ResponseCommon { Code = 300, Message = "不支持的操作!", Data = null }; return response; } } catch (Exception ex) { var response = new ResponseCommon { Code = 300, Message = $"操作失败:{ex.Message}", Data = null }; return response; } } public async Task>> GetRoles(GetUsersRequest request) { try { var users = await AuthDbHelp.db.Queryable() .WhereIF(!string.IsNullOrWhiteSpace(request.Info), o => o.Name.Contains(request.Info.Trim())) .OrderBy(o => o.Id) .ToListAsync(); var response = new ResponseCommon>() { Code = 200, Message = "success", Data = users }; return response; } catch (Exception ex) { var response = new ResponseCommon>() { Code = 200, Message = "success", Data = null }; return response; } } public async Task> AddRole(AddRoleRequest request) { try { var Role = await AuthDbHelp.db.Queryable() .Where(t => t.Name == request.Role.Name) .FirstAsync(); if (request.AddOrUpdate == AddOrUpdate.Update) { if (Role == null) { return new ResponseCommon { Code = 201, Message = $"更新角色信息失败:角色{Role.Name}不存在!", Data = null }; } else { Role.IsAdmin = request.Role.IsAdmin; Role.Name = request.Role.Name; Role.Auths = request.Role.Auths; Role.Time = request.Role.Time; var rowNum = await AuthDbHelp.db.Updateable(Role).ExecuteCommandAsync(); if (rowNum == 0) { return new ResponseCommon { Code = 201, Message = $"更新角色信息失败:请重试!", Data = null }; } else { return new ResponseCommon { Code = 200, Message = $"更新角色信息成功!", Data = null }; } } } else if (request.AddOrUpdate == AddOrUpdate.Add) { if (Role != null) { return new ResponseCommon { Code = 201, Message = $"添加角色失败:角色{request.Role.Name}已存在", Data = null }; } else { var newRole = new RoleBase() { Name = request.Role.Name, Auths = request.Role.Auths, IsAdmin = request.Role.IsAdmin, Time = request.Role.Time }; var rowNum = await AuthDbHelp.db.Insertable(newRole).ExecuteCommandAsync(); if (rowNum == 0) { return new ResponseCommon { Code = 201, Message = $"添加角色失败:请重试!", Data = null }; } else { return new ResponseCommon { Code = 200, Message = $"添加角色成功!", Data = null }; } } } else if (request.AddOrUpdate == AddOrUpdate.Delete) { if (Role == null) { return new ResponseCommon { Code = 201, Message = $"删除角色失败:角色{request.Role.Name}不存在", Data = null }; } else { var isContains = AuthDbHelp.db.Queryable().Select(o => o.RoleIds).ToList().SelectMany(o => o).Contains(Role.Id); if (isContains) { return new ResponseCommon { Code = 201, Message = $"删除角色失败:角色{request.Role.Name}已被用户使用!", Data = null }; } var rowNum = await AuthDbHelp.db.Deleteable(Role).ExecuteCommandAsync(); if (rowNum == 0) { return new ResponseCommon { Code = 201, Message = $"删除角色失败:请重试!", Data = null }; } else { return new ResponseCommon { Code = 200, Message = $"删除角色成功!", Data = null }; } } } else { var response = new ResponseCommon { Code = 300, Message = "不支持的操作!", Data = null }; return response; } } catch (Exception ex) { var response = new ResponseCommon { Code = 300, Message = $"操作失败:{ex.Message}", Data = null }; return response; } } public async Task> UserLogin(UserLoginRequest request) { try { UserBase user = null; if (request.IsNoLogin)//不登录模式 不校验密码 { user = await AuthDbHelp.db.Queryable() .Where(t => t.LoginName == "admin") .FirstAsync(); } else//登录模式需要校验密码 { user = await AuthDbHelp.db.Queryable() .Where(t => t.LoginName == request.UserName) .FirstAsync(); if (user == null) { return new ResponseCommon() { Code = 201, Message = $"登录失败:用户名[{request.UserName}]不存在!", Data = null }; } else if (user.Password != request.PassWord) { return new ResponseCommon() { Code = 201, Message = $"登录失败:密码错误!", Data = null }; } } //加载用户的权限 if (user != null) { if (user.IsAdmin) { user.GetRoles = await AuthDbHelp.db.Queryable() .OrderBy(o => o.Id) .ToListAsync(); } else if (user.RoleIds == null || !user.RoleIds.Any()) { user.GetRoles = new List(); } else { user.GetRoles = await AuthDbHelp.db.Queryable() .Where(t => user.RoleIds.Contains(t.Id)) .OrderBy(o => o.Id) .ToListAsync(); } } //返回字串不返回密码 user.Password = "***"; var response = new ResponseCommon() { Code = 200, Message = "success", Data = user }; return response; } catch (Exception ex) { var response = new ResponseCommon() { Code = 300, Message = $"登录失败:{ex.Message}", Data = null }; return response; } } } }