Files
zszq-trs/YLErpDAL/ModelBase/SystemUser.cs
T

235 lines
6.5 KiB
C#

using Newtonsoft.Json;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using YLErp.Helpers;
namespace BaseOUDAL
{
public enum UserCheckResult { 验证通过, 用户密码错误, 用户不存在, 用户登录锁定, 绑定IP错误 }
public enum UserState { Enabled, Disabled }
public class SystemUser : BaseSystemUser, IDataTrace
{
[Display(Name = "登录Token")]
public string UserToken { get; set; }
[DisplayName("绑定IP")]
public string BondIP { get; set; }
[DisplayName("密码")]
[MaxLength(100)]
public string Password { get; set; }
[DisplayName("角色")]
[NotMapped]
public string RoleTypeName { get; set; }
public string Guid { get; set; }
public SystemUser()
{
Name = ""; Email = "";
}
public bool CheckPassword(string password)
{
var pwd = DataHelper.EncryptPassword(LoginName.ToLower(), password);
return Password == pwd;
}
/// <summary>
/// 修改密码或用户名时候调用。调用时password应该是加密前password
/// </summary>
public void Save(ErpBaseContext db, SystemUser newValue)
{
if (Id == 0)
{
db.SystemUsers.Add(this);
}
newValue.LoginName = newValue.LoginName.Trim();
if (LoginName != newValue.LoginName || string.IsNullOrEmpty(newValue.Password) == false)
{
LoginName = newValue.LoginName;
Password = DataHelper.EncryptPassword(LoginName.ToLower(), newValue.Password);
}
Tel = newValue.Tel;
Mobile = newValue.Mobile;
Name = newValue.Name;
Email = newValue.Email;
QQ = newValue.QQ;
State = newValue.State;
BondIP = newValue.BondIP;
Guid = newValue.Guid;
RoleType = newValue.RoleType;
UserGroup = newValue.UserGroup;
AccountPost = newValue.AccountPost;
ParentId = newValue.ParentId;
VarietyIds = newValue.VarietyIds;
OaAccount=newValue.OaAccount;
db.SaveChanges();
//刷新缓存
UserBLL.UpdateUsers();
}
static public UserCheckResult CheckUser(string name, string password, out SystemUser user)
{
using (var db = new ErpBaseContext())
{
user = db.SystemUsers.FirstOrDefault(o => o.State == (int)UserState.Enabled && (name == o.LoginName));
if (user == null)
{
return UserCheckResult.用户密码错误;
}
if (user.CheckPassword(password))
{
return UserCheckResult.验证通过;
}
user = null;
return UserCheckResult.用户密码错误;
}
}
public string GetDataTraceKeyInfo()
{
return "系统用户:" + Name;
}
}
[NotMapped]
public class SystemUserDto : SystemUser
{
}
public class SystemUserReq : BaseSearchReq
{
/// <summary>
/// 用户Id(逗号分隔)
/// </summary>
public string Ids { get; set; }
/// <summary>
/// 用户Id
/// </summary>
public List<int> IdList
{
get
{
if (string.IsNullOrWhiteSpace(Ids))
{
return new List<int>();
}
try
{
return Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(d => int.Parse(d))
.ToList();
}
catch (Exception e)
{
LogFactory.GetLogger<SystemUser>().Error("[IdList]Ids参数有误", e);
return new List<int>();
}
}
}
public int? State { get; set; }
/// <summary>
/// 部门Id(逗号分隔)
/// </summary>
public string DepartmentIds { get; set; }
public List<int> DepartmentIdList
{
get
{
if (string.IsNullOrWhiteSpace(DepartmentIds))
{
return new List<int>();
}
try
{
return DepartmentIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(d => int.Parse(d))
.ToList();
}
catch (Exception e)
{
LogFactory.GetLogger<SystemUser>().Error("[DepartmentIdList]Departments参数有误", e);
return new List<int>();
}
}
}
public int? RoleId { get; set; }
/// <summary>
/// 角色id(逗号分隔)
/// </summary>
public string RoleIds { get; set; }
public List<int> RoleIdList
{
get
{
if (string.IsNullOrWhiteSpace(RoleIds))
{
return new List<int>();
}
try
{
return RoleIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(d => int.Parse(d))
.ToList();
}
catch (Exception e)
{
LogFactory.GetLogger<SystemUser>().Error("RoleIds参数有误", e);
return new List<int>();
}
}
}
public string UserGroup { get; set; }
}
public class SystemUserVarietyReq : BaseSearchReq
{
public int UserId { get; set; }
public string UserName { get; set; }
public List<int> VarietyIds { get; set; }
}
public class SystemUserVariety
{
public int UserId { get; set; }
public string VarietyId { get; set; }
public string UserName { get; set; }
public string VarietyName { get; set; }
}
//定义交换数据类型
public class SysUserChangeInfo
{
[JsonProperty("SysUserId")]
public int Id { get; set; }
[JsonProperty("Status")]
public int? Status { get; set; }
[JsonProperty("ForceLoginOut")]
public bool? ForceLoginOut { get; set; }
}
}