using System.Configuration; using System.Threading.Tasks; using Abp.Configuration; using Abp.Dependency; using Abp.UI; using IwbZero.ToolCommon.StringModel; using WeApp.BaseInfo; using WeApp.CommonManager.Sqls; using WeApp.Configuration; namespace WeApp.CommonManager.AppGuids { public class AppGuidManager : IAppGuidManager, ISingletonDependency { public AppGuidManager(ISettingManager settingManager) { SettingManager = settingManager; SqlManager = NullSqlManager.Instance; } public ISqlManager SqlManager { get; set; } private ISettingManager SettingManager { get; } /// /// 获取下一记录ID /// /// /// public string GetNextRecordId(DataLibType type) { var id = GetGuidFromFile(AppGuidType.DataLib); return FormatterRecordId(id, type); } /// /// 获取下一记录ID /// /// /// public async Task GetNextRecordIdAsync(DataLibType type) { var id = await GetGuidFromFileAsync(AppGuidType.DataLib); return FormatterRecordId(id, type); } /// /// 格式化Id /// /// /// /// private string FormatterRecordId(int id, DataLibType type) { if (id == 0) { throw new UserFriendlyException("获取RecordId失败"); } string prefix = GetIdPrefix(); return $"{prefix}{type.ToInt().LeftPad(3)}{id.LeftPad(9)}"; } /// /// 获取前缀 /// /// private string GetIdPrefix() { string str = SettingManager.GetSettingValue(IwbSettingNames.RecordIdPrefix); if (str.IsEmpty()) { str = ConfigurationManager.AppSettings["WeApp.RecordId.Prefix"] ?? "JY"; } return str; } /// /// 从文件获取自定义Guid /// /// /// public int GetGuidFromFile(AppGuidType type) { int guid = RecordIdManager.GetNextRecordId(type); return guid; } /// /// 从文件获取自定义Guid /// /// /// public Task GetGuidFromFileAsync(AppGuidType type) { int guid = RecordIdManager.GetNextRecordId(type); return Task.FromResult(guid); } #region 从DB获取自定义Guid ///// ///// 获取自定义Guid ///// ///// ///// //public int GetAppGuid(AppGuidType type) //{ // var sqlParams = new object[3]; // sqlParams[0] = new SqlParameter("@idtype", (int)type); // sqlParams[1] = new SqlParameter("@nextid", SqlDbType.Int) { Direction = ParameterDirection.Output }; // sqlParams[2] = new SqlParameter("@maxid", SqlDbType.Int) { Direction = ParameterDirection.Output }; // SqlManager.Execute(@"exec [dbo].[Sp_AppGuid] @idtype,@nextid out,@maxid out", sqlParams); // int guid = (int)((SqlParameter)sqlParams[2]).Value; // return guid; //} ///// ///// 获取自定义Guid ///// ///// ///// //public async Task GetAppGuidAsync(AppGuidType type) //{ // var sqlParams = new object[3]; // sqlParams[0] = new SqlParameter("@idtype", (int)type); // sqlParams[1] = new SqlParameter("@nextid", SqlDbType.Int) { Direction = ParameterDirection.Output }; // sqlParams[2] = new SqlParameter("@maxid", SqlDbType.Int) { Direction = ParameterDirection.Output }; // await SqlManager.ExecuteAsync(@"exec [dbo].[Sp_AppGuid] @idtype,@nextid out,@maxid out", sqlParams); // int guid = (int)((SqlParameter)sqlParams[2]).Value; // return guid; //} #endregion } }