|
|
@@ -1,5 +1,3 @@
|
|
|
-using Admin.NET.Plugin.AiDOP.Infrastructure;
|
|
|
-
|
|
|
namespace Admin.NET.Plugin.AiDOP.Supply;
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -8,10 +6,12 @@ namespace Admin.NET.Plugin.AiDOP.Supply;
|
|
|
public class NumberRuleService : ITransient
|
|
|
{
|
|
|
private readonly ISqlSugarClient _db;
|
|
|
+ private readonly UserManager _userManager;
|
|
|
|
|
|
- public NumberRuleService(ISqlSugarClient db)
|
|
|
+ public NumberRuleService(ISqlSugarClient db, UserManager userManager)
|
|
|
{
|
|
|
_db = db;
|
|
|
+ _userManager = userManager;
|
|
|
}
|
|
|
|
|
|
public async Task<IReadOnlyList<string>> NextBatchAsync(string ruleCode, string domain, int count, string operatorNo)
|
|
|
@@ -39,17 +39,13 @@ public class NumberRuleService : ITransient
|
|
|
var normalizedDomain = domain?.Trim() ?? string.Empty;
|
|
|
var now = DateTime.Now;
|
|
|
|
|
|
- // 可信租户硬解析:无 token / 超管未选租户一律抛错;绝不回退固定默认租户、绝不读前端 tenantId。
|
|
|
- // 租户过滤在取号规则定位上强制无条件生效,杜绝跨租户读到他租户规则或落到默认规则。
|
|
|
- var tenantId = AdoS0TenantScope.ResolveRequiredOrThrow();
|
|
|
-
|
|
|
- const string tenantWhere = "\n AND tenant_id = @TenantId";
|
|
|
+ var tenantWhere = _userManager.TenantId > 0 ? "\n AND tenant_id = @TenantId" : string.Empty;
|
|
|
var rulePars = new List<SugarParameter>
|
|
|
{
|
|
|
new("@RuleCode", normalizedRuleCode),
|
|
|
- new("@Domain", normalizedDomain),
|
|
|
- new("@TenantId", tenantId)
|
|
|
+ new("@Domain", normalizedDomain)
|
|
|
};
|
|
|
+ if (_userManager.TenantId > 0) rulePars.Add(new SugarParameter("@TenantId", _userManager.TenantId));
|
|
|
|
|
|
var rule = (await _db.Ado.SqlQueryAsync<NbrControlRuleRow>(
|
|
|
$"""
|
|
|
@@ -98,7 +94,7 @@ public class NumberRuleService : ITransient
|
|
|
throw Oops.Oh($"未找到编号规则:{normalizedRuleCode}");
|
|
|
|
|
|
var sequenceDate = NumberRuleFormatter.ResolveSequenceDate(rule.DateType, rule.IsDateType, now);
|
|
|
- var dayInfo = await GetDayInfoForUpdateAsync(rule, normalizedRuleCode, normalizedDomain, sequenceDate, tenantId);
|
|
|
+ var dayInfo = await GetDayInfoForUpdateAsync(rule, normalizedRuleCode, normalizedDomain, sequenceDate);
|
|
|
|
|
|
var firstSerial = ResolveFirstSerial(rule, dayInfo);
|
|
|
var lastSerial = firstSerial + count - 1;
|
|
|
@@ -134,18 +130,17 @@ public class NumberRuleService : ITransient
|
|
|
return numbers;
|
|
|
}
|
|
|
|
|
|
- private async Task<NbrDayInfoRow?> GetDayInfoForUpdateAsync(NbrControlRuleRow rule, string ruleCode, string domain, DateTime? sequenceDate, long tenantId)
|
|
|
+ private async Task<NbrDayInfoRow?> GetDayInfoForUpdateAsync(NbrControlRuleRow rule, string ruleCode, string domain, DateTime? sequenceDate)
|
|
|
{
|
|
|
var dateFilter = sequenceDate.HasValue ? "AND DATE(Today) = DATE(@Today)" : string.Empty;
|
|
|
- // 日流水行同样按当前租户无条件过滤,序号推进不跨租户。
|
|
|
- const string tenantFilter = "AND tenant_id = @TenantId2";
|
|
|
+ var tenantFilter = _userManager.TenantId > 0 ? "AND tenant_id = @TenantId2" : string.Empty;
|
|
|
var dayPars = new List<SugarParameter>
|
|
|
{
|
|
|
new("@RuleCode", rule.NbrType ?? ruleCode),
|
|
|
new("@Domain", rule.Domain ?? domain),
|
|
|
- new("@Today", sequenceDate ?? DateTime.Today),
|
|
|
- new("@TenantId2", tenantId)
|
|
|
+ new("@Today", sequenceDate ?? DateTime.Today)
|
|
|
};
|
|
|
+ if (_userManager.TenantId > 0) dayPars.Add(new SugarParameter("@TenantId2", _userManager.TenantId));
|
|
|
return (await _db.Ado.SqlQueryAsync<NbrDayInfoRow>(
|
|
|
$"""
|
|
|
SELECT
|