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
}
}