DeviceManager/DeviceRepair.DataAccess/SFC/UserDa.cs

203 lines
7.6 KiB
C#
Raw Permalink Normal View History

2024-08-02 02:52:45 +00:00
using DeviceRepair.DataAccess.Data;
using DeviceRepair.Models.SFC;
using DeviceRepair.Utils;
using NLog;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using DeviceRepair.DataAccess.Utils;
using DeviceRepair.Models;
using DeviceRepair.Models.History;
namespace DeviceRepair.DataAccess.SFC
{
public class UserDa: BaseDa
{
private static readonly Logger log = LogManager.GetCurrentClassLogger();
public UserDa(IDictionary<string, string> apiParams) : base(apiParams)
{
}
/// <summary>
/// 用户登录
/// </summary>
/// <param name="userCode"></param>
/// <param name="pwd"></param>
/// <param name="dsDatas"></param>
/// <returns></returns>
public APIResponseData UserLogin(string userCode, string pwd, out DataSet dsDatas)
{
dsDatas = new DataSet("Datas");
try
{
dsDatas = sfcData.Ado.UseStoredProcedure().GetDataSetAll(SQLConstants.SP_USER_LOGIN, new
{
UserCode = userCode,
Pwd = pwd,
cType = "I",
ClientIP = ApiParameters["CLIENTIP"],
ClientMAC = ApiParameters["CLIENTMAC"],
ClientName = ApiParameters["CLIENTNAME"]
});
return new APIResponseData() { Code = 1, Message = "用户登陆成功!" };
}
catch (Exception ex)
{
log.Error(ex);
return new APIResponseData { Code = -1, Message = ex.Message };
}
}
/// <summary>
/// 获取全部SFC用户信息
/// </summary>
/// <returns></returns>
public DataSet Get_User_Datas()
{
DataSet dsDatas = new DataSet("Datas");
try
{
List<TsSFCUserInfo> Datas = sfcData.Ado.SqlQuery<TsSFCUserInfo>("SELECT Id,GUID,UserCode,UserName,UserType,Status FROM dbo.UserInfo ");
DataTable table = Datas.ToDataTable();
dsDatas.Tables.Add(table);
return dsDatas;
}
catch (SqlException sqlEx)
{
throw sqlEx;
}
catch (Exception ex)
{
log.Error(ex);
throw ex;
}
}
/// <summary>
/// 电子签
/// </summary>
/// <param name="Data"></param>
/// <param name=""></param>
/// <returns></returns>
public APIResponseData UserConfirm(DataTable Data, out DataTable dtData)
{
try
{
dtData = null;
DateTime CurrentTime = DateTime.Now;
if (Data == null || Data.Rows.Count == 0)
throw new ArgumentException($"电子签用户对象不能为空");
2024-11-09 04:25:57 +00:00
DeviceRepair.Models.SFC.System.UserConfirmHistory Model = Data.Rows[0].ToObject<DeviceRepair.Models.SFC.System.UserConfirmHistory>();
2024-08-02 02:52:45 +00:00
Model.ClientIP = ApiParameters["CLIENTIP"];
Model.ClientMAC = ApiParameters["CLIENTMAC"];
Model.ClientName = ApiParameters["CLIENTNAME"];
Model.CreateOn = CurrentTime;
2024-11-09 04:25:57 +00:00
2024-08-02 02:52:45 +00:00
TsSFCUserInfo user = sfcData.Ado.SqlQuery<TsSFCUserInfo>(" SELECT * FROM dbo.UserInfo WHERE UserCode = @UserCode", new { UserCode = Model.UserCode }).FirstOrDefault();
if (user == null)
{
2024-11-09 04:25:57 +00:00
Model.cContent = $"用户认证失败:用户{Model.UserCode}不存在!";
2024-08-02 02:52:45 +00:00
Model.bSuccess = false;
2024-11-09 04:25:57 +00:00
sfcSystem.Insertable(Model).ExecuteCommand();
2024-08-02 02:52:45 +00:00
throw new Exception($"用户认证失败:用户{Model.UserCode}不存在!");
}
if (!user.Status.Equals("A", StringComparison.OrdinalIgnoreCase))
{
2024-11-09 04:25:57 +00:00
Model.cContent = $"用户认证失败:用户{Model.UserCode}已被锁定!";
2024-08-02 02:52:45 +00:00
Model.bSuccess = false;
2024-11-09 04:25:57 +00:00
sfcSystem.Insertable(Model).ExecuteCommand();
2024-08-02 02:52:45 +00:00
throw new Exception($"用户认证失败:用户{Model.UserCode}已被锁定!");
}
if (!user.Password.Equals(Model.PassWord, StringComparison.OrdinalIgnoreCase))
{
Model.cContent = $"用户认证失败:密码不正确!";
Model.bSuccess = false;
2024-11-09 04:25:57 +00:00
sfcSystem.Insertable(Model).ExecuteCommand();
2024-08-02 02:52:45 +00:00
throw new Exception($"用户认证失败:密码不正确!");
}
if (!string.IsNullOrWhiteSpace(Model.ConfirmAuth))
{
if (!sfcData.Ado.SqlQuery<int>("SELECT 1 FROM dbo.v_UserAuths WHERE UserCode = @UserCode AND AuthCode = @AuthCode ", new { UserCode = Model.UserCode, AuthCode = Model.ConfirmAuth }).Any())
{
Model.cContent = $"用户认证失败:缺少权限:{Model.ConfirmAuth}";
Model.bSuccess = false;
2024-11-09 04:25:57 +00:00
sfcSystem.Insertable(Model).ExecuteCommand();
2024-08-02 02:52:45 +00:00
throw new Exception($"用户认证失败:缺少权限:{Model.ConfirmAuth}");
}
}
Model.bSuccess = true;
2024-11-09 04:25:57 +00:00
log.Error(sfcSystem.Insertable(Model).ToSql());
int bSuccess = sfcSystem.Insertable(Model).ExecuteCommand();
2024-08-02 02:52:45 +00:00
if (bSuccess == 1)
{
ApiOperationRtn apiOperationRtn = new ApiOperationRtn()
{
OperationDate = CurrentTime,
Operation = user.Id,
OperationName = user.UserName
};
dtData = apiOperationRtn.toDataTable();
return new APIResponseData { Code = 1 };
}
else
{
return new APIResponseData { Code = -1 };
}
}
catch (SqlException sqlEx)
{
devMain.RollbackTran();
throw sqlEx;
}
catch (Exception ex)
{
devMain.RollbackTran();
log.Error(ex);
throw ex;
}
}
public DataSet GetAuths()
{
DataSet dsDatas = new DataSet("Datas");
try
{
string UserCode = GetParamString("UserCode", "用户账号");
Guid UserGuid = GetParamGuid("UserGuid", "用户唯一标识");
string sql =
@" SELECT UserGuid, UserCode, UserName, UserStatus, AuthCode, AuthName, FatherAuthCode, AuthCreateBy AS CreateBy, AuthCreateOn AS CreateOn, AuthNote AS Note, AuthModifyBy AS ModifyBy, AuthModifyOn AS ModifyOn FROM dbo.v_UserAuths WITH (NOLOCK) WHERE UserCode = @UserCode AND UserGuid = @UserGuid ";
List<TsSFCAuths> Datas = sfcData.Ado.SqlQuery<TsSFCAuths>(sql, new { UserCode, UserGuid });
if (Datas.IsNull())
return dsDatas;
DataTable table = Datas.ToDataTable();
dsDatas.Tables.Add(table);
return dsDatas;
}
catch (SqlException sqlEx)
{
throw sqlEx;
}
catch (Exception ex)
{
log.Error(ex);
throw ex;
}
}
}
}