using Tiger.Model;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq.Expressions;
|
using System.Text;
|
using System.Threading.Tasks;
|
using Rhea.Common;
|
using Tiger.IBusiness;
|
using Dm.filter.log;
|
|
namespace Tiger.Business
|
{
|
public partial class Biz : ILogin
|
{
|
/// <summary>
|
/// 获取登录信息
|
/// </summary>
|
/// <param name="token"></param>
|
/// <param name="Async"></param>
|
/// <returns></returns>
|
public async Task<SYS_BS_LOGIN> GetBSLoginInfo(string token, bool Async = true)
|
{
|
SYS_BS_LOGIN query = null;
|
try
|
{
|
query = Db.Queryable<SYS_BS_LOGIN>().Where(x => x.TOKEN == token).First();
|
if (query != null)
|
{
|
//超过8小时删除登录
|
if ((DateTime.Now - query.LAST_ACCESS).Hours > 4)
|
{
|
Db.Deleteable(query).ExecuteCommand();
|
return null;
|
}
|
}
|
|
}
|
catch (System.Exception ex)
|
{
|
|
}
|
return await Task.FromResult(query);
|
}
|
|
/// <summary>
|
/// 添加记录
|
/// </summary>
|
/// <param name="parm"></param>
|
/// <param name="Async"></param>
|
/// <returns></returns>
|
public async Task<ApiAction> AddLOG_BS_LOGINAsync(SYS_BS_LOGIN parm, bool Async = true)
|
{
|
var res = new ApiAction();
|
try
|
{
|
var dbres = Async ? await Db.Insertable(parm).ExecuteCommandAsync() : Db.Insertable(parm).ExecuteCommand();
|
res.Data = dbres.ToString();
|
}
|
catch (Exception ex)
|
{
|
res.CatchExceptionWithLog(ex, "增加登录信息异常");
|
}
|
return res;
|
}
|
|
/// <summary>
|
/// 登录
|
/// </summary>
|
/// <param name="action"></param>
|
/// <param name="Async"></param>
|
/// <returns></returns>
|
public async Task<ApiAction<SYS_BS_LOGIN>> BSLogin(ApiAction<UserInfo> action, bool Async = true)
|
{
|
var res = new ApiAction<SYS_BS_LOGIN>();
|
try
|
{
|
UserInfo userInfo = action.Data;
|
var user = Db.Queryable<SYS_USER>()
|
.Where(x => x.USER_ID == userInfo.USER_CODE && x.USER_PWD == userInfo.PASSWORD).First();
|
if (user != null)
|
{
|
if (user.STATUS_CODE == "ENABLE")
|
{
|
MES_FACTORY _factory = Db.Queryable<MES_FACTORY>()
|
.WhereIF(!userInfo.FTY_CODE.IsNullOrEmpty(),x => x.FTY_CODE == userInfo.FTY_CODE)
|
.First();
|
|
SYS_BS_LOGIN logininfo = new SYS_BS_LOGIN
|
{
|
USER_ID = user.USER_ID,
|
USER_NAME = user.USER_NAME,
|
LAST_ACCESS = DateTime.Now,
|
CREATE_TIME = DateTime.Now,
|
STATUS_CODE = user.STATUS_CODE,
|
CLIENT_IP = userInfo?.ip,
|
FTY_CODE = _factory?.FTY_CODE,
|
FTY_NAME = _factory?.FTY_NAME,
|
TOKEN = userInfo.Token ?? Guid.NewGuid().ToString("N"),
|
ID = Guid.NewGuid().ToString("N"),
|
ACCOUNT_TYPE = 0,
|
ORG_CODE = userInfo.ORG_CODE
|
};
|
var org_code=Db.Queryable<V_USER_ORG>().Where(q=>q.USER_ID == userInfo.USER_CODE && q.ORG_CODE==userInfo.ORG_CODE).First();
|
if (org_code != null)
|
{
|
logininfo.ORG_CODE = org_code.ORG_CODE;
|
}
|
else
|
{
|
var prod_code = Db.Queryable<V_USER_PROD>().Where(q => q.USER_ID == userInfo.USER_CODE && q.PROD_CODE == userInfo.PROD_CODE).First();
|
if (prod_code != null)
|
{
|
logininfo.FTY_CODE = prod_code.PROD_CODE;
|
logininfo.FTY_NAME = prod_code.PROD_NAME;
|
}
|
else
|
{
|
res.IsSuccessed = false;
|
res.Data = null;
|
res.LocaleMsg = L("SYS.Login.isNotOrgCode");//用户没有该据点的权限 }
|
}
|
}
|
LOG_BS_LOGIN loginlog = new()
|
{
|
//FACTORY = _factory.FTY_CODE,
|
USER_ID = user.USER_ID,
|
LOGIN_FROM = $"{userInfo?.ad_info?.nation}->{userInfo?.ad_info?.province}->{userInfo?.ad_info?.city};IP:{userInfo?.ip}",
|
LOGIN_TIME = DateTime.Now
|
|
};
|
//保存登录日志
|
var db = Business.Biz.Db;
|
var dbTran = db.UseTran(() =>
|
{
|
db.Insertable(loginlog).ExecuteCommand();
|
|
if (logininfo != null)
|
{
|
var deres = db.Storageable(logininfo).ExecuteCommand();
|
}
|
res.Data = logininfo;
|
});
|
if (!dbTran.IsSuccess)
|
{
|
res.IsSuccessed = false;
|
res.Data = null;
|
res.LocaleMsg = L("SYS.Login.dbTranError");
|
}
|
res.Data = logininfo;
|
}
|
else
|
{
|
res.IsSuccessed = false;
|
res.Data = null;
|
res.LocaleMsg = L("SYS.Login.dbTranError");//用户已禁用
|
}
|
}
|
else
|
{
|
res.IsSuccessed = false;
|
res.Data = null;
|
res.LocaleMsg = L("SYS.Login.errMsg401");//用户没有权限(令牌、用户名、密码错误)!
|
}
|
}
|
catch (Exception ex)
|
{
|
res.CatchExceptionWithLog(ex, "登录异常");
|
}
|
return await Task.FromResult(res);
|
}
|
|
/// <summary>
|
/// 切换据点
|
/// </summary>
|
/// <param name="action"></param>
|
/// <param name="Async"></param>
|
/// <returns></returns>
|
public async Task<ApiAction> BSSwitchOrgCode(string token,string org, string fty)
|
{
|
var action = new ApiAction();
|
try
|
{
|
//查回来
|
var query = Db.Queryable<SYS_BS_LOGIN>().Where(x => x.TOKEN == token).First();
|
|
query.ORG_CODE = org;
|
query.FTY_CODE = fty;
|
var db = Business.Biz.Db;
|
var dbTran = db.UseTran(() =>
|
{
|
db.Updateable(query).ExecuteCommand();
|
});
|
if (!dbTran.IsSuccess)
|
{
|
action.IsSuccessed = false;
|
action.Data = null;
|
action.LocaleMsg = L("SYS.Login.dbTranError");
|
}
|
}
|
catch (Exception ex)
|
{
|
action.CatchExceptionWithLog(ex, "切换异常");
|
}
|
return action;
|
}
|
|
/// <summary>
|
/// 注销
|
/// </summary>
|
/// <param name="token"></param>
|
/// <returns></returns>
|
public async Task<ApiAction> BSLogout(string token)
|
{
|
var res = new ApiAction();
|
try
|
{
|
var query = Db.Queryable<SYS_BS_LOGIN>().Where(x => x.TOKEN == token).First();
|
if (query != null)
|
{
|
Db.Deleteable(query).ExecuteCommand();
|
return res;
|
}
|
}
|
catch (Exception ex)
|
{
|
res.CatchExceptionWithLog(ex, "注销登录异常");
|
}
|
return await Task.FromResult(res);
|
}
|
}
|
}
|