Merge remote-tracking branch 'origin/dahua_koumen' into dev
# Conflicts: # web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.javadahua_koumen
commit
04b4f3d1d5
|
|
@ -204,7 +204,7 @@ public class UserAddExe {
|
||||||
log.error("用户变更记录保存失败(不影响用户主体), userId: {}, error: {}", userE.getId(), e.getMessage(), e);
|
log.error("用户变更记录保存失败(不影响用户主体), userId: {}, error: {}", userE.getId(), e.getMessage(), e);
|
||||||
}
|
}
|
||||||
DaHuaSyncResult syncResult = syncDaHuaPerson(userE);
|
DaHuaSyncResult syncResult = syncDaHuaPerson(userE);
|
||||||
if (syncResult.dahuaId != null || (syncResult.dahuaCode != null && !syncResult.dahuaCode.trim().isEmpty())) {
|
if (syncResult.dahuaId != null) {
|
||||||
try {
|
try {
|
||||||
UserE updateDahua = new UserE();
|
UserE updateDahua = new UserE();
|
||||||
updateDahua.setId(userE.getId());
|
updateDahua.setId(userE.getId());
|
||||||
|
|
@ -214,10 +214,11 @@ public class UserAddExe {
|
||||||
log.info("写回dahuaId/dahuaCode成功, userId={}, dahuaId={}, dahuaCode={}",
|
log.info("写回dahuaId/dahuaCode成功, userId={}, dahuaId={}, dahuaCode={}",
|
||||||
userE.getId(), syncResult.dahuaId, syncResult.dahuaCode);
|
userE.getId(), syncResult.dahuaId, syncResult.dahuaCode);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("写回dahuaId/dahuaCode失败, userId={}, dahuaId={}, dahuaCode={}",
|
log.error("写回dahuaId/dahuaCode失败(不影响本地数据), userId={}, dahuaId={}, dahuaCode={}",
|
||||||
userE.getId(), syncResult.dahuaId, syncResult.dahuaCode, e);
|
userE.getId(), syncResult.dahuaId, syncResult.dahuaCode, e);
|
||||||
throw new BizException("写回大华信息到本地失败:" + e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
log.info("大华同步未返回dahuaId,跳过写回操作, userId={}, dahuaCode={}", userE.getId(), syncResult.dahuaCode);
|
||||||
}
|
}
|
||||||
} catch (BizException e) {
|
} catch (BizException e) {
|
||||||
log.error("新增用户业务异常: {}", e.getMessage(), e);
|
log.error("新增用户业务异常: {}", e.getMessage(), e);
|
||||||
|
|
@ -470,15 +471,11 @@ public class UserAddExe {
|
||||||
syncResp = zcloudDaHuaFacade.syncPerson(cmd);
|
syncResp = zcloudDaHuaFacade.syncPerson(cmd);
|
||||||
log.info("zcloudDaHuaFacade.syncPerson(cmd) 执行完成,已返回");
|
log.info("zcloudDaHuaFacade.syncPerson(cmd) 执行完成,已返回");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("========== Dubbo调用primeport.zcloudDaHuaFacade.syncPerson 发生异常 ==========", e);
|
log.error("========== Dubbo调用primeport.zcloudDaHuaFacade.syncPerson 发生异常(不影响本地数据保存) ==========", e);
|
||||||
log.error("异常类型: {}", e.getClass().getName());
|
log.error("异常类型: {}", e.getClass().getName());
|
||||||
log.error("异常信息: {}", e.getMessage());
|
log.error("异常信息: {}", e.getMessage());
|
||||||
if (throwOnFail) {
|
log.warn("同步大华平台Dubbo调用异常(不影响本地数据保存): {}", e.getMessage());
|
||||||
throw new BizException("同步大华平台失败,Dubbo调用异常:" + e.getMessage());
|
return result;
|
||||||
} else {
|
|
||||||
log.warn("同步大华平台Dubbo调用异常(不影响本地数据保存): {}", e.getMessage());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("========== Dubbo调用返回结果 ==========");
|
log.info("========== Dubbo调用返回结果 ==========");
|
||||||
|
|
@ -493,13 +490,9 @@ public class UserAddExe {
|
||||||
String errCode = syncResp == null ? "" : syncResp.getErrCode();
|
String errCode = syncResp == null ? "" : syncResp.getErrCode();
|
||||||
String errMessage = syncResp == null ? "大华Dubbo返回为空" : syncResp.getErrMessage();
|
String errMessage = syncResp == null ? "大华Dubbo返回为空" : syncResp.getErrMessage();
|
||||||
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员同步失败";
|
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员同步失败";
|
||||||
if (throwOnFail) {
|
log.warn("同步大华平台未成功(不影响本地数据保存): errCode={}, errMessage={}, userId={}, idCardMask={}",
|
||||||
throw new BizException("同步大华平台失败:" + errMessage);
|
errCode, errMessage, userE.getId(), maskedIdCard);
|
||||||
} else {
|
return result;
|
||||||
log.warn("同步大华平台未成功(重复信息或其他原因,不影响本地数据保存): errCode={}, errMessage={}, userId={}, idCardMask={}",
|
|
||||||
errCode, errMessage, userE.getId(), maskedIdCard);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Object data = syncResp.getData();
|
Object data = syncResp.getData();
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
|
|
|
||||||
|
|
@ -78,23 +78,26 @@ public class UserRemoveExe {
|
||||||
// ① 先本地逻辑删除(事务内,还未提交)
|
// ① 先本地逻辑删除(事务内,还未提交)
|
||||||
userGateway.deletedUserById(id);
|
userGateway.deletedUserById(id);
|
||||||
|
|
||||||
// ② 本地操作完成后再删大华。若大华失败 → throw BizException → 本地全部回滚
|
|
||||||
if (needDeleteDaHua) {
|
if (needDeleteDaHua) {
|
||||||
if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) {
|
if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) {
|
||||||
log.info("【单个删除-大华删除跳过】dockFlag未开启, userId={}", id);
|
log.info("【单个删除-大华删除跳过】dockFlag未开启, userId={}", id);
|
||||||
} else {
|
} else {
|
||||||
DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd();
|
try {
|
||||||
delCmd.setIds(Collections.singletonList(dahuaId.longValue()));
|
DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd();
|
||||||
SingleResponse<Boolean> delResp = zcloudDaHuaFacade.deletePerson(delCmd);
|
delCmd.setIds(Collections.singletonList(dahuaId.longValue()));
|
||||||
if (delResp == null || !delResp.isSuccess()) {
|
SingleResponse<Boolean> delResp = zcloudDaHuaFacade.deletePerson(delCmd);
|
||||||
String errCode = delResp == null ? "" : delResp.getErrCode();
|
if (delResp == null || !delResp.isSuccess()) {
|
||||||
String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage();
|
String errCode = delResp == null ? "" : delResp.getErrCode();
|
||||||
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败";
|
String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage();
|
||||||
log.error("【单个删除-大华删除失败→触发本地回滚】userId={}, dahuaId={}, errCode={}, errMessage={}",
|
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败";
|
||||||
id, dahuaId, errCode, errMessage);
|
log.warn("【单个删除-大华删除失败(不影响本地数据)】userId={}, dahuaId={}, errCode={}, errMessage={}",
|
||||||
throw new BizException("删除大华平台人员失败:" + errMessage);
|
id, dahuaId, errCode, errMessage);
|
||||||
|
} else {
|
||||||
|
log.info("【单个删除-大华删除成功】userId={}, dahuaId={}", id, dahuaId);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("【单个删除-大华删除异常(不影响本地数据)】userId={}, dahuaId={}", id, dahuaId, e);
|
||||||
}
|
}
|
||||||
log.info("【单个删除-大华删除成功】userId={}, dahuaId={}", id, dahuaId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (BizException e) {
|
} catch (BizException e) {
|
||||||
|
|
@ -215,23 +218,26 @@ public class UserRemoveExe {
|
||||||
throw new BizException("本地批量删除用户失败");
|
throw new BizException("本地批量删除用户失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ② 本地成功后再删大华。大华失败→throw→本地回滚
|
|
||||||
if (!dahuaIds.isEmpty()) {
|
if (!dahuaIds.isEmpty()) {
|
||||||
if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) {
|
if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) {
|
||||||
log.info("【批量删除-大华删除跳过】dockFlag未开启, idList={}", idList);
|
log.info("【批量删除-大华删除跳过】dockFlag未开启, idList={}", idList);
|
||||||
} else {
|
} else {
|
||||||
DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd();
|
try {
|
||||||
delCmd.setIds(dahuaIds.stream().map(Integer::longValue).collect(Collectors.toList()));
|
DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd();
|
||||||
SingleResponse<Boolean> delResp = zcloudDaHuaFacade.deletePerson(delCmd);
|
delCmd.setIds(dahuaIds.stream().map(Integer::longValue).collect(Collectors.toList()));
|
||||||
if (delResp == null || !delResp.isSuccess()) {
|
SingleResponse<Boolean> delResp = zcloudDaHuaFacade.deletePerson(delCmd);
|
||||||
String errCode = delResp == null ? "" : delResp.getErrCode();
|
if (delResp == null || !delResp.isSuccess()) {
|
||||||
String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage();
|
String errCode = delResp == null ? "" : delResp.getErrCode();
|
||||||
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败";
|
String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage();
|
||||||
log.error("【批量删除-大华删除失败→触发本地回滚】localIds={}, dahuaIds={}, errCode={}, errMessage={}",
|
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败";
|
||||||
idList, dahuaIds, errCode, errMessage);
|
log.warn("【批量删除-大华删除失败(不影响本地数据)】localIds={}, dahuaIds={}, errCode={}, errMessage={}",
|
||||||
throw new BizException("删除大华平台人员失败:" + errMessage);
|
idList, dahuaIds, errCode, errMessage);
|
||||||
|
} else {
|
||||||
|
log.info("【批量删除-大华删除成功】dahuaIds={}", dahuaIds);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("【批量删除-大华删除异常(不影响本地数据)】localIds={}, dahuaIds={}", idList, dahuaIds, e);
|
||||||
}
|
}
|
||||||
log.info("【批量删除-大华删除成功】dahuaIds={}", dahuaIds);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -474,15 +474,19 @@ public class UserUpdateExe {
|
||||||
if (cmd.getPersonBiosignatures() != null) {
|
if (cmd.getPersonBiosignatures() != null) {
|
||||||
log.info("Dubbo调用携带人脸生物特征, size={}", cmd.getPersonBiosignatures().size());
|
log.info("Dubbo调用携带人脸生物特征, size={}", cmd.getPersonBiosignatures().size());
|
||||||
}
|
}
|
||||||
SingleResponse<Boolean> updateResp = zcloudDaHuaFacade.updatePerson(cmd);
|
try {
|
||||||
if (updateResp == null || !updateResp.isSuccess()) {
|
SingleResponse<Boolean> updateResp = zcloudDaHuaFacade.updatePerson(cmd);
|
||||||
String errCode = updateResp == null ? "" : updateResp.getErrCode();
|
if (updateResp == null || !updateResp.isSuccess()) {
|
||||||
String errMessage = updateResp == null ? "大华Dubbo返回为空" : updateResp.getErrMessage();
|
String errCode = updateResp == null ? "" : updateResp.getErrCode();
|
||||||
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员更新失败";
|
String errMessage = updateResp == null ? "大华Dubbo返回为空" : updateResp.getErrMessage();
|
||||||
log.error("同步大华人员(更新)失败, errCode={}, errMessage={}, name={}, idCard={}", errCode, errMessage, newName, maskedIdCard);
|
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员更新失败";
|
||||||
throw new BizException("同步大华平台失败:" + errMessage);
|
log.warn("同步大华人员(更新)失败(不影响本地数据), errCode={}, errMessage={}, name={}, idCard={}", errCode, errMessage, newName, maskedIdCard);
|
||||||
|
} else {
|
||||||
|
log.info("同步大华人员(更新)成功, name={}, idCard={}", newName, maskedIdCard);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("同步大华人员(更新)异常(不影响本地数据), name={}, idCard={}", newName, maskedIdCard, e);
|
||||||
}
|
}
|
||||||
log.info("同步大华人员(更新)成功, name={}, idCard={}", newName, maskedIdCard);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
|
@ -772,18 +776,22 @@ public class UserUpdateExe {
|
||||||
if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) {
|
if (daHuaConfig.getDockFlag() == null || daHuaConfig.getDockFlag() != 1) {
|
||||||
log.info("【离职-大华删除跳过】dockFlag未开启, userId={}", userDO.getId());
|
log.info("【离职-大华删除跳过】dockFlag未开启, userId={}", userDO.getId());
|
||||||
} else {
|
} else {
|
||||||
DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd();
|
try {
|
||||||
delCmd.setIds(Collections.singletonList(dahuaId.longValue()));
|
DaHuaPersonDeleteCmd delCmd = new DaHuaPersonDeleteCmd();
|
||||||
SingleResponse<Boolean> delResp = zcloudDaHuaFacade.deletePerson(delCmd);
|
delCmd.setIds(Collections.singletonList(dahuaId.longValue()));
|
||||||
if (delResp == null || !delResp.isSuccess()) {
|
SingleResponse<Boolean> delResp = zcloudDaHuaFacade.deletePerson(delCmd);
|
||||||
String errCode = delResp == null ? "" : delResp.getErrCode();
|
if (delResp == null || !delResp.isSuccess()) {
|
||||||
String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage();
|
String errCode = delResp == null ? "" : delResp.getErrCode();
|
||||||
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败";
|
String errMessage = delResp == null ? "大华Dubbo返回为空" : delResp.getErrMessage();
|
||||||
log.error("【离职-大华删除失败→触发本地回滚】userId={}, dahuaId={}, errCode={}, errMessage={}",
|
if (errMessage == null || errMessage.trim().isEmpty()) errMessage = "大华人员删除失败";
|
||||||
userDO.getId(), dahuaId, errCode, errMessage);
|
log.warn("【离职-大华删除失败(不影响本地数据)】userId={}, dahuaId={}, errCode={}, errMessage={}",
|
||||||
throw new BizException("同步大华平台删除离职人员失败:" + errMessage);
|
userDO.getId(), dahuaId, errCode, errMessage);
|
||||||
|
} else {
|
||||||
|
log.info("【离职-大华删除成功】userId={}, dahuaId={}", userDO.getId(), dahuaId);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("【离职-大华删除异常(不影响本地数据)】userId={}, dahuaId={}", userDO.getId(), dahuaId, e);
|
||||||
}
|
}
|
||||||
log.info("【离职-大华删除成功】userId={}, dahuaId={}", userDO.getId(), dahuaId);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.info("【离职-跳过同步大华】用户dahuaId为空,未同步过大华平台, userId={}, name={}", userDO.getId(), userDO.getName());
|
log.info("【离职-跳过同步大华】用户dahuaId为空,未同步过大华平台, userId={}, name={}", userDO.getId(), userDO.getName());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue