From 3cab868262d5e84cd1000851c07cce43a459f3ea Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期四, 29 八月 2024 20:49:54 +0800 Subject: [PATCH] 增加CS客户端登录逻辑 --- Tiger.Business/SYS/Biz.SYS_BS_LOGIN.cs | 9 Tiger.IBusiness/Common/ILogin.cs | 34 +++ Tiger.Model.Net/Entitys/SYS/SYS_BS_LOGIN.cs | 56 ++++- Tiger.Model.Net/Entitys/SYS/LOG_CS_LOGIN.cs | 28 ++ Tiger.Api/Controllers/Base/LoginController.cs | 46 ++++ Tiger.Model.Net/Entitys/SYS/SYS_PDA_LOGIN.cs | 12 + Tiger.Model.Net/Entitys/SYS/SYS_CS_LOGIN.cs | 12 + Tiger.Model.Net/Entitys/SYS/LOG_PDA_LOGIN.cs | 28 ++ Tiger.Business/SYS/Biz.SYS_CS_LOGIN.cs | 172 +++++++++++++++++ Tiger.Model.Net/Entitys/SYS/LOG_BS_LOGIN.cs | 175 ++++++++++------- 10 files changed, 462 insertions(+), 110 deletions(-) diff --git a/Tiger.Api/Controllers/Base/LoginController.cs b/Tiger.Api/Controllers/Base/LoginController.cs index 0344310..3dde641 100644 --- a/Tiger.Api/Controllers/Base/LoginController.cs +++ b/Tiger.Api/Controllers/Base/LoginController.cs @@ -17,6 +17,7 @@ [ApiController] public class LoginController : ControllerBase { + #region BS /// <summary> /// 鐧诲綍 /// </summary> @@ -25,7 +26,7 @@ [HttpPost] public async Task<IActionResult> LoginAsync([FromBody] ApiAction<UserInfo> action) { - return Ok(await DI.Resolve<ILogin>().Login(action)); + return Ok(await DI.Resolve<ILogin>().BSLogin(action)); } /// <summary> /// 鍒囨崲鎹偣 @@ -35,7 +36,7 @@ [HttpGet] public async Task<IActionResult> SwitchOrgCode(string token, string org, string fty) { - return Ok(await DI.Resolve<ILogin>().SwitchOrgCode(token,org, fty)); + return Ok(await DI.Resolve<ILogin>().BSSwitchOrgCode(token,org, fty)); } /// <summary> /// 鑾峰彇鐧诲綍淇℃伅 @@ -46,7 +47,7 @@ public async Task<IActionResult> GetLoginInfo(string token) { var _token =string.IsNullOrEmpty(token)?Request.Headers["Authorization"].ToString(): token; - return Ok(await DI.Resolve<ILogin>().GetLoginInfo(_token)); + return Ok(await DI.Resolve<ILogin>().GetBSLoginInfo(_token)); } /// <summary> @@ -57,7 +58,44 @@ [HttpPost] public async Task<IActionResult> LogoutAsync([FromBody] ApiAction action) { - return Ok(await DI.Resolve<ILogin>().Logout(action.Data?.ToString())); + return Ok(await DI.Resolve<ILogin>().BSLogout(action.Data?.ToString())); } + #endregion + + #region CS + /// <summary> + /// 鐧诲綍 + /// </summary> + /// <param name="action"></param> + /// <returns></returns> + [HttpPost] + public async Task<IActionResult> CSLoginAsync([FromBody] ApiAction<UserInfo> action) + { + return Ok(await DI.Resolve<ILogin>().CSLogin(action)); + } + + /// <summary> + /// 鑾峰彇鐧诲綍淇℃伅 + /// </summary> + /// <param name="token"></param> + /// <returns></returns> + [HttpGet] + public async Task<IActionResult> GetCSLoginInfo(string token) + { + var _token = string.IsNullOrEmpty(token) ? Request.Headers["Authorization"].ToString() : token; + return Ok(await DI.Resolve<ILogin>().GetCSLoginInfo(_token)); + } + + /// <summary> + /// 娉ㄩ攢 + /// </summary> + /// <param name="action"></param> + /// <returns></returns> + [HttpPost] + public async Task<IActionResult> CSLogoutAsync([FromBody] ApiAction action) + { + return Ok(await DI.Resolve<ILogin>().CSLogout(action.Data?.ToString())); + } + #endregion } } \ No newline at end of file diff --git a/Tiger.Business/SYS/Biz.SYS_BS_LOGIN.cs b/Tiger.Business/SYS/Biz.SYS_BS_LOGIN.cs index 94dcb23..57eb9f7 100644 --- a/Tiger.Business/SYS/Biz.SYS_BS_LOGIN.cs +++ b/Tiger.Business/SYS/Biz.SYS_BS_LOGIN.cs @@ -19,7 +19,7 @@ /// <param name="token"></param> /// <param name="Async"></param> /// <returns></returns> - public async Task<SYS_BS_LOGIN> GetLoginInfo(string token, bool Async = true) + public async Task<SYS_BS_LOGIN> GetBSLoginInfo(string token, bool Async = true) { SYS_BS_LOGIN query = null; try @@ -70,7 +70,7 @@ /// <param name="action"></param> /// <param name="Async"></param> /// <returns></returns> - public async Task<ApiAction<SYS_BS_LOGIN>> Login(ApiAction<UserInfo> action, bool Async = true) + public async Task<ApiAction<SYS_BS_LOGIN>> BSLogin(ApiAction<UserInfo> action, bool Async = true) { var res = new ApiAction<SYS_BS_LOGIN>(); try @@ -169,13 +169,14 @@ } return await Task.FromResult(res); } + /// <summary> /// 鍒囨崲鎹偣 /// </summary> /// <param name="action"></param> /// <param name="Async"></param> /// <returns></returns> - public async Task<ApiAction> SwitchOrgCode(string token,string org, string fty) + public async Task<ApiAction> BSSwitchOrgCode(string token,string org, string fty) { var action = new ApiAction(); try @@ -209,7 +210,7 @@ /// </summary> /// <param name="token"></param> /// <returns></returns> - public async Task<ApiAction> Logout(string token) + public async Task<ApiAction> BSLogout(string token) { var res = new ApiAction(); try diff --git a/Tiger.Business/SYS/Biz.SYS_CS_LOGIN.cs b/Tiger.Business/SYS/Biz.SYS_CS_LOGIN.cs new file mode 100644 index 0000000..d49ca2a --- /dev/null +++ b/Tiger.Business/SYS/Biz.SYS_CS_LOGIN.cs @@ -0,0 +1,172 @@ +锘縰sing 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> + /// 鑾峰彇CS鐧诲綍淇℃伅 + /// </summary> + /// <param name="token"></param> + /// <param name="Async"></param> + /// <returns></returns> + public async Task<SYS_CS_LOGIN> GetCSLoginInfo(string token, bool Async = true) + { + SYS_CS_LOGIN query = null; + try + { + query = Db.Queryable<SYS_CS_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> + /// CS鐧诲綍 + /// </summary> + /// <param name="action"></param> + /// <param name="Async"></param> + /// <returns></returns> + public async Task<ApiAction<SYS_CS_LOGIN>> CSLogin(ApiAction<UserInfo> action, bool Async = true) + { + var res = new ApiAction<SYS_CS_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_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<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.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); + } + + /// <summary> + /// CS鐧诲嚭 + /// </summary> + /// <param name="token"></param> + /// <returns></returns> + public async Task<ApiAction> CSLogout(string token) + { + var res = new ApiAction(); + try + { + var query = Db.Queryable<SYS_CS_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); + } + } +} diff --git a/Tiger.IBusiness/Common/ILogin.cs b/Tiger.IBusiness/Common/ILogin.cs index 2f16b02..b5651cc 100644 --- a/Tiger.IBusiness/Common/ILogin.cs +++ b/Tiger.IBusiness/Common/ILogin.cs @@ -11,13 +11,14 @@ { public interface ILogin { + #region BS /// <summary> /// 鑾峰彇鐧诲綍淇℃伅 /// </summary> /// <param name="token"></param> /// <param name="Async"></param> /// <returns></returns> - public Task<SYS_BS_LOGIN> GetLoginInfo(string token, bool Async = true); + public Task<SYS_BS_LOGIN> GetBSLoginInfo(string token, bool Async = true); /// <summary> /// 娣诲姞璁板綍 @@ -33,21 +34,46 @@ /// <param name="action"></param> /// <param name="Async"></param> /// <returns></returns> - public Task<ApiAction<SYS_BS_LOGIN>> Login(ApiAction<UserInfo> action, bool Async = true); + public Task<ApiAction<SYS_BS_LOGIN>> BSLogin(ApiAction<UserInfo> action, bool Async = true); /// <summary> /// 鍒囨崲鎹偣 /// </summary> /// <param name="action"></param> /// <param name="Async"></param> /// <returns></returns> - public Task<ApiAction> SwitchOrgCode(string token, string org, string fty); + public Task<ApiAction> BSSwitchOrgCode(string token, string org, string fty); /// <summary> /// 娉ㄩ攢 /// </summary> /// <param name="token"></param> /// <returns></returns> - public Task<ApiAction> Logout(string token); + public Task<ApiAction> BSLogout(string token); + #endregion + #region CS + /// <summary> + /// 鑾峰彇鐧诲綍淇℃伅 + /// </summary> + /// <param name="token"></param> + /// <param name="Async"></param> + /// <returns></returns> + public Task<SYS_CS_LOGIN> GetCSLoginInfo(string token, bool Async = true); + + /// <summary> + /// 鐧诲綍 + /// </summary> + /// <param name="action"></param> + /// <param name="Async"></param> + /// <returns></returns> + public Task<ApiAction<SYS_CS_LOGIN>> CSLogin(ApiAction<UserInfo> action, bool Async = true); + + /// <summary> + /// 娉ㄩ攢 + /// </summary> + /// <param name="token"></param> + /// <returns></returns> + public Task<ApiAction> CSLogout(string token); + #endregion } } diff --git a/Tiger.Model.Net/Entitys/SYS/LOG_BS_LOGIN.cs b/Tiger.Model.Net/Entitys/SYS/LOG_BS_LOGIN.cs index fa9465c..ef76a09 100644 --- a/Tiger.Model.Net/Entitys/SYS/LOG_BS_LOGIN.cs +++ b/Tiger.Model.Net/Entitys/SYS/LOG_BS_LOGIN.cs @@ -6,96 +6,121 @@ namespace Tiger.Model { - /// <summary> - /// 瀹炰綋锛欱S鐧诲綍鏃ュ織 - /// </summary> - [Description("Primary:ID")] - [Serializable] - [SugarTable("LOG_BS_LOGIN")] - public class LOG_BS_LOGIN : DbEntityOnlyID - { - #region 鏋勯�犲嚱鏁� - /// <summary> - /// 瀹炰綋锛欱S鐧诲綍鏃ュ織 - /// </summary> - public LOG_BS_LOGIN() { } - #endregion + /// <summary> + /// 实体:BS登录日志 + /// </summary> + [Description("Primary:ID")] + [DisplayName("BS登录日志")] + [Serializable] + [SugarTable("LOG_BS_LOGIN")] + public class LOG_BS_LOGIN : DbEntityOnlyID + { + #region 构造函数 + /// <summary> + /// 实体:BS登录日志 + /// </summary> + public LOG_BS_LOGIN() {} + #endregion - #region 鍏叡灞炴�� - /// <summary> - /// SessionID - /// </summary> - public string SESSION_ID { get; set; } - /// <summary> - /// 宸ュ巶 - /// </summary> - public string FACTORY { get; set; } - /// <summary> - /// 鐢ㄦ埛ID - /// </summary> - public string USER_ID { get; set; } - /// <summary> - /// 鐧诲綍淇℃伅 - /// </summary> - public string LOGIN_FROM { get; set; } - /// <summary> - /// 鐧诲綍Channel - /// </summary> - public string LOGIN_CHANNEL { get; set; } - /// <summary> - /// 鐧诲綍URL - /// </summary> - public string LOGIN_URL { get; set; } - /// <summary> - /// 鐧诲綍鏃堕棿 - /// </summary> - public DateTime LOGIN_TIME { get; set; } = DateTime.MinValue; - /// <summary> - /// 鐧诲嚭URL - /// </summary> - public string LOGOUT_URL { get; set; } - /// <summary> - /// 鐧诲嚭鏃堕棿 - /// </summary> - public DateTime LOGOUT_TIME { get; set; } = DateTime.MinValue; - #endregion + #region 公共属性 + /// <summary> + /// SessionID + /// </summary> + [DisplayName("SessionID")] + public string SESSION_ID { get; set; } + /// <summary> + /// 工厂 + /// </summary> + [DisplayName("工厂")] + public string FACTORY { get; set; } + /// <summary> + /// 用户ID + /// </summary> + [DisplayName("用户ID")] + public string USER_ID { get; set; } + /// <summary> + /// 登录信息 + /// </summary> + [DisplayName("登录信息")] + public string LOGIN_FROM { get; set; } + /// <summary> + /// 登录Channel + /// </summary> + [DisplayName("登录Channel")] + public string LOGIN_CHANNEL { get; set; } + /// <summary> + /// 登录URL + /// </summary> + [DisplayName("登录URL")] + public string LOGIN_URL { get; set; } + /// <summary> + /// 登录时间 + /// </summary> + [DisplayName("登录时间")] + public DateTime LOGIN_TIME { get; set; } = DateTime.MinValue; + /// <summary> + /// 登出URL + /// </summary> + [DisplayName("登出URL")] + public string LOGOUT_URL { get; set; } + /// <summary> + /// 登出时间 + /// </summary> + [DisplayName("登出时间")] + public DateTime LOGOUT_TIME { get; set; } = DateTime.MinValue; + /// <summary> + /// 组织编码 + /// </summary> + [DisplayName("组织编码")] + public string ORG_CODE { get; set; } + /// <summary> + /// 生产单元编码 + /// </summary> + [DisplayName("生产单元编码")] + public string PROD_CODE { get; set; } + /// <summary> + /// 仓库单元编码 + /// </summary> + [DisplayName("仓库单元编码")] + public string WH_CODE { get; set; } + #endregion - #region 铏氭嫙灞炴�� - /*渚嬪瓙 + #region 虚拟属性 + /*例子 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 澶栭敭灞炴�� - /*渚嬪瓙 - //涓�瀵逛竴澶栭敭瀵艰埅 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疞OG_BS_LOGIN绫婚噷闈㈢殑澶栭敭ID瀛楁 - public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - //涓�瀵瑰澶栭敭瀵艰埅 - [Navigate(NavigateType.OneToMany, nameof(ClassA.LOG_BS_LOGINId))]//ClassA琛ㄤ腑鐨凩OG_BS_LOGINId - public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - //澶氬澶氬閿鑸� - [Navigate(typeof(MappingClass), nameof(MappingClass.LOG_BS_LOGINId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 - public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #region 外键属性 + /*例子 + //一对一外键导航 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是LOG_BS_LOGIN类里面的外键ID字段 + public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null + //一对多外键导航 + [Navigate(NavigateType.OneToMany, nameof(ClassA.LOG_BS_LOGINId))]//ClassA表中的LOG_BS_LOGINId + public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null + //多对多外键导航 + [Navigate(typeof(MappingClass), nameof(MappingClass.LOG_BS_LOGINId), nameof(MappingClass.ClassAId))]//注意顺序 + public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null */ - #endregion + #endregion - #region 鏋氫妇鍙橀噺 - /*渚嬪瓙 + #region 枚举变量 + /*例子 public enum FieldNames { - [Description("鏋氫妇鎻忚堪0")] + [Description("枚举描述0")] Enum0, - [Description("鏋氫妇鎻忚堪1")] + [Description("枚举描述1")] Enum1, } */ - #endregion + #endregion - #region 鍏叡鏂规硶 + #region 公共方法 - #endregion + #endregion - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/SYS/LOG_CS_LOGIN.cs b/Tiger.Model.Net/Entitys/SYS/LOG_CS_LOGIN.cs index 8d10ae5..11b7169 100644 --- a/Tiger.Model.Net/Entitys/SYS/LOG_CS_LOGIN.cs +++ b/Tiger.Model.Net/Entitys/SYS/LOG_CS_LOGIN.cs @@ -10,6 +10,7 @@ /// 实体:CS登录日志 /// </summary> [Description("Primary:ID")] + [DisplayName("CS登录日志")] [Serializable] [SugarTable("LOG_CS_LOGIN")] public class LOG_CS_LOGIN : DbEntityOnlyID @@ -25,39 +26,58 @@ /// <summary> /// SessionID /// </summary> + [DisplayName("SessionID")] public string SESSION_ID { get; set; } - /// <summary> - /// 工厂 - /// </summary> - public string FACTORY { get; set; } /// <summary> /// 用户ID /// </summary> + [DisplayName("用户ID")] public string USER_ID { get; set; } /// <summary> /// 登录信息 /// </summary> + [DisplayName("登录信息")] public string LOGIN_FROM { get; set; } /// <summary> /// 登录Channel /// </summary> + [DisplayName("登录Channel")] public string LOGIN_CHANNEL { get; set; } /// <summary> /// 登录URL /// </summary> + [DisplayName("登录URL")] public string LOGIN_URL { get; set; } /// <summary> /// 登录时间 /// </summary> + [DisplayName("登录时间")] public DateTime LOGIN_TIME { get; set; } = DateTime.MinValue; /// <summary> /// 登出URL /// </summary> + [DisplayName("登出URL")] public string LOGOUT_URL { get; set; } /// <summary> /// 登出时间 /// </summary> + [DisplayName("登出时间")] public DateTime LOGOUT_TIME { get; set; } = DateTime.MinValue; + /// <summary> + /// 组织编码 + /// </summary> + [DisplayName("组织编码")] + public string ORG_CODE { get; set; } + /// <summary> + /// 生产单元编码 + /// </summary> + [DisplayName("生产单元编码")] + public string PROD_CODE { get; set; } + /// <summary> + /// 仓库单元编码 + /// </summary> + [DisplayName("仓库单元编码")] + public string WH_CODE { get; set; } #endregion #region 虚拟属性 diff --git a/Tiger.Model.Net/Entitys/SYS/LOG_PDA_LOGIN.cs b/Tiger.Model.Net/Entitys/SYS/LOG_PDA_LOGIN.cs index 177affd..e4b396a 100644 --- a/Tiger.Model.Net/Entitys/SYS/LOG_PDA_LOGIN.cs +++ b/Tiger.Model.Net/Entitys/SYS/LOG_PDA_LOGIN.cs @@ -10,6 +10,7 @@ /// 实体:PDA登录日志 /// </summary> [Description("Primary:ID")] + [DisplayName("PDA登录日志")] [Serializable] [SugarTable("LOG_PDA_LOGIN")] public class LOG_PDA_LOGIN : DbEntityOnlyID @@ -25,39 +26,58 @@ /// <summary> /// SessionID /// </summary> + [DisplayName("SessionID")] public string SESSION_ID { get; set; } - /// <summary> - /// 工厂 - /// </summary> - public string FACTORY { get; set; } /// <summary> /// 用户ID /// </summary> + [DisplayName("用户ID")] public string USER_ID { get; set; } /// <summary> /// 登录信息 /// </summary> + [DisplayName("登录信息")] public string LOGIN_FROM { get; set; } /// <summary> /// 登录Channel /// </summary> + [DisplayName("登录Channel")] public string LOGIN_CHANNEL { get; set; } /// <summary> /// 登录URL /// </summary> + [DisplayName("登录URL")] public string LOGIN_URL { get; set; } /// <summary> /// 登录时间 /// </summary> + [DisplayName("登录时间")] public DateTime LOGIN_TIME { get; set; } = DateTime.MinValue; /// <summary> /// 登出URL /// </summary> + [DisplayName("登出URL")] public string LOGOUT_URL { get; set; } /// <summary> /// 登出时间 /// </summary> + [DisplayName("登出时间")] public DateTime LOGOUT_TIME { get; set; } = DateTime.MinValue; + /// <summary> + /// 组织编码 + /// </summary> + [DisplayName("组织编码")] + public string ORG_CODE { get; set; } + /// <summary> + /// 生产单元编码 + /// </summary> + [DisplayName("生产单元编码")] + public string PROD_CODE { get; set; } + /// <summary> + /// 仓库单元编码 + /// </summary> + [DisplayName("仓库单元编码")] + public string WH_CODE { get; set; } #endregion #region 虚拟属性 diff --git a/Tiger.Model.Net/Entitys/SYS/SYS_BS_LOGIN.cs b/Tiger.Model.Net/Entitys/SYS/SYS_BS_LOGIN.cs index 02c1fa4..a9bc85d 100644 --- a/Tiger.Model.Net/Entitys/SYS/SYS_BS_LOGIN.cs +++ b/Tiger.Model.Net/Entitys/SYS/SYS_BS_LOGIN.cs @@ -10,6 +10,7 @@ /// 实体:BS登录信息 /// </summary> [Description("Primary:ID")] + [DisplayName("BS登录信息")] [Serializable] [SugarTable("SYS_BS_LOGIN")] public class SYS_BS_LOGIN : DbEntity @@ -25,58 +26,83 @@ /// <summary> /// 登录TOKEN /// </summary> + [DisplayName("登录TOKEN")] public string TOKEN { get; set; } /// <summary> /// 最后登录时间 /// </summary> + [DisplayName("最后登录时间")] public DateTime LAST_ACCESS { get; set; } = DateTime.MinValue; /// <summary> /// 用户ID /// </summary> + [DisplayName("用户ID")] public string USER_ID { get; set; } /// <summary> /// 用户名 /// </summary> + [DisplayName("用户名")] public string USER_NAME { get; set; } /// <summary> /// 权限 /// </summary> + [DisplayName("权限")] public string PERMISSION { get; set; } /// <summary> /// IP地址 /// </summary> + [DisplayName("IP地址")] public string CLIENT_IP { get; set; } /// <summary> /// 账号类型 /// </summary> + [DisplayName("账号类型")] public int ACCOUNT_TYPE { get; set; } /// <summary> - /// 工厂代码 + /// 工厂编码 /// </summary> + [DisplayName("工厂编码")] public string FTY_CODE { get; set; } /// <summary> /// 工厂描述 /// </summary> + [DisplayName("工厂描述")] public string FTY_NAME { get; set; } /// <summary> /// 用户状态 /// </summary> + [DisplayName("用户状态")] public string STATUS_CODE { get; set; } - /// <summary> - /// 组织编码 - /// </summary> - public string ORG_CODE { get; set; } - #endregion + /// <summary> + /// 组织编码 + /// </summary> + [DisplayName("组织编码")] + public string ORG_CODE { get; set; } + #endregion - #region 虚拟属性 - /*例子 + #region 虚拟属性 + /*例子 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 枚举变量 - /*例子 + #region 外键属性 + /*例子 + //一对一外键导航 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SYS_BS_LOGIN类里面的外键ID字段 + public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null + //一对多外键导航 + [Navigate(NavigateType.OneToMany, nameof(ClassA.SYS_BS_LOGINId))]//ClassA表中的SYS_BS_LOGINId + public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null + //多对多外键导航 + [Navigate(typeof(MappingClass), nameof(MappingClass.SYS_BS_LOGINId), nameof(MappingClass.ClassAId))]//注意顺序 + public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + */ + #endregion + + #region 枚举变量 + /*例子 public enum FieldNames { [Description("枚举描述0")] @@ -85,11 +111,11 @@ Enum1, } */ - #endregion + #endregion - #region 公共方法 + #region 公共方法 - #endregion + #endregion - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/SYS/SYS_CS_LOGIN.cs b/Tiger.Model.Net/Entitys/SYS/SYS_CS_LOGIN.cs index 6f61f0e..82f589f 100644 --- a/Tiger.Model.Net/Entitys/SYS/SYS_CS_LOGIN.cs +++ b/Tiger.Model.Net/Entitys/SYS/SYS_CS_LOGIN.cs @@ -10,6 +10,7 @@ /// 实体:CS登录信息 /// </summary> [Description("Primary:ID")] + [DisplayName("CS登录信息")] [Serializable] [SugarTable("SYS_CS_LOGIN")] public class SYS_CS_LOGIN : DbEntityWithAuth @@ -25,46 +26,57 @@ /// <summary> /// 登录TOKEN /// </summary> + [DisplayName("登录TOKEN")] public string TOKEN { get; set; } /// <summary> /// 最后登录时间 /// </summary> + [DisplayName("最后登录时间")] public DateTime LAST_ACCESS { get; set; } = DateTime.MinValue; /// <summary> /// 用户ID /// </summary> + [DisplayName("用户ID")] public string USER_ID { get; set; } /// <summary> /// 用户名 /// </summary> + [DisplayName("用户名")] public string USER_NAME { get; set; } /// <summary> /// 权限 /// </summary> + [DisplayName("权限")] public string PERMISSION { get; set; } /// <summary> /// IP地址 /// </summary> + [DisplayName("IP地址")] public string CLIENT_IP { get; set; } /// <summary> /// 账号类型 /// </summary> + [DisplayName("账号类型")] public int ACCOUNT_TYPE { get; set; } /// <summary> /// 用户状态 /// </summary> + [DisplayName("用户状态")] public string STATUS_CODE { get; set; } /// <summary> /// 组织编码 /// </summary> + [DisplayName("组织编码")] public string ORG_CODE { get; set; } /// <summary> /// 生产单元编码 /// </summary> + [DisplayName("生产单元编码")] public string PROD_CODE { get; set; } /// <summary> /// 仓库单元编码 /// </summary> + [DisplayName("仓库单元编码")] public string WH_CODE { get; set; } #endregion diff --git a/Tiger.Model.Net/Entitys/SYS/SYS_PDA_LOGIN.cs b/Tiger.Model.Net/Entitys/SYS/SYS_PDA_LOGIN.cs index 5798ff4..5400b94 100644 --- a/Tiger.Model.Net/Entitys/SYS/SYS_PDA_LOGIN.cs +++ b/Tiger.Model.Net/Entitys/SYS/SYS_PDA_LOGIN.cs @@ -10,6 +10,7 @@ /// 实体:PDA登录信息 /// </summary> [Description("Primary:ID")] + [DisplayName("PDA登录信息")] [Serializable] [SugarTable("SYS_PDA_LOGIN")] public class SYS_PDA_LOGIN : DbEntityWithAuth @@ -25,46 +26,57 @@ /// <summary> /// 登录TOKEN /// </summary> + [DisplayName("登录TOKEN")] public string TOKEN { get; set; } /// <summary> /// 最后登录时间 /// </summary> + [DisplayName("最后登录时间")] public DateTime LAST_ACCESS { get; set; } = DateTime.MinValue; /// <summary> /// 用户ID /// </summary> + [DisplayName("用户ID")] public string USER_ID { get; set; } /// <summary> /// 用户名 /// </summary> + [DisplayName("用户名")] public string USER_NAME { get; set; } /// <summary> /// 权限 /// </summary> + [DisplayName("权限")] public string PERMISSION { get; set; } /// <summary> /// IP地址 /// </summary> + [DisplayName("IP地址")] public string CLIENT_IP { get; set; } /// <summary> /// 账号类型 /// </summary> + [DisplayName("账号类型")] public int ACCOUNT_TYPE { get; set; } /// <summary> /// 用户状态 /// </summary> + [DisplayName("用户状态")] public string STATUS_CODE { get; set; } /// <summary> /// 组织编码 /// </summary> + [DisplayName("组织编码")] public string ORG_CODE { get; set; } /// <summary> /// 生产单元编码 /// </summary> + [DisplayName("生产单元编码")] public string PROD_CODE { get; set; } /// <summary> /// 仓库单元编码 /// </summary> + [DisplayName("仓库单元编码")] public string WH_CODE { get; set; } #endregion -- Gitblit v1.9.3