using Abp.Configuration; using Abp.Dependency; using Abp.UI; using VberZero.Configuration; using VberZero.Settings; using VberZero.Tools.StringModel; namespace VberZero.DomainService.AppGuids; public class AppGuidManager : VzDomainServiceBase, IAppGuidManager, ISingletonDependency { public AppGuidManager(ISettingManager settingManager, RecordIdManager riManager, IWebHostEnvironment env) { _settingManager = settingManager; _riManager = riManager; _configuration = env.GetAppConfiguration(); } private readonly IConfigurationRoot _configuration; private readonly ISettingManager _settingManager; private readonly RecordIdManager _riManager; /// /// 获取下一记录ID /// /// /// public string GetNextRecordId(int type) { var id = GetGuidFromFile(AppGuidType.DataLib); return FormatterRecordId(id, type); } /// /// 获取下一记录ID /// /// /// public async Task GetNextRecordIdAsync(int type) { var id = await GetGuidFromFileAsync(AppGuidType.DataLib); return FormatterRecordId(id, type); } public int GetRecordIdType(string no) { var pre = GetIdPrefix(); var typeIntStr = no.Substring(pre.Length, 3); if (int.TryParse(typeIntStr, out int typeInt)) { return typeInt; } return default; } /// /// 格式化Id /// /// /// /// private string FormatterRecordId(int id, int 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(VzSettingNames.RecordIdPrefix); if (str.Empty()) { str = _configuration["RecordId:Prefix"] ?? "VB"; } return str; } /// /// 从文件获取自定义Guid /// /// /// public int GetGuidFromFile(AppGuidType type) { int guid = _riManager.GetNextRecordId(type); return guid; } /// /// 从文件获取自定义Guid /// /// /// public Task GetGuidFromFileAsync(AppGuidType type) { int guid = _riManager.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 从DB获取自定义Guid }