提交修改

This commit is contained in:
quyixiao 2025-03-21 19:35:29 +08:00
parent a634e63ae3
commit 2fe680f3d1
7 changed files with 186 additions and 50 deletions

View File

@ -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;
}
}

View File

@ -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> T getByExpr(Map<String, Object> 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<Object> list = JSONObject.parseArray(value.toString(), Object.class);
if (list.size() < exprVal || list.get(exprVal) == null) {
return null;
}
List<Object> 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]"));
}
}

View File

@ -47,4 +47,11 @@ import lombok.Data;
*/
@Data
public class BAccountOpeningResp {
}

View File

@ -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<String, String> 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<BBankcardResp> 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<RecognizeBankCardResponse> 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());
}

View File

@ -43,10 +43,6 @@ public class BusinessLicenseRecognizeController extends BaseController {
@RequestMapping("/recognize")
@CacheResult
public R recognize(BusinessLicenseRecognizeRequest request) {

View File

@ -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&timestamp=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
* <p>
* <p>
* 开户许可证识别
*/
@Slf4j
@RestController
@RequestMapping("/account")
@ -28,17 +39,18 @@ public class AccountOpeningController {
@RequestMapping("/opening")
@CacheResult
public R recognize(BAccountOpeningRequest request) {
AccountOpeningResp accountOpeningResp = new AccountOpeningResp();
ApiR<Map> bR = bAccountOpeningHandle.handle(request);
if (bR.isSuccess()) {
Map<String, Object> 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();
}
}

View File

@ -48,6 +48,13 @@ public class BankCardRecognizeResp extends BaseResp {
private String bankCardType;
private String bankCardTypeDesc;
/***
* 持卡人姓名不能识别时为空
*/
private String holderName;
}