using Admin.NET.Core;
using Admin.NET.Core.Service;
using Admin.NET.Plugin.AiDOP.DataPlatform.Inbound;
using Admin.NET.Plugin.AiDOP.Entity.DataPlatform;
using Yitter.IdGenerator;
namespace Admin.NET.Plugin.AiDOP.DataPlatform;
///
/// 来源映射维护:归属、库位角色、岗位、事务类型、来源能力、推送授权。
/// 页面写入库位角色和岗位时 role_source 固定为 MANUAL,避免被自动分类冲掉。
///
[ApiDescriptionSettings(Order = 326, Description = "来源映射维护")]
[Route("api/DataPlatform")]
[NonUnify]
public class MdpSourceMappingService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
private readonly UserManager _user;
private readonly SysCacheService _cache;
public MdpSourceMappingService(ISqlSugarClient db, UserManager user, SysCacheService cache)
{
_db = db;
_user = user;
_cache = cache;
}
private long ScopeTenant(long? requested)
{
if (_user.SuperAdmin || _user.SysAdmin)
return requested is > 0 ? requested.Value : _user.TenantId;
if (requested is > 0 && requested.Value != _user.TenantId)
throw Oops.Oh("不能查看或修改其他租户的对接配置");
return _user.TenantId;
}
[HttpGet("source-domain-maps")]
public Task> ListDomainMaps([FromQuery] long? tenantId)
{
var tenant = ScopeTenant(tenantId);
return _db.Ado.SqlQueryAsync(
"""
SELECT id, system_code AS systemCode, source_code AS sourceCode, domain, tenant_id AS tenantId, status, remark
FROM ado_source_domain_tenant_map
WHERE tenant_id=@tenant
ORDER BY system_code, domain
""",
new { tenant });
}
[HttpPut("source-domain-maps")]
public async Task