fix(aihr): hide unpublished cases from app users

This commit is contained in:
2026-07-14 11:12:30 +08:00
parent 8ed80c2982
commit 7c3d367421
3 changed files with 29 additions and 2 deletions
@@ -123,12 +123,13 @@ public class AihrCaseService {
projectWhere = " AND project_ext_org_id IN (" + placeholders(projectScopes.size()) + ")";
args.addAll(projectScopes);
}
String publishedWhere = projectScopes == null ? "" : " AND status = '已入库'";
args.add(safeLimit);
String sql = """
SELECT case_id, title, type, status, update_time, owner, summary
FROM aihr_case_record
WHERE tenant_id = ?
""" + projectWhere + """
""" + projectWhere + publishedWhere + """
ORDER BY update_time DESC, id DESC
LIMIT ?
""";
@@ -157,11 +158,12 @@ public class AihrCaseService {
projectWhere = " AND project_ext_org_id IN (" + placeholders(projectScopes.size()) + ")";
args.addAll(projectScopes);
}
String publishedWhere = projectScopes == null ? "" : " AND status = '已入库'";
String sql = """
SELECT case_id, file_name, title, type, status, update_time, owner, transcript, summary, media_url, media_oss_id
FROM aihr_case_record
WHERE tenant_id = ? AND case_id = ?
""" + projectWhere + " LIMIT 1";
""" + projectWhere + publishedWhere + " LIMIT 1";
args.add(0, tenantId());
return jdbcTemplate.query(sql, (rs, rowNum) -> {
Long mediaOssId = rs.getObject("media_oss_id", Long.class);
@@ -108,6 +108,18 @@ class AihrCaseServiceTest {
assertEquals("https://oss.local/cases/refreshed-case.webm", detail.mediaUrl());
assertEquals(456L, detail.mediaOssId());
assertEquals("P1", jdbcTemplate.lastArgs[2]);
assertTrue(jdbcTemplate.lastSql.contains("status = '已入库'"));
}
@Test
@Tag("dev")
void appCaseRecordsOnlyExposePublishedCases() {
RecordsCaseJdbcTemplate jdbcTemplate = new RecordsCaseJdbcTemplate();
AihrCaseService service = new AihrCaseService(null, null, new ObjectMapper(), jdbcTemplate, null);
service.records(10, List.of("P1"));
assertTrue(jdbcTemplate.lastSql.contains("status = '已入库'"));
}
@Test
@@ -189,9 +201,11 @@ class AihrCaseServiceTest {
private static final class PersistentCaseJdbcTemplate extends CaseJdbcTemplate {
private String lastCaseId;
private Object[] lastArgs = new Object[0];
private String lastSql = "";
@Override
public <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) {
this.lastSql = sql;
this.lastCaseId = String.valueOf(args[1]);
this.lastArgs = args;
try {
@@ -210,4 +224,14 @@ class AihrCaseServiceTest {
}
}
}
private static final class RecordsCaseJdbcTemplate extends CaseJdbcTemplate {
private String lastSql = "";
@Override
public <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) {
this.lastSql = sql;
return List.of();
}
}
}