DeviceManager/DeviceRepair.DataAccess/UserAccess.cs

800 lines
33 KiB
C#
Raw Normal View History

2024-05-28 14:36:38 +00:00
using DeviceRepair.Models;
using DeviceRepair.Models.History;
using DeviceRepair.Utils.Security;
2024-07-22 07:50:10 +00:00
using NLog;
2024-05-28 14:36:38 +00:00
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
namespace DeviceRepair.DataAccess
{
public class UserAccess : DbContext<UserInfoModel>
{
2024-07-22 07:50:10 +00:00
private static readonly Logger log = LogManager.GetCurrentClassLogger();
2024-05-28 14:36:38 +00:00
private static UserAccess manager;
public static UserAccess Instance
{
get
{
if (manager == null)
manager = new UserAccess();
return manager;
}
}
/// <summary>
/// 获取所有用户
/// </summary>
/// <returns></returns>
public APIResponseData GetAllUsers()
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "没有查询到数据!" };
try
{
db.ChangeDatabase("main");
var Datas = base.GetList();
foreach (var item in Datas)
{
item.PassWord = string.Empty;
}
apiResponseData.Code = 1;
apiResponseData.Data = Datas;
apiResponseData.Message = "";
}
catch (SqlSugarException ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 获取用户名称及用户编号映射
/// </summary>
/// <returns></returns>
public APIResponseData GetUserMapping()
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "没有查询到数据!" };
try
{
db.ChangeDatabase("main");
Dictionary<int, string> Datas = base.GetList().ToDictionary(x => x.AutoID, x => x.RealName);
apiResponseData.Code = 1;
apiResponseData.Data = Datas;
apiResponseData.Message = "";
}
catch (SqlSugarException ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 查询最后修改密码时间
/// </summary>
/// <param name="loginCode"></param>
/// <returns></returns>
public APIResponseData CheckChangePwdDate(string loginCode)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "查询出错!" };
if (string.IsNullOrWhiteSpace(loginCode))
return new APIResponseData { Code = -1, Message = "参数【用户编号】不能为空!" };
try
{
DateTime CurrentTime = DateTime.Now;
DateTime LastChangeDate = DateTime.Now;
base.db.ChangeDatabase("log");
DateTime l = db.Queryable<UserPassChangeLogInfo>().Where(x => x.LoginCode == loginCode).Max(x => x.OperationDate);
// 没有修改密码的记录,第一次登录要求修改密码
if (l == DateTime.MinValue)
{
apiResponseData.Code = 1;
apiResponseData.Data = true;
}
else
{
apiResponseData.Code = 1;
apiResponseData.Data = (l.AddMonths(3).Date <= DateTime.Today);
}
}
catch (SqlSugarException e)
{
2024-07-22 07:50:10 +00:00
log.Error(e);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = e.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 判断用户名是否存在
/// </summary>
/// <param name="loginCode"></param>
/// <returns></returns>
public APIResponseData ExistLoginCode(string loginCode)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "未能获取到数据!" };
if (string.IsNullOrWhiteSpace(loginCode))
return new APIResponseData { Code = -1, Message = "参数【用户编号】不能为空!" };
try
{
db.ChangeDatabase("main");
bool ExistData = base.CurrentDb.AsQueryable().Any(x => x.LoginCode == loginCode);
apiResponseData.Code = 1;
apiResponseData.Data = ExistData;
}
catch (SqlSugarException e)
{
2024-07-22 07:50:10 +00:00
log.Error(e);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = e.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 根据账户密码验证获取实体
/// </summary>
/// <param name="loginCode"></param>
/// <param name="passWord"></param>
/// <returns></returns>
public APIResponseData GetLoginEntity(string loginCode, string passWord, HeaderModel OperationInfo)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "账户或密码错误!" };
if (string.IsNullOrWhiteSpace(loginCode))
return new APIResponseData { Code = -1, Message = "参数【用户编号】不能为空!" };
if (string.IsNullOrWhiteSpace(passWord))
return new APIResponseData { Code = -1, Message = "参数【用户密码】不能为空!" };
try
{
DateTime CurrentTime = DateTime.Now;
// 获取用户对象
base.db.ChangeDatabase("main");
UserInfoModel entity = base.CurrentDb.AsQueryable().First(x => x.LoginCode == loginCode && x.PassWord == passWord);
if (entity == null)
{
// 登录失败,账户密码错误
db.ChangeDatabase("log");
UserPwdErrorLogInfo fLog = null;
if (db.Queryable<UserLogin>().Any(s => s.LoginCode == loginCode && s.OperationType == "登录"))
{
fLog = db.Queryable<UserPwdErrorLogInfo>()
.OrderBy(x => x.OperationDate, OrderByType.Desc).First(x => x.LoginCode == loginCode
&& SqlFunc.Subqueryable<UserLogin>().Where(s => s.LoginCode == loginCode && s.OperationType == "登录")
.Max(s => s.OperationDate) < x.OperationDate);
}
else
{
fLog = db.Queryable<UserPwdErrorLogInfo>().Take(1).OrderBy(x => x.OperationDate, OrderByType.Desc).First(x => x.LoginCode == loginCode);
}
if (fLog != null)
{
// 找出最后一次登录成功之后的登录失败记录
int Count = 0;
if (int.TryParse(fLog.TryCount, out Count))
{
Count++;
fLog.TryCount = Count.ToString();
fLog.OperationDate = CurrentTime;
}
db.Updateable(fLog).ExecuteCommand();
if (Count > 3 && loginCode != "admin")
{
base.db.ChangeDatabase("main");
entity = base.CurrentDb.AsQueryable().First(x => x.LoginCode == loginCode);
if (entity != null)
{
entity.ModifyBy = 1;
entity.ModifyDate = CurrentTime;
entity.Status = false;
entity.Description = "登录失败3次自动锁定";
if (db.Updateable(entity).UpdateColumns(it => new { it.ModifyDate, it.ModifyBy, it.Status, it.Description })
.Where(it => it.LoginCode == entity.LoginCode).ExecuteCommand() > 0)
{
db.ChangeDatabase("log");
UserLockLogInfo log2 = new UserLockLogInfo
{
UserAutoID = entity.AutoID,
LockType = "锁定",
LoginCode = entity.LoginCode,
Description = entity.Description,
OperationComputer = OperationInfo.ClientName,
OperationUserName = entity.RealName,
OperationDate = CurrentTime,
OperationIP = OperationInfo.IPAddress,
OperationType = "修改",
OperationUser = entity.AutoID
};
db.Insertable(log2).ExecuteCommand();
throw new Exception("登录失败3次自动锁定");
}
}
}
}
else
{
db.Insertable(new UserPwdErrorLogInfo
{
LoginCode = loginCode,
OperationComputer = OperationInfo.ClientName,
OperationDate = CurrentTime,
OperationIP = OperationInfo.IPAddress,
OperationUser = 0,
OperationUserName = "",
TryCount = "1"
}).ExecuteCommand();
}
return apiResponseData;
}
// 更新最后登录时间
base.CurrentDb.AsUpdateable(entity).UpdateColumns("LastLoginTime").ReSetValue(x => x.LastLoginTime == SqlFunc.GetDate()).ExecuteCommand();
entity.AuthItems = db.Queryable<RoleAuthModel, AuthModel>((t1, t2) => new object[] {
JoinType.Left,t1.AuthID == t2.AutoID
}).Where((t1, t2) => t1.RoleID == entity.RoleGroup).Select((t1, t2) => t2).ToList();
UserLogin log = new UserLogin
{
LoginCode = entity.LoginCode,
OperationType = "登录",
OperationIP = OperationInfo.IPAddress,
OperationComputer = OperationInfo.ClientName
};
// 写入登录日志
base.db.ChangeDatabase("log");
base.db.Insertable(log).IgnoreColumns("OperationDate").ExecuteCommand();
apiResponseData.Code = 1;
apiResponseData.Data = entity;
}
catch (SqlSugarException e)
{
2024-07-22 07:50:10 +00:00
log.Error(e);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = e.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 用户登出,插入日志
/// </summary>
/// <param name="OperationInfo"></param>
public void LogOut(HeaderModel OperationInfo)
{
try
{
base.db.ChangeDatabase("log");
db.Insertable(new UserLogin
{
LoginCode = OperationInfo.OperatorCode,
OperationType = "登出",
OperationIP = OperationInfo.IPAddress,
OperationComputer = OperationInfo.ClientName
}).IgnoreColumns("OperationDate").ExecuteCommand();
}
catch
{
}
}
/// <summary>
/// 验证账户及密码
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public APIResponseData ValidePassWord(string LoginCode, string PassWord)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "原密码输入不正确!" };
try
{
if (string.IsNullOrWhiteSpace(LoginCode))
throw new Exception("用户名不能为空");
if (string.IsNullOrWhiteSpace(PassWord))
throw new Exception("密码不能为空");
base.db.ChangeDatabase("main");
UserInfoModel um = db.Queryable<UserInfoModel>().Single(x => x.LoginCode == LoginCode
&& x.PassWord == PassWord);
if (um != null)
apiResponseData.Code = 1;
}
catch (SqlSugarException e)
{
2024-07-22 07:50:10 +00:00
log.Error(e);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = e.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="LoginCode"></param>
/// <param name="PassWord"></param>
/// <returns></returns>
public APIResponseData UpdateUserPassword(string LoginCode, string PassWord, HeaderModel Operation)
{
APIResponseData result = new APIResponseData { Code = -1, Message = "操作失败!" };
try
{
base.db.ChangeDatabase("main");
DateTime CurrentDate = DateTime.Now;
UserInfoModel m = db.Queryable<UserInfoModel>().Single(x => x.LoginCode == LoginCode);
if (m == null)
return new APIResponseData { Code = -1, Message = "账户不存在!" };
if (m.PassWord.Equals(PassWord, StringComparison.CurrentCultureIgnoreCase))
return new APIResponseData { Code = -1, Message = "新密码不允许与旧密码相同!" };
if (Operation.OperatorCode == LoginCode && PassWord.Equals(EncryptionHelper.EncryptByMD5("Kanghui1"), StringComparison.CurrentCultureIgnoreCase))
return new APIResponseData { Code = -1, Message = "新密码不允许为默认密码!" };
base.db.ChangeDatabase("log");
List<UserPassChangeLogInfo> logs = db.Queryable<UserPassChangeLogInfo>().Where(x => x.LoginCode == LoginCode).OrderBy(x => x.OperationDate, OrderByType.Desc).Take(2).ToList();
if (logs.Any(x => x.PwdNew.Equals(PassWord, StringComparison.CurrentCultureIgnoreCase)))
return new APIResponseData { Code = -1, Message = "新密码不允许与最近3次的密码相同" };
base.db.ChangeDatabase("main");
2024-06-03 17:21:11 +00:00
if (db.Updateable(m).UpdateColumns(it => new { it.PassWord, it.ModifyDate, it.ModifyBy, it.LastPwdAlterTime })
2024-05-28 14:36:38 +00:00
.ReSetValue(it => it.PassWord == PassWord)
.ReSetValue(it => it.ModifyBy == Operation.Operator)
2024-06-03 17:21:11 +00:00
.ReSetValue(it => it.ModifyDate == CurrentDate)
.ReSetValue(it => it.LastPwdAlterTime == CurrentDate).ExecuteCommand() > 0)
2024-05-28 14:36:38 +00:00
{
base.db.ChangeDatabase("log");
UserPassChangeLogInfo log = new UserPassChangeLogInfo
{
LoginCode = m.LoginCode,
OperationComputer = Operation.ClientName,
OperationDate = CurrentDate,
OperationIP = Operation.IPAddress,
OperationType = "修改密码",
OperationUser = Operation.Operator,
OperationUserName = Operation.OperatorName,
PwdNew = PassWord,
PwdOld = m.PassWord,
UserAutoID = m.AutoID
};
db.Insertable(log).ExecuteCommand();
return new APIResponseData { Code = 1, Message = "操作成功!" };
}
return result;
}
catch (Exception e)
{
2024-07-22 07:50:10 +00:00
log.Error(e);
2024-05-28 14:36:38 +00:00
return new APIResponseData { Code = -1, Message = e.Message };
}
}
2024-06-05 17:09:59 +00:00
/// <summary>
/// 使用默认密码重置
/// </summary>
/// <param name="LoginCode"></param>
/// <returns></returns>
public APIResponseData ReprovisionDefaultPassword(string LoginCode, HeaderModel Operation, string PassWord = "", bool UserDefalutPwd = true)
{
APIResponseData result = new APIResponseData { Code = -1, Message = "操作失败!" };
try
{
if (!UserDefalutPwd && string.IsNullOrWhiteSpace(PassWord))
throw new Exception("重置的新密码不能为空!");
base.db.ChangeDatabase("main");
DateTime CurrentDate = DateTime.Now;
UserInfoModel m = db.Queryable<UserInfoModel>().Single(x => x.LoginCode == LoginCode);
if (m == null)
return new APIResponseData { Code = -1, Message = "账户不存在!" };
if (UserDefalutPwd)
PassWord = EncryptionHelper.EncryptByMD5(DefaultConstValue.USER_DEFAULT_PASSWORD_RESET);
base.db.ChangeDatabase("main");
if (db.Updateable(m).UpdateColumns(it => new { it.PassWord, it.ModifyDate, it.ModifyBy, it.LastPwdAlterTime })
.ReSetValue(it => it.PassWord == PassWord)
.ReSetValue(it => it.ModifyBy == Operation.Operator)
.ReSetValue(it => it.ModifyDate == CurrentDate)
.ReSetValue(it => it.LastPwdAlterTime == CurrentDate).ExecuteCommand() > 0)
{
base.db.ChangeDatabase("log");
UserPassChangeLogInfo log = new UserPassChangeLogInfo
{
LoginCode = m.LoginCode,
OperationComputer = Operation.ClientName,
OperationDate = CurrentDate,
OperationIP = Operation.IPAddress,
OperationType = $"{(UserDefalutPwd ? "使" : "使")}密码重置",
OperationUser = Operation.Operator,
OperationUserName = Operation.OperatorName,
PwdNew = PassWord,
PwdOld = m.PassWord,
UserAutoID = m.AutoID
};
db.Insertable(log).ExecuteCommand();
return new APIResponseData { Code = 1, Message = "操作成功!" };
}
return result;
}
catch (Exception e)
{
2024-07-22 07:50:10 +00:00
log.Error(e);
2024-06-05 17:09:59 +00:00
return new APIResponseData { Code = -1, Message = e.Message };
}
}
2024-05-28 14:36:38 +00:00
/// <summary>
/// 用户修改
/// </summary>
/// <param name="item"></param>
/// <param name="Operation"></param>
/// <returns></returns>
public APIResponseData Update(UserInfoModel item, HeaderModel Operation)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = "没有查询到数据!" };
try
{
db.ChangeDatabase("main");
UserInfoModel Datas = db.Queryable<UserInfoModel>().First(x => x.AutoID == item.AutoID);
if (Datas == null)
{
throw new Exception($"找不到ID为{item.AutoID}的用户!");
}
DateTime CurrentDate = DateTime.Now;
string OperationType = Datas.Status != item.Status ? (item.Status ? "解锁" : "锁定") : "修改";
if (OperationType != "修改")
{
Datas.Status = item.Status;
}
else
{
Datas.ModifyBy = Operation.Operator;
Datas.ModifyDate = CurrentDate;
Datas.RoleGroup = item.RoleGroup;
Datas.Email = item.Email;
Datas.RealName = item.RealName;
Datas.Phone = item.Phone;
Datas.Description = item.Description;
}
if (db.Updateable(Datas).ExecuteCommand() > 0)
{
apiResponseData.Code = 1;
apiResponseData.Data = Datas;
apiResponseData.Message = "";
db.ChangeDatabase("log");
if (OperationType != "修改")
{
UserLockLogInfo log2 = new UserLockLogInfo
{
UserAutoID = Datas.AutoID,
LockType = OperationType,
LoginCode = Datas.LoginCode,
Description = item.Description,
OperationComputer = Operation.ClientName,
OperationUserName = Datas.RealName,
OperationDate = CurrentDate,
OperationIP = Operation.IPAddress,
OperationType = "修改",
OperationUser = Operation.Operator
};
db.Insertable(log2).ExecuteCommand();
}
else
{
db.Insertable(new UserInfoChangeLogInfo
{
UserAutoID = Datas.AutoID,
LoginCode = Datas.LoginCode,
RealName = Datas.RealName,
Phone = Datas.Phone,
Email = Datas.Email,
Status = Datas.Status,
OperationContent = OperationType,
OperationType = OperationType,
Description = Datas.Description,
OperationComputer = Operation.ClientName,
OperationDate = CurrentDate,
OperationIP = Operation.IPAddress,
OperationUser = Operation.Operator,
OperationUserName = Operation.OperatorName
}).ExecuteCommand();
}
}
}
catch (SqlSugarException ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
/// <summary>
/// 根据主键编号是插入/更新
/// </summary>
/// <param name="Item"></param>
/// <returns></returns>
public APIResponseData InsertOrEdit(UserInfoModel Item, HeaderModel Operation)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1 };
try
{
DateTime CurrentDate = DateTime.Now;
UserInfoModel model = null;
2024-07-01 16:52:48 +00:00
db.ChangeDatabase("main");
2024-05-28 14:36:38 +00:00
if (Item.AutoID == 0)
{
if (db.Queryable<UserInfoModel>().Any(x => x.LoginCode == Item.LoginCode))
{
throw new Exception("用户账户已存在!");
}
Item.CreateDate = CurrentDate;
model = db.Saveable(Item).ExecuteReturnEntity();
}
else
{
UserInfoModel ufm = db.Queryable<UserInfoModel>().Single(x => x.AutoID == Item.AutoID);
// 日志
UserInfoChangeLogInfo log = new UserInfoChangeLogInfo
{
Description = ufm.Description,
Email = ufm.Email,
LoginCode = ufm.LoginCode,
OperationComputer = Operation.ClientName,
OperationContent = "修改",
OperationDate = CurrentDate,
OperationIP = Operation.IPAddress,
OperationType = "修改",
OperationUser = Operation.Operator,
OperationUserName = Operation.OperatorName,
Phone = ufm.Phone,
RealName = ufm.RealName,
Status = ufm.Status,
UserAutoID = ufm.AutoID
};
UserRoleLogInfo log2 = null;
if (ufm.RoleGroup != Item.RoleGroup)
{
RoleModel r = db.Queryable<RoleModel>().First(x => x.AutoID == Item.RoleGroup);
if (r != null)
log2 = new UserRoleLogInfo
{
UserAutoID = ufm.AutoID,
RoleAutoID = ufm.RoleGroup,
RoleCode = r.RoleCode,
RoleName = r.RoleName,
UserCode = ufm.LoginCode,
UserName = ufm.RealName,
Description = ufm.Description,
OperationContent = "权限修改",
OperationUser = Operation.Operator,
OperationUserName = Operation.OperatorName,
OperationComputer = Operation.ClientName,
OperationIP = Operation.IPAddress,
OperationType = "权限修改",
};
}
ufm.RoleGroup = Item.RoleGroup;
ufm.RealName = Item.RealName;
ufm.Email = Item.Email;
ufm.Phone = Item.Phone;
ufm.Description = Item.Description;
ufm.ModifyBy = Item.ModifyBy;
ufm.ModifyDate = CurrentDate;
model = db.Saveable(ufm).ExecuteReturnEntity();
db.ChangeDatabase("log");
db.Insertable(log).ExecuteCommand();
if (log2 != null)
db.Insertable(log2).ExecuteCommand();
}
if (model != null)
{
apiResponseData.Code = 1;
apiResponseData.Message = "操作成功!";
}
}
catch (SqlSugarException ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-05-28 14:36:38 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
2024-07-01 16:52:48 +00:00
/// <summary>
/// 电子签
/// </summary>
/// <param name="Operation"></param>
/// <returns></returns>
public APIResponseData UserConfirm(UserConfirmHistory userConfirm, HeaderModel Operation)
{
APIResponseData apiResponseData = new APIResponseData { Code = -1, Message = $"获取数据失败!" };
try
{
if (userConfirm == null)
throw new Exception("传入的电子签对象不能为空!");
DateTime CurrentDate = DateTime.Now;
userConfirm.ClientIP = Operation.IPAddress;
userConfirm.ClientMAC = Operation.ClientMac;
userConfirm.ClientName = Operation.ClientName;
userConfirm.CreateOn = CurrentDate;
db.ChangeDatabase("main");
UserInfoModel user = db.Queryable<UserInfoModel>().First(x => x.LoginCode == userConfirm.UserCode);
if (user == null)
{
userConfirm.cContent = "用户认证失败:用户{userConfirm.UserCode}不存在!";
userConfirm.bSuccess = false;
db.ChangeDatabase("log");
db.Insertable(userConfirm).ExecuteCommand();
throw new Exception($"用户认证失败:用户{userConfirm.UserCode}不存在!");
}
if (!user.Status)
{
userConfirm.cContent = $"用户认证失败:用户{userConfirm.UserCode}已被锁定!";
userConfirm.bSuccess = false;
db.ChangeDatabase("log");
db.Insertable(userConfirm).ExecuteCommand();
throw new Exception($"用户认证失败:用户{userConfirm.UserCode}已被锁定!");
}
if (!user.PassWord.Equals(userConfirm.PassWord, StringComparison.CurrentCultureIgnoreCase))
{
userConfirm.cContent = $"用户认证失败:密码不正确!";
userConfirm.bSuccess = false;
db.ChangeDatabase("log");
db.Insertable(userConfirm).ExecuteCommand();
throw new Exception($"用户认证失败:密码不正确!");
}
if (!string.IsNullOrWhiteSpace(userConfirm.ConfirmAuth))
{
int bAuth = db.Queryable<RoleAuthModel, AuthModel>((t1, t2) => new object[] {
JoinType.Inner,t1.AuthID == t2.AutoID
}).Where((t1, t2) => t1.RoleID == user.RoleGroup && SqlFunc.ToUpper(t2.AuthCode) == SqlFunc.ToUpper(userConfirm.ConfirmAuth)).Count();
if (bAuth == 0)
{
userConfirm.cContent = $"用户认证失败:缺少权限:{userConfirm.ConfirmAuth}";
userConfirm.bSuccess = false;
db.ChangeDatabase("log");
db.Insertable(userConfirm).ExecuteCommand();
throw new Exception($"用户认证失败:缺少权限:{userConfirm.ConfirmAuth}");
}
}
userConfirm.bSuccess = true;
db.ChangeDatabase("log");
int bSuccess = db.Insertable(userConfirm).ExecuteCommand();
if (bSuccess > 0)
{
apiResponseData.Code = 1;
apiResponseData.Message = "操作成功!";
apiResponseData.Data = new ApiOperationRtn { Operation = Operation.Operator, OperationName = user.RealName, OperationDate = CurrentDate };
}
}
catch (SqlSugarException ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-07-01 16:52:48 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
catch (Exception ex)
{
2024-07-22 07:50:10 +00:00
log.Error(ex);
2024-07-01 16:52:48 +00:00
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
2024-05-28 14:36:38 +00:00
}
}