ocr 调试,todo

This commit is contained in:
Jack 2025-05-08 11:50:39 +08:00
parent d46541b90a
commit 2407520ca5
5 changed files with 105 additions and 35 deletions

View File

@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.tika.Tika; import org.apache.tika.Tika;
import org.springframework.util.Base64Utils; import org.springframework.util.Base64Utils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -30,7 +31,7 @@ public class UploadUtil {
); );
public static void main(String[] args) { public static void main(String[] args) {
String base64 = URLFileToBase64("http://gips3.baidu.com/it/u=1022347589,1106887837&fm=3028&app=3028&f=JPEG&fmt=auto?w=960&h=1280"); String base64 = fileUrlToBase64("http://gips3.baidu.com/it/u=1022347589,1106887837&fm=3028&app=3028&f=JPEG&fmt=auto?w=960&h=1280");
System.out.println(base64); System.out.println(base64);
} }
@ -281,25 +282,46 @@ public class UploadUtil {
* @param fileUrl * @param fileUrl
* @return * @return
*/ */
public static String URLFileToBase64(String fileUrl) { public static String fileUrlToBase64(String fileUrl) {
try { try {
URL url = new URL(fileUrl); URL url = new URL(fileUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET"); connection.setRequestMethod("GET");
try (InputStream inputStream = connection.getInputStream()) { int responseCode = connection.getResponseCode();
byte[] buffer = new byte[inputStream.available()]; if (responseCode == HttpURLConnection.HTTP_OK) {
inputStream.read(buffer); InputStream inputStream = connection.getInputStream();
return Base64Utils.encodeToString(buffer); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
} finally { byte[] buffer = new byte[4096];
connection.disconnect(); int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
byte[] imageBytes = outputStream.toByteArray();
inputStream.close();
outputStream.close();
return Base64Utils.encodeToString(imageBytes);
} }
} catch (MalformedURLException e) {
log.error("输入的 URL 格式不正确: {}", e.getMessage());
} catch (IOException e) { } catch (IOException e) {
log.error("在连接或读取文件时发生 I/O 错误: {}", e.getMessage()); // 可以在这里添加日志记录方便调试这里简单打印异常信息
} catch (Exception e) { log.error("处理图片 URL 时出现 IOException: ", e.getMessage());
log.error("发生未知异常: {}", e.getMessage()); }
return null;
}
/**
* 将MultipartFile 图片转换为Base64字符串
*
* @param multipartFile
* @return
*/
public static String multipartFileToBase64(MultipartFile multipartFile) {
try {
return Base64Utils.encodeToString(multipartFile.getBytes());
} catch (IOException e) {
// 可以在这里添加日志记录方便调试这里简单打印异常信息
log.error("处理图片 URL 时出现 IOException: ", e.getMessage());
} }
return null; return null;
} }

View File

@ -294,21 +294,21 @@ public class EsignContractServiceImpl extends BaseServiceImpl<EsignContractMappe
if (success && StrUtil.isNotBlank(downloadUrl)) { if (success && StrUtil.isNotBlank(downloadUrl)) {
taskService.executeTask(() -> { // taskService.executeTask(() -> {
// 1电子合同给商家申请分账功能2商家绑定接收方 // 1电子合同给商家申请分账功能2商家绑定接收方
// 新建一个正式的已审核通过的店铺 // 新建一个正式的已审核通过的店铺
Pair<Integer, String> retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(esignContract.getMch_mobile()); // Pair<Integer, String> retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(esignContract.getMch_mobile());
if (retPair.getFirst() > 0) { // if (retPair.getFirst() > 0) {
// 更改合同记录表的店铺id // // 更改合同记录表的店铺id
updateContractStoreId(esignContract.getMch_mobile(), retPair.getFirst()); // updateContractStoreId(esignContract.getMch_mobile(), retPair.getFirst());
// 填充合同模版表的店铺Id // // 填充合同模版表的店铺Id
esignContractFillingFileService.updateContractFillingStoreId(esignContract.getMch_mobile(), retPair.getFirst()); // esignContractFillingFileService.updateContractFillingStoreId(esignContract.getMch_mobile(), retPair.getFirst());
// 店铺创建状态已完成 // // 店铺创建状态已完成
shopMchEntryService.updateMerchEntryStoreStatus(esignContract.getMch_mobile(), CommonConstant.Enable); // shopMchEntryService.updateMerchEntryStoreStatus(esignContract.getMch_mobile(), CommonConstant.Enable);
} // }
}); // });
return new ResponseEntity<>(new JSONObject().put("code", 200).put("msg", "success").toString(), HttpStatus.OK); return new ResponseEntity<>(new JSONObject().put("code", 200).put("msg", "success").toString(), HttpStatus.OK);
} }

View File

@ -26,21 +26,28 @@ import com.suisung.mall.common.feignService.ShopService;
import com.suisung.mall.common.modules.lakala.LklLedgerMember; import com.suisung.mall.common.modules.lakala.LklLedgerMember;
import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind; import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind;
import com.suisung.mall.common.modules.lakala.LklLedgerReceiver; import com.suisung.mall.common.modules.lakala.LklLedgerReceiver;
import com.suisung.mall.common.modules.store.ShopMchEntry;
import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.store.ShopStoreBase;
import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.common.utils.StringUtils; import com.suisung.mall.common.utils.StringUtils;
import com.suisung.mall.common.utils.UploadUtil; import com.suisung.mall.common.utils.UploadUtil;
import com.suisung.mall.shop.esign.service.EsignContractFillingFileService;
import com.suisung.mall.shop.esign.service.EsignContractService;
import com.suisung.mall.shop.lakala.service.LakalaApiService; import com.suisung.mall.shop.lakala.service.LakalaApiService;
import com.suisung.mall.shop.lakala.service.LklLedgerMemberService; import com.suisung.mall.shop.lakala.service.LklLedgerMemberService;
import com.suisung.mall.shop.lakala.service.LklLedgerMerReceiverBindService; import com.suisung.mall.shop.lakala.service.LklLedgerMerReceiverBindService;
import com.suisung.mall.shop.lakala.service.LklLedgerReceiverService; import com.suisung.mall.shop.lakala.service.LklLedgerReceiverService;
import com.suisung.mall.shop.lakala.utils.LakalaUtil; import com.suisung.mall.shop.lakala.utils.LakalaUtil;
import com.suisung.mall.shop.store.service.ShopMchEntryService;
import com.suisung.mall.shop.store.service.ShopStoreBaseService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.data.util.Pair;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -92,6 +99,24 @@ public class LakalaApiServiceImpl implements LakalaApiService {
@Autowired @Autowired
private LklLedgerMerReceiverBindService lklLedgerMerReceiverBindService; private LklLedgerMerReceiverBindService lklLedgerMerReceiverBindService;
@Lazy
@Resource
private ShopMchEntryService shopMchEntryService;
@Lazy
@Resource
private
EsignContractService esignContractService;
@Lazy
@Resource
private EsignContractFillingFileService esignContractFillingFileService;
@Lazy
@Resource
private ShopStoreBaseService shopStoreBaseService;
/** /**
* 初始化 拉卡拉SDK * 初始化 拉卡拉SDK
* *
@ -447,7 +472,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
req.setSplitEntrustFileName(fileName); req.setSplitEntrustFileName(fileName);
// 分账结算委托书文件上传到拉卡拉服务器 // 分账结算委托书文件上传到拉卡拉服务器
JSONObject fileUploadResp = uploadFile(req.getOrderNo(), "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), UploadUtil.URLFileToBase64(paramsJSON.getStr("splitEntrustFile"))); JSONObject fileUploadResp = uploadFile(req.getOrderNo(), "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), UploadUtil.fileUrlToBase64(paramsJSON.getStr("splitEntrustFile")));
if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) { if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
throw new ApiException(I18nUtil._("分账结算委托书上传失败!")); throw new ApiException(I18nUtil._("分账结算委托书上传失败!"));
} }
@ -617,7 +642,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
for (JSONObject attachJSON : paramsJSON.getJSONArray("attachList").jsonIter()) { for (JSONObject attachJSON : paramsJSON.getJSONArray("attachList").jsonIter()) {
String fileName = attachJSON.getStr("attachName"); String fileName = attachJSON.getStr("attachName");
String attachType = attachJSON.getStr("attachType"); String attachType = attachJSON.getStr("attachType");
String fileBase64 = UploadUtil.URLFileToBase64(attachJSON.getStr("attachStoreFile")); // 这个是 url 地址不是 base64 字节码 String fileBase64 = UploadUtil.fileUrlToBase64(attachJSON.getStr("attachStoreFile")); // 这个是 url 地址不是 base64 字节码
attachInfo.setAttachName(fileName); attachInfo.setAttachName(fileName);
attachInfo.setAttachType(attachType); attachInfo.setAttachType(attachType);
@ -710,7 +735,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
req.setReceiverNo(paramsJSON.getStr("receiverNo")); req.setReceiverNo(paramsJSON.getStr("receiverNo"));
String fileName = paramsJSON.getStr("entrustFileName"); String fileName = paramsJSON.getStr("entrustFileName");
String splitEntrustFileBase64 = UploadUtil.URLFileToBase64(paramsJSON.getStr("entrustFile")); // 这个是 url 地址不是 base64 字节码 String splitEntrustFileBase64 = UploadUtil.fileUrlToBase64(paramsJSON.getStr("entrustFile")); // 这个是 url 地址不是 base64 字节码
req.setEntrustFileName(fileName); req.setEntrustFileName(fileName);
String domain = projectDomain; String domain = projectDomain;
@ -791,9 +816,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
respData.put("retMsg", "响应处理失败!"); respData.put("retMsg", "响应处理失败!");
if (paramsJSON != null) { if (paramsJSON != null) {
String merCupNo = paramsJSON.getStr("merCupNo");
Boolean success = lklLedgerMerReceiverBindService.updateAuditResult(paramsJSON.getStr("applyId"), Boolean success = lklLedgerMerReceiverBindService.updateAuditResult(paramsJSON.getStr("applyId"),
paramsJSON.getStr("merInnerNo"), paramsJSON.getStr("merInnerNo"),
paramsJSON.getStr("merCupNo"), merCupNo,
paramsJSON.getStr("receiverNo"), paramsJSON.getStr("receiverNo"),
paramsJSON.getStr("entrustFileName"), paramsJSON.getStr("entrustFileName"),
paramsJSON.getStr("entrustFilePath"), paramsJSON.getStr("entrustFilePath"),
@ -804,6 +830,20 @@ public class LakalaApiServiceImpl implements LakalaApiService {
respData.put("retCode", lklSuccessCode); respData.put("retCode", lklSuccessCode);
// TODO 新建一个正式的已审核通过的店铺 新建之前判断是否已经新建过了 // TODO 新建一个正式的已审核通过的店铺 新建之前判断是否已经新建过了
// 新建一个正式的已审核通过的店铺
ShopMchEntry shopEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(merCupNo);
if (shopEntry != null) {
String mchMobile = shopEntry.getLogin_mobile();
Pair<Integer, String> retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(mchMobile);
if (retPair.getFirst() > 0) {
// 更改合同记录表的店铺id
esignContractService.updateContractStoreId(mchMobile, retPair.getFirst());
// 填充合同模版表的店铺Id
esignContractFillingFileService.updateContractFillingStoreId(mchMobile, retPair.getFirst());
// 店铺创建状态已完成
shopMchEntryService.updateMerchEntryStoreStatus(mchMobile, CommonConstant.Enable);
}
}
respData.put("retMsg", "操作成功!"); respData.put("retMsg", "操作成功!");
} }

View File

@ -226,6 +226,8 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl<LklLedgerRecei
} }
/** /**
* 是否存在平台方的相关记录信息
*
* @return * @return
*/ */
@Override @Override

View File

@ -187,8 +187,11 @@ public class LklTkServiceImpl {
String updUrlPath = isProd() ? "/registration/file/base/upload" : "/sit/htkregistration/file/base/upload"; String updUrlPath = isProd() ? "/registration/file/base/upload" : "/sit/htkregistration/file/base/upload";
String fileBase64 = UploadUtil.URLFileToBase64(imgURL); String fileBase64 = UploadUtil.multipartFileToBase64(file);
if (StrUtil.isBlank(fileBase64)) {
return CommonResult.failed("解析文件转换失败");
}
// Base64Utils.encodeToString(file.getBytes());
JSONObject requestBody = new JSONObject(); JSONObject requestBody = new JSONObject();
requestBody.put("fileBase64", fileBase64); requestBody.put("fileBase64", fileBase64);
@ -210,7 +213,6 @@ public class LklTkServiceImpl {
return CommonResult.failed("上传文件返回值有误"); return CommonResult.failed("上传文件返回值有误");
} }
updObj.put("url", imgURL);
// 调用 OCR 识别接口 // 调用 OCR 识别接口
// String ocrUrlPath = isProd() ? "/registration/ocr/result" : "/sit/htkregistration/ocr/result"; // String ocrUrlPath = isProd() ? "/registration/ocr/result" : "/sit/htkregistration/ocr/result";
@ -231,10 +233,14 @@ public class LklTkServiceImpl {
// return CommonResult.failed("OCR返回结果有误"); // return CommonResult.failed("OCR返回结果有误");
// } // }
// //
// ocrObj.put("url", updObj.getStr("url")); // ocrObj.put("lklUrl", updObj.getStr("url"));
// ocrObj.put("showUrl", updObj.getStr("showUrl")); // ocrObj.put("lklShowUrl", updObj.getStr("showUrl"));
// ocrObj.put("imgType", imgType); // ocrObj.put("imgType", imgType);
// ocrObj.put("batchNo", batchNo); // ocrObj.put("batchNo", batchNo);
// ocrObj.put("cosURL", imgURL);
updObj.put("cosURL", imgURL);
return CommonResult.success(updObj); return CommonResult.success(updObj);