diff --git a/api-mapper/src/main/java/com/heyu/api/data/enums/BankCardTypeEnums.java b/api-mapper/src/main/java/com/heyu/api/data/enums/BankCardTypeEnums.java new file mode 100644 index 0000000..6b2198a --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/enums/BankCardTypeEnums.java @@ -0,0 +1,76 @@ +package com.heyu.api.data.enums; + +public enum BankCardTypeEnums { + + + _C("", "0", "", "0", "不能识别"), + + _C1("", "1", "", "1", "借记卡"), + + + CC("CC", "2", "", "2", "贷记卡"), + + SCC("SCC", "3", "", "3", "准贷记卡"), + + PC("PC", "4", "", "4", "预付卡"), + + DCC("DCC", "", "", "5", "存贷合一卡"), + + DC("DC", "", "", "6", "储蓄卡"), + ; + + + private String alibaba; + + private String baidu; + + private String tencent; + + private String result; + + + private String desc; + + + BankCardTypeEnums(String alibaba, String baidu, String tencent, String result, String desc) { + this.alibaba = alibaba; + this.baidu = baidu; + this.tencent = tencent; + this.result = result; + this.desc = desc; + } + + + + public static BankCardTypeEnums getBaidu(String key ) { + + for (BankCardTypeEnums bankCardTypeEnums : BankCardTypeEnums.values()) { + if(bankCardTypeEnums.baidu.equals(key)) { + return bankCardTypeEnums; + } + } + return BankCardTypeEnums._C; + } + + + public static BankCardTypeEnums getAlibbaba(String key ) { + for (BankCardTypeEnums bankCardTypeEnums : BankCardTypeEnums.values()) { + if(bankCardTypeEnums.alibaba.equals(key)) { + return bankCardTypeEnums; + } + } + return BankCardTypeEnums._C; + } + + + + public String getResult() { + return result; + } + + + public String getDesc() { + return desc; + } + +} diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/MapUtils.java b/api-mapper/src/main/java/com/heyu/api/data/utils/MapUtils.java index 600dd56..453cb70 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/utils/MapUtils.java +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/MapUtils.java @@ -1,51 +1,60 @@ package com.heyu.api.data.utils; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.Map; + +@Slf4j public class MapUtils { public static T getByExpr(Map map, String expression) { - String expressions[] = expression.split("\\."); Object value = null; - for (int i = 0; i < expressions.length; i++) { - String expr = expressions[i]; - if (expr.startsWith("[")) { - if (value != null) { - Integer exprVal = NumberUtil.objToIntDefault(expr.substring(1, expr.length() - 1), -1); - if(exprVal == -1){ - return null; - } + try { + String expressions[] = expression.split("\\."); + value = null; + for (int i = 0; i < expressions.length; i++) { + String expr = expressions[i]; + if (expr.startsWith("[")) { + if (value != null) { + Integer exprVal = NumberUtil.objToIntDefault(expr.substring(1, expr.length() - 1), -1); + if (exprVal == -1) { + return null; + } - List list = JSONObject.parseArray(value.toString(), Object.class); - if (list.size() < exprVal || list.get(exprVal) == null) { - return null; - } + List list = JSONObject.parseArray(value.toString(), Object.class); + if (list.size() < exprVal || list.get(exprVal) == null) { + return null; + } + if (i < expressions.length - 1) { + map = JSONObject.parseObject(list.get(exprVal).toString(), Map.class); + } else { + value = list.get(exprVal); + } + + } + } + Object object = map.get(expr); + if (object != null) { if (i < expressions.length - 1) { - map = JSONObject.parseObject(list.get(exprVal).toString(), Map.class); + if (expressions[i + 1].contains("[")) { + value = object; + } else { + map = JSONObject.parseObject(object.toString(), Map.class); + } } else { - value = list.get(exprVal); - } - - } - } - Object object = map.get(expr); - if (object != null) { - if (i < expressions.length - 1) { - if (expressions[i + 1].contains("[")) { value = object; - } else { - map = JSONObject.parseObject(object.toString(), Map.class); } - } else { - value = object; } - } + } + } catch (Exception e) { + log.error("getByExpr error map:" + JSON.toJSONString(map) + ",expression:" + expression, e); } @@ -94,5 +103,10 @@ public class MapUtils { Map data = JSONObject.parseObject(a, Map.class); System.out.println(getByExpr(data, "words_result.账号.word.[0]")); + System.out.println(getByExpr(data, "words_result.公司名称.word.[0]")); + System.out.println(getByExpr(data, "words_result.核准号.word.[0]")); + System.out.println(getByExpr(data, "words_result.法人.word.[0]")); + System.out.println(getByExpr(data, "words_result.编号.word.[0]")); + System.out.println(getByExpr(data, "words_result.开户银行.word.[0]")); } } diff --git a/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BAccountOpeningResp.java b/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BAccountOpeningResp.java index e2cb1d6..d9380b4 100644 --- a/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BAccountOpeningResp.java +++ b/api-third/src/main/java/com/heyu/api/baidu/response/certificate/BAccountOpeningResp.java @@ -47,4 +47,11 @@ import lombok.Data; */ @Data public class BAccountOpeningResp { + + + + + + + } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCardRecognizeController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCardRecognizeController.java index 0fa4005..de6abf2 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCardRecognizeController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/bankcard/BankCardRecognizeController.java @@ -5,12 +5,16 @@ import com.aliyun.ocr20191230.models.RecognizeBankCardResponse; import com.aliyun.ocr20191230.models.RecognizeBankCardResponseBody; import com.heyu.api.alibaba.handle.common.text.ARecognizeBankCardHandle; import com.heyu.api.alibaba.request.common.text.ARecognizeBankCardRequest; +import com.heyu.api.baidu.handle.certificate.BBankcardHandle; +import com.heyu.api.baidu.request.certificate.BBankcardRequest; +import com.heyu.api.baidu.response.certificate.BBankcardResp; import com.heyu.api.controller.BaseController; -import com.heyu.api.resp.certificate.BankCardRecognizeResp; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.enums.BankCardTypeEnums; import com.heyu.api.data.utils.ApiR; import com.heyu.api.data.utils.R; +import com.heyu.api.resp.certificate.BankCardRecognizeResp; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -38,13 +42,37 @@ public class BankCardRecognizeController extends BaseController { private ARecognizeBankCardHandle recognizeBankCardHandle; + @Autowired + private BBankcardHandle bBankcardHandle; + public final static Map resultDesc = new HashMap<>(); @RequestMapping("/recognize") @CacheResult public R recognize(ARecognizeBankCardRequest commonTextRequest) { + BBankcardRequest bBankcardRequest = new BBankcardRequest(); + bBankcardRequest.setImageUrl(commonTextRequest.getImageUrl()); + bBankcardRequest.setImageBase64(commonTextRequest.getImageBase64()); BankCardRecognizeResp bankCardRecognizeResp = new BankCardRecognizeResp(); + + ApiR bR = bBankcardHandle.handle(bBankcardRequest); + if (bR.isSuccess()) { + BBankcardResp bBankcardResp = bR.getData(); + if (bBankcardResp.getResult() != null) { + BBankcardResp.ResultDTO resultDTO = bBankcardResp.getResult(); + bankCardRecognizeResp.setBankCardNumber(resultDTO.getBankCardNumber()); + bankCardRecognizeResp.setBankName(resultDTO.getBankName()); + bankCardRecognizeResp.setValidDate(resultDTO.getValidDate()); + bankCardRecognizeResp.setHolderName(resultDTO.getHolderName()); + BankCardTypeEnums bankCardTypeEnums = BankCardTypeEnums.getBaidu(resultDTO.getBankCardType() + ""); + + bankCardRecognizeResp.setBankCardType(bankCardTypeEnums.getResult()); + bankCardRecognizeResp.setBankCardTypeDesc(bankCardTypeEnums.getDesc()); + return R.ok().setData(bankCardRecognizeResp); + } + } + ApiR aR = recognizeBankCardHandle.handle(commonTextRequest); if (aR.isSuccess()) { RecognizeBankCardResponse response = aR.getData(); @@ -54,20 +82,16 @@ public class BankCardRecognizeController extends BaseController { bankCardRecognizeResp.setBankCardNumber(recognizeBankCardResponseBodyData.getCardNumber()); bankCardRecognizeResp.setBankName(recognizeBankCardResponseBodyData.getBankName()); bankCardRecognizeResp.setValidDate(recognizeBankCardResponseBodyData.getValidDate()); - bankCardRecognizeResp.setBankCardType(recognizeBankCardResponseBodyData.getCardType()); - bankCardRecognizeResp.setBankCardTypeDesc(resultDesc.get(recognizeBankCardResponseBodyData.getCardType())); + + BankCardTypeEnums bankCardTypeEnums = BankCardTypeEnums.getBaidu(recognizeBankCardResponseBodyData.getCardType() + ""); + + bankCardRecognizeResp.setBankCardType(bankCardTypeEnums.getResult()); + bankCardRecognizeResp.setBankCardTypeDesc(bankCardTypeEnums.getDesc()); return R.ok().setData(bankCardRecognizeResp); } } - return R.ok(aR.getErrorMsg()); - } - static { - resultDesc.put("CC", "贷记卡"); - resultDesc.put("SCC", "准贷记卡"); - resultDesc.put("DCC", "存贷合一卡"); - resultDesc.put("DC", "储蓄卡"); - resultDesc.put("PC", "预付卡"); + return R.ok(aR.getErrorMsg()); } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/card/BusinessLicenseRecognizeController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/card/BusinessLicenseRecognizeController.java index c39974d..ddc3401 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/card/BusinessLicenseRecognizeController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/card/BusinessLicenseRecognizeController.java @@ -43,10 +43,6 @@ public class BusinessLicenseRecognizeController extends BaseController { - - - - @RequestMapping("/recognize") @CacheResult public R recognize(BusinessLicenseRecognizeRequest request) { diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/AccountOpeningController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/AccountOpeningController.java index 1a4a282..524b721 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/AccountOpeningController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/AccountOpeningController.java @@ -6,7 +6,9 @@ import com.heyu.api.baidu.request.certificate.BAccountOpeningRequest; import com.heyu.api.data.annotation.CacheResult; import com.heyu.api.data.annotation.NotIntercept; import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.MapUtils; import com.heyu.api.data.utils.R; +import com.heyu.api.resp.certificate.AccountOpeningResp; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,6 +16,15 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740322721909#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Faccount_opening&method=post + *

+ *

+ * 开户许可证识别 + */ + + @Slf4j @RestController @RequestMapping("/account") @@ -28,17 +39,18 @@ public class AccountOpeningController { @RequestMapping("/opening") @CacheResult public R recognize(BAccountOpeningRequest request) { - + AccountOpeningResp accountOpeningResp = new AccountOpeningResp(); ApiR bR = bAccountOpeningHandle.handle(request); - if (bR.isSuccess()) { Map data = bR.getData(); - - - + accountOpeningResp.setAccount(MapUtils.getByExpr(data, "words_result.账号.word.[0]")); + accountOpeningResp.setCompanyName(MapUtils.getByExpr(data, "words_result.公司名称.word.[0]")); + accountOpeningResp.setCheckNumber(MapUtils.getByExpr(data, "words_result.核准号.word.[0]")); + accountOpeningResp.setLegalPerson(MapUtils.getByExpr(data, "words_result.法人.word.[0]")); + accountOpeningResp.setSerialNumber(MapUtils.getByExpr(data, "words_result.编号.word.[0]")); + accountOpeningResp.setOpenAccountBank(MapUtils.getByExpr(data, "words_result.开户银行.word.[0]")); + return R.ok().setData(accountOpeningResp); } - - return R.error(); } } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BankCardRecognizeResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BankCardRecognizeResp.java index ffe791b..eb9d4c9 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BankCardRecognizeResp.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BankCardRecognizeResp.java @@ -48,6 +48,13 @@ public class BankCardRecognizeResp extends BaseResp { private String bankCardType; + + private String bankCardTypeDesc; + + /*** + * 持卡人姓名,不能识别时为空 + */ + private String holderName; }