using Admin.NET.Plugin.AiDOP.DataPlatform;
using Admin.NET.Plugin.AiDOP.DataPlatform.S1Refresh;
using Admin.NET.Plugin.AiDOP.Infrastructure;
namespace Admin.NET.Plugin.AiDOP.Order;
///
/// 计划联动看板服务
/// 路由前缀:/api/Order/linkageplan/...
///
/// 【租户安全边界】需认证访问(已移除类级 [AllowAnonymous]);租户一律经
/// AidopTenantScope.ResolveOrThrow 从认证后 JWT 解析,无有效租户即拒绝,
/// 不读前端 tenantId、无默认回退(原实现:类级匿名 + 直接取 _userManager.TenantId,
/// 匿名时 TenantId=0 与 NULL 比较失败导致查不到数据)。
///
[ApiDescriptionSettings(Order = 250, Description = "计划联动看板")]
[Route("api/Order")]
[NonUnify]
public class LinkagePlanService : IDynamicApiController, ITransient
{
private const string SqlServerSourceCode = "DOPDEMORQ_SQLSERVER";
private readonly ISqlSugarClient _db;
private readonly SqlSugarRepository _linkagePlanRep;
private readonly UserManager _userManager;
private readonly S1MdpSyncTransformService _s1MdpSyncTransformService;
private readonly MdpSourceScopeFactory _scopeFactory;
public LinkagePlanService(
ISqlSugarClient db,
SqlSugarRepository linkagePlanRep,
UserManager userManager,
S1MdpSyncTransformService s1MdpSyncTransformService,
MdpSourceScopeFactory scopeFactory)
{
_db = db;
_linkagePlanRep = linkagePlanRep;
_userManager = userManager;
_s1MdpSyncTransformService = s1MdpSyncTransformService;
_scopeFactory = scopeFactory;
}
[DisplayName("获取计划联动看板列表")]
[HttpGet("linkageplan/list")]
public async Task