From 2407520ca50d9092baef4b577399b0967f5bb81c Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Thu, 8 May 2025 11:50:39 +0800 Subject: [PATCH] =?UTF-8?q?ocr=20=E8=B0=83=E8=AF=95=EF=BC=8Ctodo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../suisung/mall/common/utils/UploadUtil.java | 48 ++++++++++++++----- .../impl/EsignContractServiceImpl.java | 26 +++++----- .../service/impl/LakalaApiServiceImpl.java | 48 +++++++++++++++++-- .../impl/LklLedgerReceiverServiceImpl.java | 2 + .../lakala/service/impl/LklTkServiceImpl.java | 16 +++++-- 5 files changed, 105 insertions(+), 35 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/UploadUtil.java b/mall-common/src/main/java/com/suisung/mall/common/utils/UploadUtil.java index 408caef2..cf21cbbf 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/UploadUtil.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/UploadUtil.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.apache.tika.Tika; import org.springframework.util.Base64Utils; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -30,7 +31,7 @@ public class UploadUtil { ); 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); } @@ -281,25 +282,46 @@ public class UploadUtil { * @param fileUrl * @return */ - public static String URLFileToBase64(String fileUrl) { + public static String fileUrlToBase64(String fileUrl) { try { URL url = new URL(fileUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); - try (InputStream inputStream = connection.getInputStream()) { - byte[] buffer = new byte[inputStream.available()]; - inputStream.read(buffer); - return Base64Utils.encodeToString(buffer); - } finally { - connection.disconnect(); + int responseCode = connection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + InputStream inputStream = connection.getInputStream(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[4096]; + 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) { - log.error("在连接或读取文件时发生 I/O 错误: {}", e.getMessage()); - } catch (Exception e) { - log.error("发生未知异常: {}", e.getMessage()); + // 可以在这里添加日志记录,方便调试,这里简单打印异常信息 + log.error("处理图片 URL 时出现 IOException: ", 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; } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java index 5dfa1e1b..28650b90 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java @@ -294,21 +294,21 @@ public class EsignContractServiceImpl extends BaseServiceImpl { - // 1、(电子合同)给商家申请分账功能;2、商家绑定接收方; + // taskService.executeTask(() -> { + // 1、(电子合同)给商家申请分账功能;2、商家绑定接收方; - // 新建一个正式的已审核通过的店铺 - Pair retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(esignContract.getMch_mobile()); - if (retPair.getFirst() > 0) { - // 更改合同记录表的店铺id - updateContractStoreId(esignContract.getMch_mobile(), retPair.getFirst()); - // 填充合同模版表的店铺Id - esignContractFillingFileService.updateContractFillingStoreId(esignContract.getMch_mobile(), retPair.getFirst()); - // 店铺创建状态已完成 - shopMchEntryService.updateMerchEntryStoreStatus(esignContract.getMch_mobile(), CommonConstant.Enable); - } + // 新建一个正式的已审核通过的店铺 +// Pair retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(esignContract.getMch_mobile()); +// if (retPair.getFirst() > 0) { +// // 更改合同记录表的店铺id +// updateContractStoreId(esignContract.getMch_mobile(), retPair.getFirst()); +// // 填充合同模版表的店铺Id +// esignContractFillingFileService.updateContractFillingStoreId(esignContract.getMch_mobile(), retPair.getFirst()); +// // 店铺创建状态已完成 +// shopMchEntryService.updateMerchEntryStoreStatus(esignContract.getMch_mobile(), CommonConstant.Enable); +// } - }); + // }); return new ResponseEntity<>(new JSONObject().put("code", 200).put("msg", "success").toString(), HttpStatus.OK); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java index af91a5bc..d8221166 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java @@ -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.LklLedgerMerReceiverBind; 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.utils.I18nUtil; import com.suisung.mall.common.utils.StringUtils; 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.LklLedgerMemberService; import com.suisung.mall.shop.lakala.service.LklLedgerMerReceiverBindService; import com.suisung.mall.shop.lakala.service.LklLedgerReceiverService; 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; +import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; @@ -92,6 +99,24 @@ public class LakalaApiServiceImpl implements LakalaApiService { @Autowired private LklLedgerMerReceiverBindService lklLedgerMerReceiverBindService; + @Lazy + @Resource + private ShopMchEntryService shopMchEntryService; + + @Lazy + @Resource + private + EsignContractService esignContractService; + + @Lazy + @Resource + private EsignContractFillingFileService esignContractFillingFileService; + + + @Lazy + @Resource + private ShopStoreBaseService shopStoreBaseService; + /** * 初始化 拉卡拉SDK * @@ -447,7 +472,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { 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"))) { throw new ApiException(I18nUtil._("分账结算委托书上传失败!")); } @@ -617,7 +642,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { for (JSONObject attachJSON : paramsJSON.getJSONArray("attachList").jsonIter()) { String fileName = attachJSON.getStr("attachName"); 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.setAttachType(attachType); @@ -710,7 +735,7 @@ public class LakalaApiServiceImpl implements LakalaApiService { req.setReceiverNo(paramsJSON.getStr("receiverNo")); 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); String domain = projectDomain; @@ -791,9 +816,10 @@ public class LakalaApiServiceImpl implements LakalaApiService { respData.put("retMsg", "响应处理失败!"); if (paramsJSON != null) { + String merCupNo = paramsJSON.getStr("merCupNo"); Boolean success = lklLedgerMerReceiverBindService.updateAuditResult(paramsJSON.getStr("applyId"), paramsJSON.getStr("merInnerNo"), - paramsJSON.getStr("merCupNo"), + merCupNo, paramsJSON.getStr("receiverNo"), paramsJSON.getStr("entrustFileName"), paramsJSON.getStr("entrustFilePath"), @@ -804,6 +830,20 @@ public class LakalaApiServiceImpl implements LakalaApiService { respData.put("retCode", lklSuccessCode); // TODO 新建一个正式的已审核通过的店铺, 新建之前判断是否已经新建过了? + // 新建一个正式的已审核通过的店铺 + ShopMchEntry shopEntry = shopMchEntryService.getShopMerchEntryByMerCupNo(merCupNo); + if (shopEntry != null) { + String mchMobile = shopEntry.getLogin_mobile(); + Pair 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", "操作成功!"); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java index e3b329b3..1814594b 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java @@ -226,6 +226,8 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl