🐛 修复认证记录提交人记成司机档案ID
提交时把 driver.getId()(司机档案ID)当提交人写进了 submit_user, 而该字段要靠 UserCache.getUserRealName(userId) 翻译成姓名, 两处ID都是雪花ID、类型也相同,传错不报任何错, 只在审核页表现为「提交人」显示成一串数字。 改为 driver.getUserId(),并补回归测试锁住(用两个不同的ID常量, 传错必然断言失败)。
This commit is contained in:
+6
-2
@@ -90,7 +90,7 @@ public class DriverCertServiceImpl implements IDriverCertService {
|
||||
|
||||
TransportCertRecord record = newRecord(
|
||||
TransportCertRecord.BIZ_TYPE_DRIVER, driver.getId(),
|
||||
Func.toStr(driver.getDriverName(), ""), snapshotJson, driver.getId());
|
||||
Func.toStr(driver.getDriverName(), ""), snapshotJson, driver.getUserId());
|
||||
transportCertRecordService.save(record);
|
||||
|
||||
// 展示缓存:让小程序卡片显示「审核中」。可用性判定不看这个字段。
|
||||
@@ -122,7 +122,7 @@ public class DriverCertServiceImpl implements IDriverCertService {
|
||||
|
||||
TransportCertRecord record = newRecord(
|
||||
TransportCertRecord.BIZ_TYPE_VEHICLE, vehicle.getId(),
|
||||
Func.toStr(vehicle.getPlateNo(), ""), snapshotJson, driver.getId());
|
||||
Func.toStr(vehicle.getPlateNo(), ""), snapshotJson, driver.getUserId());
|
||||
transportCertRecordService.save(record);
|
||||
|
||||
updateVehicleDisplayCache(vehicle.getId(), TransportCertRecord.STATUS_PENDING, null);
|
||||
@@ -202,6 +202,10 @@ public class DriverCertServiceImpl implements IDriverCertService {
|
||||
* <p>
|
||||
* 状态必须显式设置为待审:框架在插入时会把空的 {@code status} 静默填成 1,
|
||||
* 而 1 在本表是「已通过」,那会让一次提交凭空变成审核通过。
|
||||
*
|
||||
* @param submitUser 提交人**用户ID**(blade_user.id)——审核页要靠它翻译成姓名。
|
||||
* 不要传司机档案ID:两者都是雪花ID、类型也相同,传错不会报任何错,
|
||||
* 只会让「提交人」一栏显示成一串数字。
|
||||
*/
|
||||
private TransportCertRecord newRecord(String bizType, Long bizId, String bizKey,
|
||||
String snapshotJson, Long submitUser) {
|
||||
|
||||
+31
@@ -41,6 +41,7 @@ import static org.mockito.Mockito.when;
|
||||
class DriverCertServiceImplTest {
|
||||
|
||||
private static final Long DRIVER_ID = 9001L;
|
||||
private static final Long USER_ID = 7001L;
|
||||
private static final Long VEHICLE_ID = 8001L;
|
||||
private static final String PLATE = "桂A32523";
|
||||
|
||||
@@ -89,9 +90,37 @@ class DriverCertServiceImplTest {
|
||||
assertNull(saved.getRejectReason(), "新提交不得继承上一条的驳回原因");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("提交人必须记用户ID:记成司机档案ID会让审核页「提交人」显示一串数字")
|
||||
void submitRecordsUserIdAsSubmitUser() {
|
||||
when(driverAppService.currentDriverEntity()).thenReturn(driver(PLATE));
|
||||
when(transportVehicleService.getById(VEHICLE_ID)).thenReturn(vehicle(VEHICLE_ID, PLATE, null));
|
||||
when(certRecordService.selectPendingRecord(any(), anyLong())).thenReturn(null);
|
||||
|
||||
VehicleCertSubmitRequest vehicleRequest = new VehicleCertSubmitRequest();
|
||||
vehicleRequest.setId(VEHICLE_ID);
|
||||
vehicleRequest.setPlateNo(PLATE);
|
||||
service.submitVehicleCert(vehicleRequest);
|
||||
|
||||
PersonCertSubmitRequest personRequest = new PersonCertSubmitRequest();
|
||||
personRequest.setRealName("张三");
|
||||
service.submitPersonCert(personRequest);
|
||||
|
||||
ArgumentCaptor<TransportCertRecord> captor = ArgumentCaptor.forClass(TransportCertRecord.class);
|
||||
verify(certRecordService, times(2)).save(captor.capture());
|
||||
|
||||
for (TransportCertRecord saved : captor.getAllValues()) {
|
||||
assertEquals(USER_ID, saved.getSubmitUser(),
|
||||
"提交人必须是用户ID(审核页靠它翻译姓名),不能是司机档案ID");
|
||||
assertNotEquals(saved.getBizId(), saved.getSubmitUser(),
|
||||
"提交人与认证对象主键是两种ID,不应相同");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("车辆提交:不修改生效快照指针(提交不影响车辆可用性)")
|
||||
void submitVehicleDoesNotTouchEffectivePointer() {
|
||||
|
||||
Long effectiveId = 777L;
|
||||
when(driverAppService.currentDriverEntity()).thenReturn(driver(PLATE));
|
||||
when(transportVehicleService.getById(VEHICLE_ID))
|
||||
@@ -454,6 +483,8 @@ class DriverCertServiceImplTest {
|
||||
private Driver driver(String drivingVehicle) {
|
||||
Driver driver = new Driver();
|
||||
driver.setId(DRIVER_ID);
|
||||
// 司机档案ID与用户ID是两个不同的ID:提交人字段要的是后者
|
||||
driver.setUserId(USER_ID);
|
||||
driver.setDriverName("张三");
|
||||
driver.setDrivingVehicle(drivingVehicle);
|
||||
return driver;
|
||||
|
||||
Reference in New Issue
Block a user