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