人脸报错

This commit is contained in:
zt
2025-10-29 16:31:04 +08:00
parent 53208c36cf
commit 3c01ec861b
3 changed files with 96 additions and 3 deletions

View File

@ -0,0 +1,93 @@
package org.dromara.common.utils;
import java.util.HashMap;
import java.util.Map;
/**
* 接口错误码匹配工具(用户展示用)
*/
public class ErrorCodeMatcher {
private static final Map<String, String> ERROR_MAP = new HashMap<>();
static {
// 基础错误码
ERROR_MAP.put("1", "抱歉,出现未知错误,请您重试。若问题持续,请联系管理员。");
ERROR_MAP.put("2", "服务暂时不可用,请稍后重试。若多次尝试仍有问题,请联系管理员。");
ERROR_MAP.put("3", "调用的接口不存在,请检查请求地址是否正确(建议避免特殊字符,如手动输入重试)。");
ERROR_MAP.put("4", "当前集群请求量超限,请稍后再试。持续异常请联系管理员。");
ERROR_MAP.put("6", "暂无该接口调用权限,请联系管理员开通相关权限。");
ERROR_MAP.put("14", "鉴权失败,请检查密钥是否正确,或联系管理员协助处理。");
ERROR_MAP.put("17", "今日免费额度已用完。如需继续使用,请联系管理员获取更多资源。");
ERROR_MAP.put("18", "请求频率超限QPS限制。如需提高限制请联系管理员咨询。");
ERROR_MAP.put("19", "总请求量已达限额,请联系管理员获取更多资源。");
ERROR_MAP.put("100", "访问令牌无效,请联系管理员重新获取。");
ERROR_MAP.put("110", "访问令牌无效有效期30天请联系管理员更新。");
ERROR_MAP.put("111", "访问令牌已过期,请联系管理员重新获取。");
// 216xxx系列错误码
ERROR_MAP.put("216100", "请求中包含无效参数,请检查后重新提交。");
ERROR_MAP.put("216101", "缺少必要的请求参数,请核对后补充完整。");
ERROR_MAP.put("216102", "请求的服务暂不支持,请检查调用地址是否正确,或联系管理员确认。");
ERROR_MAP.put("216103", "部分参数长度超限,请缩短后重新尝试。");
ERROR_MAP.put("216110", "应用ID不存在请核对是否为正确ID或联系管理员确认。");
ERROR_MAP.put("216200", "上传的图片为空,请检查图片是否正确上传。");
ERROR_MAP.put("216201", "图片格式不支持目前仅支持PNG、JPG、JPEG、BMP格式请转码后重试。");
ERROR_MAP.put("216202", "图片大小不符合要求,请参考接口文档的限制重新上传,或联系管理员咨询。");
ERROR_MAP.put("216205", "请求体过大base64编码后需小于10M请压缩内容后重试。");
ERROR_MAP.put("216306", "文件上传失败,请检查请求参数是否符合要求。");
ERROR_MAP.put("216307", "图片解析失败,若多次尝试仍有问题,请联系管理员。");
ERROR_MAP.put("216308", "PDF页码参数超过实际页数请核对后修改。");
ERROR_MAP.put("216401", "请求提交失败,请稍后重试。");
ERROR_MAP.put("216402", "获取结果失败,请稍后重试或检查任务状态。");
ERROR_MAP.put("216603", "无法获取PDF页数请检查文件是否完整或编码是否正确。");
ERROR_MAP.put("216604", "请求总量已达限额,请联系管理员获取更多额度。");
ERROR_MAP.put("216630", "识别失败,请重试。若问题持续,请联系管理员。");
ERROR_MAP.put("216631", "银行卡识别失败,请确保上传的是银行卡正面完整清晰的图片(异形卡可能无法识别)。");
ERROR_MAP.put("216633", "身份证识别失败,请确保上传的是身份证完整清晰的图片(非身份证或模糊图片无法识别)。");
ERROR_MAP.put("216634", "检测失败,请重试。若持续异常,请联系管理员。");
ERROR_MAP.put("216600", "企业核验服务请求失败,请重试。持续问题请联系管理员(适用于工商信息查询、要素核验等)。");
ERROR_MAP.put("216601", "企业核验查询成功,但未找到相关结果,请确认信息是否正确后重试。");
ERROR_MAP.put("216602", "企业核验服务超时,请稍后重试。持续问题请联系管理员。");
// 282xxx系列错误码
ERROR_MAP.put("282000", "服务器内部错误。若使用通用文字识别,可能因图片文字过多导致超时,建议分割图片后重试;其他情况可稍后再试,持续问题请联系管理员。");
ERROR_MAP.put("282003", "请求缺少必要参数,请核对后补充。");
ERROR_MAP.put("282005", "批量任务处理出错,请根据具体错误提示排查。");
ERROR_MAP.put("282006", "批量任务数量超限单次最多处理10个任务请减少数量后重试。");
ERROR_MAP.put("282100", "图片压缩转码失败,请更换图片后重试。");
ERROR_MAP.put("282102", "未检测到可识别的卡证/票据,请确保图片包含清晰完整的目标(非卡证或模糊图片无法识别)。");
ERROR_MAP.put("282103", "卡证/票据识别失败,请确保图片包含清晰完整的目标(非对应类型或模糊图片无法识别)。");
ERROR_MAP.put("282110", "图片URL不存在请核对地址后重新提交。");
ERROR_MAP.put("282111", "图片URL格式错误请检查是否符合接口要求的格式。");
ERROR_MAP.put("282112", "图片URL下载超时可能因图片过大超过3M、地址无效或存在防盗链。建议更换图片地址或下载后直接上传。");
ERROR_MAP.put("282113", "图片URL返回无效内容请检查地址是否正确。");
ERROR_MAP.put("282114", "图片URL长度不符合要求需1-1024字节请修改后重试。");
ERROR_MAP.put("282134", "增值税发票验真失败,可能因系统维护,建议次日再试。持续问题请联系管理员。");
ERROR_MAP.put("282808", "请求ID不存在请核对ID是否正确。");
ERROR_MAP.put("282809", "返回结果格式错误需为excel或json请稍后重试。");
ERROR_MAP.put("282810", "图像识别失败,请重试。若问题持续,请联系管理员。");
ERROR_MAP.put("282160", "行驶证核验资源超限,请联系管理员咨询。");
ERROR_MAP.put("282161", "行驶证核验请求过于频繁,请稍后再试。");
}
/**
* 根据错误码获取用户友好的错误信息
* @param errorCode 错误码(字符串/整数)
* @return 优化后的错误提示,未匹配时返回"未知错误错误码xxx"
*/
public static String getFriendlyMessage(String errorCode) {
return ERROR_MAP.getOrDefault(errorCode, "未知错误(错误码:" + errorCode + "),请重试或联系管理员。");
}
public static String getFriendlyMessage(int errorCode) {
return getFriendlyMessage(String.valueOf(errorCode));
}
// 测试示例
public static void main(String[] args) {
System.out.println(getFriendlyMessage(1)); // 输出:抱歉,出现未知错误,请您重试...
System.out.println(getFriendlyMessage("216201")); // 输出图片格式不支持目前仅支持PNG...
System.out.println(getFriendlyMessage(9999)); // 输出未知错误错误码9999...
}
}

View File

@ -3,6 +3,7 @@ package org.dromara.common.utils.baiduUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.utils.ErrorCodeMatcher;
import org.dromara.common.utils.baiduUtil.entity.face.ComparisonRes;
import org.dromara.common.utils.baiduUtil.entity.face.HumanFaceReq;
import org.dromara.common.utils.baiduUtil.entity.face.HumanFaceRes;
@ -208,8 +209,7 @@ public class BaiDuFace {
// 8. 处理API返回错误
if (comparisonRep.getErrorCode() != 0) {
throw new RuntimeException("人脸对比失败:" + comparisonRep.getErrorMsg()
+ "(错误码:" + comparisonRep.getErrorCode() + "");
throw new RuntimeException("人脸对比失败:" + ErrorCodeMatcher.getFriendlyMessage(comparisonRep.getErrorCode()));
}
// 9. 校验对比结果

View File

@ -361,7 +361,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
try {
result = constructionUserService.faceComparison(file, userId);
} catch (Exception e) {
throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.ERROR);
throw new ServiceException(e.getMessage(), HttpStatus.ERROR);
}
if (!result) {