fix(aihr): scope model config to tenant

This commit is contained in:
2026-07-14 06:36:28 +08:00
parent 34799d9423
commit 699c246b25
2 changed files with 17 additions and 12 deletions
@@ -14,6 +14,7 @@ import org.dromara.aihr.domain.AihrModelDto.ConfigResponse;
import org.dromara.aihr.domain.AihrModelDto.ProviderRequest;
import org.dromara.aihr.domain.AihrModelDto.ProviderResponse;
import org.dromara.aihr.domain.AihrModelDto.ProviderStatusRequest;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -117,7 +118,7 @@ public class AihrModelSeedService {
insert into aihr_model_provider
(tenant_id, provider_name, provider_code, provider_desc, api_host, api_key, status, sort_order, remark, create_time, update_time)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, now(), now())
""", TENANT_ID, data.providerName(), data.providerCode(), data.providerDesc(), data.apiHost(), emptyToNull(request.apiKey()),
""", tenantId(), data.providerName(), data.providerCode(), data.providerDesc(), data.apiHost(), emptyToNull(request.apiKey()),
data.status(), data.sortOrder(), data.remark());
}
@@ -131,7 +132,7 @@ public class AihrModelSeedService {
status = ?, sort_order = ?, remark = ?, update_time = now()
where tenant_id = ? and provider_code = ?
""", data.providerName(), data.providerDesc(), data.apiHost(), emptyToNull(request.apiKey()), emptyToNull(request.apiKey()),
data.status(), data.sortOrder(), data.remark(), TENANT_ID, code);
data.status(), data.sortOrder(), data.remark(), tenantId(), code);
requireUpdated(updated, "供应商不存在: " + code);
}
@@ -142,7 +143,7 @@ public class AihrModelSeedService {
update aihr_model_provider
set status = ?, update_time = now()
where tenant_id = ? and provider_code = ?
""", status, TENANT_ID, code);
""", status, tenantId(), code);
requireUpdated(updated, "供应商不存在: " + code);
}
@@ -152,7 +153,7 @@ public class AihrModelSeedService {
insert into aihr_model_config
(tenant_id, category, model_name, provider_code, model_describe, model_dimension, model_show, api_host, api_key, enabled, remark, create_time, update_time)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, now(), now())
""", TENANT_ID, data.category(), data.modelName(), data.providerCode(), data.modelDescribe(), data.modelDimension(),
""", tenantId(), data.category(), data.modelName(), data.providerCode(), data.modelDescribe(), data.modelDimension(),
data.modelShow(), data.apiHost(), emptyToNull(request.apiKey()), data.enabled(), data.remark());
}
@@ -168,7 +169,7 @@ public class AihrModelSeedService {
enabled = ?, remark = ?, update_time = now()
where tenant_id = ? and id = ?
""", data.category(), data.modelName(), data.providerCode(), data.modelDescribe(), data.modelDimension(), data.modelShow(),
data.apiHost(), emptyToNull(request.apiKey()), emptyToNull(request.apiKey()), data.enabled(), data.remark(), TENANT_ID, id);
data.apiHost(), emptyToNull(request.apiKey()), emptyToNull(request.apiKey()), data.enabled(), data.remark(), tenantId(), id);
requireUpdated(updated, "模型不存在: " + id);
}
@@ -181,7 +182,7 @@ public class AihrModelSeedService {
update aihr_model_config
set enabled = ?, update_time = now()
where tenant_id = ? and id = ?
""", enabled, TENANT_ID, id);
""", enabled, tenantId(), id);
requireUpdated(updated, "模型不存在: " + id);
}
@@ -257,7 +258,7 @@ public class AihrModelSeedService {
rs.getString("model_name"),
rs.getString("resolved_api_host"),
rs.getString("resolved_api_key")
), TENANT_ID, category);
), tenantId(), category);
return rows.stream()
.filter(model -> configured(model.baseUrl(), model.modelName(), model.apiKey()))
.findFirst();
@@ -315,7 +316,7 @@ public class AihrModelSeedService {
rs.getObject("sort_order", Integer.class),
"db",
configured(rs.getString("api_host"), "model", rs.getString("api_key"))
), TENANT_ID);
), tenantId());
} catch (DataAccessException e) {
log.debug("aihr model provider db fallback: {}", e.getMessage());
return List.of();
@@ -346,7 +347,7 @@ public class AihrModelSeedService {
rs.getInt("enabled") == 1,
!isBlank(rs.getString("resolved_api_key")),
configured(rs.getString("resolved_api_host"), rs.getString("model_name"), rs.getString("resolved_api_key"))
), TENANT_ID);
), tenantId());
} catch (DataAccessException e) {
log.debug("aihr model config db fallback: {}", e.getMessage());
return List.of();
@@ -451,8 +452,12 @@ public class AihrModelSeedService {
""";
}
private static Object[] runtimeArgs(String requestedModel) {
return isBlank(requestedModel) ? new Object[]{TENANT_ID} : new Object[]{TENANT_ID, requestedModel};
private Object[] runtimeArgs(String requestedModel) {
return isBlank(requestedModel) ? new Object[]{tenantId()} : new Object[]{tenantId(), requestedModel};
}
private String tenantId() {
return fallback(LoginHelper.getTenantId(), TENANT_ID);
}
private static String normalizeBaseUrl(String baseUrl) {