DeviceManager/DeviceRepair.DataAccess/SFC/UserDa.cs
2024-11-09 12:25:57 +08:00

203 lines
7.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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($"电子签用户对象不能为空");
DeviceRepair.Models.SFC.System.UserConfirmHistory Model = Data.Rows[0].ToObject<DeviceRepair.Models.SFC.System.UserConfirmHistory>();
Model.ClientIP = ApiParameters["CLIENTIP"];
Model.ClientMAC = ApiParameters["CLIENTMAC"];
Model.ClientName = ApiParameters["CLIENTNAME"];
Model.CreateOn = CurrentTime;
TsSFCUserInfo user = sfcData.Ado.SqlQuery<TsSFCUserInfo>(" SELECT * FROM dbo.UserInfo WHERE UserCode = @UserCode", new { UserCode = Model.UserCode }).FirstOrDefault();
if (user == null)
{
Model.cContent = $"用户认证失败:用户{Model.UserCode}不存在!";
Model.bSuccess = false;
sfcSystem.Insertable(Model).ExecuteCommand();
throw new Exception($"用户认证失败:用户{Model.UserCode}不存在!");
}
if (!user.Status.Equals("A", StringComparison.OrdinalIgnoreCase))
{
Model.cContent = $"用户认证失败:用户{Model.UserCode}已被锁定!";
Model.bSuccess = false;
sfcSystem.Insertable(Model).ExecuteCommand();
throw new Exception($"用户认证失败:用户{Model.UserCode}已被锁定!");
}
if (!user.Password.Equals(Model.PassWord, StringComparison.OrdinalIgnoreCase))
{
Model.cContent = $"用户认证失败:密码不正确!";
Model.bSuccess = false;
sfcSystem.Insertable(Model).ExecuteCommand();
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;
sfcSystem.Insertable(Model).ExecuteCommand();
throw new Exception($"用户认证失败:缺少权限:{Model.ConfirmAuth}");
}
}
Model.bSuccess = true;
log.Error(sfcSystem.Insertable(Model).ToSql());
int bSuccess = sfcSystem.Insertable(Model).ExecuteCommand();
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;
}
}
}
}