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
{
///
/// 获取CS登录信息
///
///
///
///
public async Task GetCSLoginInfo(string token, bool Async = true)
{
SYS_CS_LOGIN query = null;
try
{
query = Db.Queryable().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);
}
///
/// CS登录
///
///
///
///
public async Task> CSLogin(ApiAction action, bool Async = true)
{
var res = new ApiAction();
try
{
UserInfo userInfo = action.Data;
var user = Db.Queryable().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()
.WhereIF(!userInfo.FTY_CODE.IsNullOrEmpty(),x => x.FTY_CODE == userInfo.FTY_CODE)
.First();
SYS_CS_LOGIN logininfo = new SYS_CS_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,
TOKEN = userInfo.Token ?? Guid.NewGuid().ToString("N"),
ID = Guid.NewGuid().ToString("N"),
ACCOUNT_TYPE = 0,
ORG_CODE = userInfo.ORG_CODE,
PROD_CODE = _factory?.FTY_CODE,
};
var org_code=Db.Queryable().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().Where(q => q.USER_ID == userInfo.USER_CODE && q.PROD_CODE == userInfo.PROD_CODE).First();
if (prod_code != null)
{
logininfo.PROD_CODE = prod_code.PROD_CODE;
}
else
{
res.IsSuccessed = false;
res.Data = null;
res.LocaleMsg = L("SYS.Login.isNotOrgCode");//用户没有该据点的权限 }
}
}
LOG_CS_LOGIN loginlog = new()
{
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,
ORG_CODE = userInfo.ORG_CODE,
PROD_CODE = _factory?.FTY_CODE,
};
//保存登录日志
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);
}
///
/// CS登出
///
///
///
public async Task CSLogout(string token)
{
var res = new ApiAction();
try
{
var query = Db.Queryable().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);
}
}
}