💡 清理本次改动注释中的票据引用与设计叙述

注释只写从代码看不出来的事实:删除票号引用、设计权衡与取证经过,
保留业务约束(id_card_no 为 NULL 表示未采集、唯一索引覆盖软删除行、
driving_vehicle 为 ALWAYS 策略等)。
This commit is contained in:
2026-10-23 16:34:25 +08:00
parent b04f68e168
commit 77144f4e68
6 changed files with 21 additions and 23 deletions
@@ -349,9 +349,8 @@ public class CertAuditServiceImpl implements ICertAuditService {
if (Func.isEmpty(snapshot.getIdCardNo()) && Func.isEmpty(snapshot.getDriverFileNo())) {
return;
}
// 身份证号要落到档案上,先确认它没有落在别人名下:该列在基线建表脚本与本地库上
// 有唯一索引 uk_transport_driver_id_card,但迁移历史里没有任何一次添加它的记录,
// 生产库是否已建未核实;应用层查重不能省,否则重复证件号会静默落库
// 身份证号要落到档案上,先确认它没有落在别人名下:重复证件号一旦落库,
// 建档查重与按证件号识别同一人都会失效
requireIdCardNotTaken(snapshot.getIdCardNo(), driver.getId());
driver.setDriverName(snapshot.getRealName());
driver.setIdCardNo(snapshot.getIdCardNo());
@@ -384,10 +383,9 @@ public class CertAuditServiceImpl implements ICertAuditService {
* 身份证号不得落在另一名司机名下
* <p>
* 司机申报的实名内容会写回档案,其中身份证号是管理端建档时的查重判据。
* 该列在基线建表脚本与本地库上有唯一索引 {@code uk_transport_driver_id_card},
* 但迁移历史里没有任何一次添加它的记录,生产库是否已建未核实;
* 应用层查重仍不能省:重复证件号一旦落库,后续建档查重、
* 按证件号识别同一人都将失效。此处阻断审核并整体回滚,交由管理端先处理档案归属。
* {@code blade_transport_driver.id_card_no} 上有唯一索引
* {@code uk_transport_driver_id_card};证件号已属于另一条档案时,
* 此处阻断审核并整体回滚,交由管理端先处理档案归属。
* <p>
* 证件号与当前档案相同(绝大多数情况)、或库里尚无该号时不阻断;
* 快照没带证件号时无从判断,同样不阻断(历史快照就是这种)。
@@ -122,8 +122,8 @@ public class DriverServiceImpl extends BaseServiceImpl<DriverMapper, Driver> imp
if (resolvedTenantId == null) {
resolvedTenantId = trimToNull(AuthUtil.getTenantId());
}
// 租户是档案归属与手机号查重的范围,宁可让本次建档失败(登录层只记 WARN),
// 也不能写出 tenant_id 为空的档案——那会让下一条同号档案无法被查到
// 租户是档案归属与手机号查重的范围,tenant_id 为空的档案不能被后续同号查询命中,
// 故此处拒绝写库(登录层只记 WARN)
if (resolvedTenantId == null) {
throw new ServiceException("租户信息为空,无法创建司机档案");
}
@@ -134,8 +134,8 @@ public class DriverServiceImpl extends BaseServiceImpl<DriverMapper, Driver> imp
if (mobile == null) {
throw new ServiceException("手机号不能为空");
}
// 查找顺序固定为 user_id → phone:user_id 是稳定标识;
// phone 会被运营商二次放号,拿它优先会把别人档案绑给新持卡人
// 查找顺序固定为 user_id → phone:user_id 是账号的稳定标识,
// phone 会被运营商二次放号
Driver bound = findDriverByUserId(mpUserId);
if (bound != null) {
return ensureResult(bound.getId(), false, false, null);
@@ -169,10 +169,10 @@ public class DriverServiceImpl extends BaseServiceImpl<DriverMapper, Driver> imp
}
/**
* 新建占位档案(票 01 定值)
* 新建占位档案
* <p>
* 不走 {@link #submit}:那条路径要求 15 项必填,自动建档必然被拦。这里只满足表约束——
* id_card_no 留 NULL(唯一索引对 NULL 不去重,且 NULL 是「未采集」的判据),
* 不走 {@link #submit}:那条路径要求 15 项必填。这里只满足表约束——
* id_card_no 留 NULL(唯一索引对 NULL 不去重,NULL 同时是「未采集」的判据),
* 其余 NOT NULL 列写空串或可读占位。
*/
private DriverEnsureProfileVO createPlaceholderProfile(String tenantId, Long mpUserId, String mobile) {
@@ -76,7 +76,7 @@ class DriverEnsureProfileTest {
// ------------------------------------------------------------ 新建占位档案
@Test
@DisplayName("无账号档案、无同号档案:按票 01 的占位值新建,created=true")
@DisplayName("无账号档案、无同号档案:按占位值新建,created=true")
void createsPlaceholderProfile() {
// 第一次按 user_id 查、第二次按手机号查,都没有
when(driverMapper.selectList(any())).thenReturn(Collections.emptyList(), Collections.emptyList());