fix(identity): search org snapshots by phone

This commit is contained in:
2026-07-14 16:37:15 +08:00
parent 52b8a812d7
commit c02cdb7b69
4 changed files with 19 additions and 1 deletions
@@ -469,12 +469,14 @@ public class AihrOrgSyncService {
args.add(like);
} else {
where.append("""
and (ext_party_id like ? or position_name like ? or project_code like ? or project_name like ?)
and (ext_party_id like ? or person_phone like ? or position_name like ?
or project_code like ? or project_name like ?)
""");
args.add(like);
args.add(like);
args.add(like);
args.add(like);
args.add(like);
}
}
String project = clean(projectCode);
@@ -95,6 +95,19 @@ public class AihrOrgSyncServiceTest {
assertEquals(true, ReflectionTestUtils.getField(masked, "suspectText"));
}
@Test
public void hiddenDisplayFieldsStillAllowIdentitySearchByPhone() {
AihrOrgSyncService service = new AihrOrgSyncService(new ObjectMapper(), mock(JdbcTemplate.class), mock(TransactionTemplate.class));
ReflectionTestUtils.setField(service, "storeDisplayFields", false);
List<Object> args = new ArrayList<>();
String where = ReflectionTestUtils.invokeMethod(service, "orgSnapshotWhere",
"13900001111", null, null, "active", args);
assertTrue(where.contains("person_phone like ?"));
assertFalse(where.contains("person_name like ?"));
}
@Test
public void snapshotSuspectTextQuerySearchesLiteralQuestionMarks() {
SnapshotJdbcTemplate jdbcTemplate = new SnapshotJdbcTemplate();
+1
View File
@@ -4,6 +4,7 @@
- 2026-07-14 BRD G3/G6 生产验证码安全边界修复:`CaptchaController` 原先允许通过 `aihr.sms.demo-fixed-code-enabled=true` 在 `prod` profile 放行固定短信验证码,和项目要求的“生产代码级禁用”冲突;现仅允许非 `prod` profile 使用 `aihr.sms.dev-fixed-code`,删除生产覆盖开关,并新增源码契约回归与 `demo-check` marker。未修改线上配置或生产数据。
- 2026-07-14 本地验证环境一致性修复:项目 Docker 编排使用 MySQL `13306`、Redis `16379`,但 `application-dev.yml` 原先仍默认连接 `3306/6379`,导致 admin Spring 全量测试误连其他本机容器;现 dev 数据源改为 `AIHR_MYSQL_*`、`AIHR_REDIS_*` 可覆盖配置,默认与本项目编排一致,生产配置不变。`ruoyi-admin` 全量测试已通过。
- 2026-07-14 BRD 5.4/G3 线上岗位身份映射修复:生产关闭组织姓名/部门展示时,`orgSnapshotWhere` 原先也排除了 `person_phone`,认证 APP 用户的手机号查询可能返回空结果并错误降级为员工/手动选岗;现隐藏展示字段模式仍允许按手机号过滤,但不返回手机号或姓名部门。新增回归测试与 `demo-check` marker;线上需重新发布后再用正式组织映射数据验证。
## 1. 审查口径
+2
View File
@@ -615,6 +615,8 @@ contains backend/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaCon
contains backend/ruoyi-admin/src/test/java/org/dromara/web/controller/CaptchaControllerSecurityTest.java "CaptchaControllerSecurityTest"
contains backend/ruoyi-admin/src/main/resources/application-dev.yml "AIHR_MYSQL_PORT:13306"
contains backend/ruoyi-admin/src/main/resources/application-dev.yml "AIHR_REDIS_PORT:16379"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrOrgSyncService.java "person_phone like ?"
contains backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrOrgSyncServiceTest.java "hiddenDisplayFieldsStillAllowIdentitySearchByPhone"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "requester_ext_party_id"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrSopController.java "currentRequesterExtPartyId"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java "hasExplicitSopReviewDecision"