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 { /// /// 获取登录信息 /// /// /// /// public async Task GetBSLoginInfo(string token, bool Async = true) { SYS_BS_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); } /// /// 添加记录 /// /// /// /// public async Task 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; } /// /// 登录 /// /// /// /// public async Task> BSLogin(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_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().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.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); } /// /// 切换据点 /// /// /// /// public async Task BSSwitchOrgCode(string token,string org, string fty) { var action = new ApiAction(); try { //查回来 var query = Db.Queryable().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; } /// /// 注销 /// /// /// public async Task BSLogout(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); } } }