🍒 fix(sysSerial): UserManager应该作为参数传递
This commit is contained in:
parent
4558b53891
commit
cefe913c85
@ -11,12 +11,11 @@ namespace Admin.NET.Application;
|
||||
/// </summary>
|
||||
public class SerialSlotProvider : ISerialSlotProvider
|
||||
{
|
||||
private static Lazy<UserManager> UserManager => new(() => App.GetService<UserManager>());
|
||||
public Dictionary<string, Func<long, long, DateTime, string>> GetSlotMap()
|
||||
public Dictionary<string, Func<long, long, DateTime, UserManager, string>> GetSlotMap()
|
||||
{
|
||||
return new()
|
||||
{
|
||||
{ "{Account}", (seq, max, nowDate) => UserManager.Value?.Account }
|
||||
{ "{Account}", (seq, max, nowDate, userManager) => userManager.Account[..2] }
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -11,5 +11,5 @@ namespace Admin.NET.Core.Service;
|
||||
/// </summary>
|
||||
public interface ISerialSlotProvider
|
||||
{
|
||||
public Dictionary<string, Func<long, long, DateTime, string>> GetSlotMap();
|
||||
public Dictionary<string, Func<long, long, DateTime, UserManager, string>> GetSlotMap();
|
||||
}
|
||||
@ -23,7 +23,7 @@ public class SysSerialService : IDynamicApiController, ITransient
|
||||
/// <summary>
|
||||
/// 因为缓存的是代理,无法序列化,所以只能用字典缓存
|
||||
/// </summary>
|
||||
private readonly ConcurrentDictionary<string, Dictionary<string, Func<long, long, DateTime, string>>> _slotTempMap = new();
|
||||
private readonly ConcurrentDictionary<string, Dictionary<string, Func<long, long, DateTime, UserManager, string>>> _slotTempMap = new();
|
||||
|
||||
public SysSerialService(SqlSugarRepository<SysSerial> sysSerialRep,
|
||||
SysCacheService sysCacheService, ISqlSugarClient db,
|
||||
@ -315,22 +315,22 @@ public class SysSerialService : IDynamicApiController, ITransient
|
||||
var slotLogic = _slotTempMap.GetOrAdd(CacheConst.KeySysSerialSlot, _ =>
|
||||
{
|
||||
// 默认插槽逻辑
|
||||
var logicMap = new Dictionary<string, Func<long, long, DateTime, string>>
|
||||
var logicMap = new Dictionary<string, Func<long, long, DateTime, UserManager, string>>
|
||||
{
|
||||
// 序号格式化
|
||||
["{SEQ}"] = (s, m, d) => s.ToString($"D{m.ToString().Length}"),
|
||||
["{SEQ}"] = (s, m, _, _) => s.ToString($"D{m.ToString().Length}"),
|
||||
// 时间相关(依赖 nowDate)
|
||||
["{yyyy}"] = (_, _, d) => d.Year.ToString(),
|
||||
["{yy}"] = (_, _, d) => d.Year.ToString().Substring(2),
|
||||
["{MM}"] = (_, _, d) => d.Month.ToString("D2"),
|
||||
["{dd}"] = (_, _, d) => d.Day.ToString("D2"),
|
||||
["{HH}"] = (_, _, d) => d.Hour.ToString("D2"),
|
||||
["{mm}"] = (_, _, d) => d.Minute.ToString("D2"),
|
||||
["{ss}"] = (_, _, d) => d.Second.ToString("D2"),
|
||||
["{TenantId}"] = (_, _, d) => _userManager?.TenantId.ToString(),
|
||||
["{UserId}"] = (_, _, d) => _userManager?.UserId.ToString(),
|
||||
["{OrgId}"] = (_, _, d) => _userManager?.OrgId.ToString(),
|
||||
["{OrgType}"] = (_, _, d) => _userManager?.OrgType,
|
||||
["{yyyy}"] = (_, _, d, _) => d.Year.ToString(),
|
||||
["{yy}"] = (_, _, d, _) => d.Year.ToString().Substring(2),
|
||||
["{MM}"] = (_, _, d, _) => d.Month.ToString("D2"),
|
||||
["{dd}"] = (_, _, d, _) => d.Day.ToString("D2"),
|
||||
["{HH}"] = (_, _, d, _) => d.Hour.ToString("D2"),
|
||||
["{mm}"] = (_, _, d, _) => d.Minute.ToString("D2"),
|
||||
["{ss}"] = (_, _, d, _) => d.Second.ToString("D2"),
|
||||
["{TenantId}"] = (_, _, _, u) => u?.TenantId.ToString(),
|
||||
["{UserId}"] = (_, _, _, u) => u?.UserId.ToString(),
|
||||
["{OrgId}"] = (_, _, _, u) => u?.OrgId.ToString(),
|
||||
["{OrgType}"] = (_, _, _, u) => u?.OrgType,
|
||||
};
|
||||
|
||||
// 扩展插槽提供者
|
||||
@ -344,17 +344,12 @@ public class SysSerialService : IDynamicApiController, ITransient
|
||||
foreach (var kv in providerLogic) logicMap[kv.Key] = kv.Value;
|
||||
}
|
||||
|
||||
logicMap.TryAdd("{TenantId}", (_, _, _) => _userManager.TenantId.ToString());
|
||||
logicMap.TryAdd("{UserId}", (_, _, _) => _userManager.UserId.ToString());
|
||||
logicMap.TryAdd("{OrgId}", (_, _, _) => _userManager.OrgId.ToString());
|
||||
logicMap.TryAdd("{OrgType}", (_, _, _) => _userManager.OrgType);
|
||||
|
||||
return logicMap;
|
||||
});
|
||||
|
||||
// 将逻辑模板绑定到当前参数,生成最终的 Func<string>
|
||||
var result = new Dictionary<string, Func<string>>();
|
||||
foreach (var kv in slotLogic) result.TryAdd(kv.Key, () => kv.Value(seq, max, nowDate));
|
||||
foreach (var kv in slotLogic) result.TryAdd(kv.Key, () => kv.Value(seq, max, nowDate, _userManager));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user