소스 검색

refactor(national-motion): 优化代码结构和功能

- 修改 AppHomeServiceImpl 中的位置距离计算逻辑- 在 AppSitePlaceMapper.xml 中添加 cover 字段的查询
- 更新 ESignController 和 ESignServiceImpl 中的异常处理
-调整 FileDemo 和其他 eSign 相关类的异常处理机制
- 优化 OrderVO 和 PlaceVO 中的字段定义
-移除 PlatformSignToB 和 PlatformSignToC 中的冗余代码
- 调整 Swagger3Config 中的全局鉴权参数添加方式
SheepHy 4 일 전
부모
커밋
370883a87a
12개의 변경된 파일92개의 추가작업 그리고 100개의 파일을 삭제
  1. 7 14
      national-motion-base-core/src/main/java/org/jeecg/config/Swagger3Config.java
  2. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/ESignController.java
  3. 29 33
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/comm/EsignFileBean.java
  4. 3 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/fileAndTemplate/FileDemo.java
  5. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/scenedemo/PlatformSignToB.java
  6. 36 40
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/scenedemo/PlatformSignToC.java
  7. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IESignService.java
  8. 8 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java
  9. 2 2
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/ESignServiceImpl.java
  10. 1 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/OrderVO.java
  11. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PlaceVO.java
  12. 2 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml

+ 7 - 14
national-motion-base-core/src/main/java/org/jeecg/config/Swagger3Config.java

@@ -63,22 +63,15 @@ public class Swagger3Config implements WebMvcConfigurer {
     @Bean
     public GlobalOpenApiCustomizer globalOpenApiCustomizer() {
         return openApi -> {
-            // 全局添加鉴权参数
             if (openApi.getPaths() != null) {
                 openApi.getPaths().forEach((path, pathItem) -> {
-                    //log.debug("path: {}", path);
-                    // 检查当前路径是否在排除列表中
-                    boolean isExcluded = excludedPaths.stream().anyMatch(excludedPath ->
-                            excludedPath.equals(path) ||
-                                    (excludedPath.endsWith("**") && path.startsWith(excludedPath.substring(0, excludedPath.length() - 2)))
-                    );
-
-                    if (!isExcluded) {
-                        // 接口添加鉴权参数
-                        pathItem.readOperations()
-                                .forEach(operation ->
-                                        operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN))
-                                );
+                    // 添加空值检查
+                    if (pathItem != null && pathItem.readOperations() != null) {
+                        pathItem.readOperations().forEach(operation -> {
+                            if (operation != null) {
+                                operation.addSecurityItem(new SecurityRequirement().addList(CommonConstant.X_ACCESS_TOKEN));
+                            }
+                        });
                     }
                 });
             }

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/ESignController.java

@@ -60,7 +60,7 @@ public class ESignController {
      **/
     @PostMapping("/uploadContractTemplate")
     @Operation(summary = "上传合同底稿-PC")
-    public Result<Boolean> uploadContractTemplate(@RequestBody AppContractInfoDTO appContractInfoDTO) throws EsignDemoException{
+    public Result<Boolean> uploadContractTemplate(@RequestBody AppContractInfoDTO appContractInfoDTO) throws Exception{
         return Result.OK(iESignService.uploadContractTemplate(appContractInfoDTO));
     }
 

+ 29 - 33
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/comm/EsignFileBean.java

@@ -27,7 +27,7 @@ public class EsignFileBean {
     private String filePath;
 
 
-    public EsignFileBean(String filePath) throws EsignDemoException {
+    public EsignFileBean(String filePath) throws Exception {
         this.filePath = filePath;
 
         if (filePath.startsWith("http")) {
@@ -49,45 +49,41 @@ public class EsignFileBean {
 
     private boolean isTemporaryFile = false;
 
-    private File downloadFromURL(String fileUrl) throws EsignDemoException {
-        try {
-            // 使用 URI 构造器自动编码路径
-            URI uri = new URI(fileUrl);
-            URL url = uri.toURL();
+    private File downloadFromURL(String fileUrl) throws Exception  {
+        // 使用 URI 构造器自动编码路径
+        URI uri = new URI(fileUrl);
+        URL url = uri.toURL();
 
-            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-            connection.setRequestMethod("GET");
-            connection.setRequestProperty("User-Agent", "Mozilla/5.0"); // 模拟浏览器请求
-            connection.connect();
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+        connection.setRequestMethod("GET");
+        connection.setRequestProperty("User-Agent", "Mozilla/5.0"); // 模拟浏览器请求
+        connection.connect();
 
-            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
-                throw new EsignDemoException("网络文件下载失败,状态码:" + connection.getResponseCode());
-            }
+        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
+            throw new EsignDemoException("网络文件下载失败,状态码:" + connection.getResponseCode());
+        }
 
-            String fileName = extractFileNameFromURL(url, connection);
-            File targetFile = new File(getDownloadDirectory(), fileName);
+        String fileName = extractFileNameFromURL(url, connection);
+        File targetFile = new File(getDownloadDirectory(), fileName);
 
-            // 确保文件名唯一
-            int count = 1;
-            String baseName = fileName.substring(0, fileName.lastIndexOf('.'));
-            String ext = fileName.substring(fileName.lastIndexOf('.'));
-            while (targetFile.exists()) {
-                targetFile = new File(getDownloadDirectory(), baseName + "_" + (count++) + ext);
-            }
+        // 确保文件名唯一
+        int count = 1;
+        String baseName = fileName.substring(0, fileName.lastIndexOf('.'));
+        String ext = fileName.substring(fileName.lastIndexOf('.'));
+        while (targetFile.exists()) {
+            targetFile = new File(getDownloadDirectory(), baseName + "_" + (count++) + ext);
+        }
 
-            try (InputStream in = connection.getInputStream();
-                 FileOutputStream out = new FileOutputStream(targetFile)) {
-                byte[] buffer = new byte[8192];
-                int bytesRead;
-                while ((bytesRead = in.read(buffer)) != -1) {
-                    out.write(buffer, 0, bytesRead);
-                }
+        try (InputStream in = connection.getInputStream();
+             FileOutputStream out = new FileOutputStream(targetFile)) {
+            byte[] buffer = new byte[8192];
+            int bytesRead;
+            while ((bytesRead = in.read(buffer)) != -1) {
+                out.write(buffer, 0, bytesRead);
             }
-
-            return targetFile;
-        } catch (Exception e) {
-            throw new EsignDemoException("网络文件下载失败:" + e.getMessage(), e);
         }
+
+        return targetFile;
     }
     private String downloadDirectory = System.getProperty("user.dir") + File.separator + "esign_downloads";
 

+ 3 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/fileAndTemplate/FileDemo.java

@@ -30,7 +30,7 @@ public class FileDemo extends Exception {
 	private static String eSignAppId=EsignDemoConfig.EsignAppId;
 	private static String eSignAppSecret=EsignDemoConfig.EsignAppSecret;
 
-	public static void main(String[] args) throws EsignDemoException, InterruptedException {
+	public static void main(String[] args) throws Exception {
 
 		String rootFolder = new File("").getAbsolutePath();
 		//获取文件id以及文件上传地址
@@ -73,7 +73,7 @@ public class FileDemo extends Exception {
 	 * 获取文件上传地址
 	 * @return
 	 */
-	public static EsignHttpResponse getUploadUrl(String filePath) throws EsignDemoException {
+	public static EsignHttpResponse getUploadUrl(String filePath) throws Exception {
 		//自定义的文件封装类,传入文件地址可以获取文件的名称大小,文件流等数据
 		EsignFileBean esignFileBean = new EsignFileBean(filePath);
 		String apiaddr="/v3/files/file-upload-url";
@@ -119,7 +119,7 @@ public class FileDemo extends Exception {
 	 * 文件流上传
 	 * @return
 	 */
-	public static EsignHttpResponse uploadFile(String uploadUrl,String filePath) throws EsignDemoException {
+	public static EsignHttpResponse uploadFile(String uploadUrl,String filePath) throws Exception {
 		//根据文件地址获取文件contentMd5
 		EsignFileBean esignFileBean = new EsignFileBean(filePath);
 		//请求方法

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/scenedemo/PlatformSignToB.java

@@ -20,7 +20,7 @@ public class PlatformSignToB {
     private static String eSignAppId=EsignDemoConfig.EsignAppId;
     private static String eSignAppSecret=EsignDemoConfig.EsignAppSecret;
 
-    public static void main(String[] args) throws EsignDemoException, InterruptedException {
+    public static void main(String[] args) throws Exception {
         Gson gson = new Gson();
         //无前置实名,客户需要到签署流程中实名
         //获取文件id以及文件上传地址

+ 36 - 40
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/esign/scenedemo/PlatformSignToC.java

@@ -1,16 +1,12 @@
 package org.jeecg.modules.app.esign.scenedemo;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
 import org.jeecg.modules.app.esign.comm.EsignHttpHelper;
 import org.jeecg.modules.app.esign.comm.EsignHttpResponse;
 import org.jeecg.modules.app.esign.constant.EsignDemoConfig;
 import org.jeecg.modules.app.esign.enums.EsignRequestType;
 import org.jeecg.modules.app.esign.exception.EsignDemoException;
-import org.jeecg.modules.app.esign.fileAndTemplate.FileDemo;
 
 import java.util.Map;
-import java.util.concurrent.TimeUnit;
 
 /**
  * description 平台方自动签署个人手动签署场景
@@ -23,42 +19,42 @@ public class PlatformSignToC {
     private static String eSignAppSecret=EsignDemoConfig.EsignAppSecret;
 
     public static void main(String[] args) throws EsignDemoException, InterruptedException {
-        Gson gson = new Gson();
-        //无前置实名,客户需要到签署流程中实名
-        //获取文件id以及文件上传地址
-        String filePath="E:/合同模板/test-template1.pdf";
-        EsignHttpResponse getUploadUrl = FileDemo.getUploadUrl(filePath);
-        JsonObject getUploadUrlJsonObject = gson.fromJson(getUploadUrl.getBody(), JsonObject.class);
-        JsonObject data = getUploadUrlJsonObject.getAsJsonObject("data");
-        //文件id后续发起签署使用
-        String fileId =data.get("fileId").getAsString();
-        String fileUploadUrl =data.get("fileUploadUrl").getAsString();
-        System.out.println("获取文件id以及文件上传地址成功,文件id:"+fileId);
-        System.out.println("上传链接:"+fileUploadUrl);
-
-        //文件上传
-        EsignHttpResponse uploadFileResponse = FileDemo.uploadFile(fileUploadUrl,filePath);
-        JsonObject uploadFileResponseJsonObject = gson.fromJson(uploadFileResponse.getBody(), JsonObject.class);
-        int errCode = uploadFileResponseJsonObject.get("errCode").getAsInt();
-        System.out.println("文件上传成功,状态码:"+errCode);
-
-
-        //文件上传成功后文件会有一个异步处理过程,建议轮询文件状态,正常后发起签署
-        //查询文件上传状态
-        int i=0;
-        while(i<3) {
-            EsignHttpResponse fileStatus = FileDemo.getFileStatus(fileId);
-            JsonObject fileStatusJsonObject = gson.fromJson(fileStatus.getBody(), JsonObject.class);
-            String status = fileStatusJsonObject.getAsJsonObject("data").get("fileStatus").getAsString();
-            System.out.println(String.format("查询文件状态执行第%s次",i+1));
-            if("2".equalsIgnoreCase(status)||"5".equalsIgnoreCase(status)){//查询状态为2或者5代表文件准备完成
-                System.out.println("文件准备完成");
-                break;
-            }
-            System.out.println("文件未准备完成,等待两秒重新查询");
-            TimeUnit.SECONDS.sleep(2);
-            i++;
-        }
+//        Gson gson = new Gson();
+//        //无前置实名,客户需要到签署流程中实名
+//        //获取文件id以及文件上传地址
+//        String filePath="E:/合同模板/test-template1.pdf";
+//        EsignHttpResponse getUploadUrl = FileDemo.getUploadUrl(filePath);
+//        JsonObject getUploadUrlJsonObject = gson.fromJson(getUploadUrl.getBody(), JsonObject.class);
+//        JsonObject data = getUploadUrlJsonObject.getAsJsonObject("data");
+//        //文件id后续发起签署使用
+//        String fileId =data.get("fileId").getAsString();
+//        String fileUploadUrl =data.get("fileUploadUrl").getAsString();
+//        System.out.println("获取文件id以及文件上传地址成功,文件id:"+fileId);
+//        System.out.println("上传链接:"+fileUploadUrl);
+//
+//        //文件上传
+//        EsignHttpResponse uploadFileResponse = FileDemo.uploadFile(fileUploadUrl,filePath);
+//        JsonObject uploadFileResponseJsonObject = gson.fromJson(uploadFileResponse.getBody(), JsonObject.class);
+//        int errCode = uploadFileResponseJsonObject.get("errCode").getAsInt();
+//        System.out.println("文件上传成功,状态码:"+errCode);
+//
+//
+//        //文件上传成功后文件会有一个异步处理过程,建议轮询文件状态,正常后发起签署
+//        //查询文件上传状态
+//        int i=0;
+//        while(i<3) {
+//            EsignHttpResponse fileStatus = FileDemo.getFileStatus(fileId);
+//            JsonObject fileStatusJsonObject = gson.fromJson(fileStatus.getBody(), JsonObject.class);
+//            String status = fileStatusJsonObject.getAsJsonObject("data").get("fileStatus").getAsString();
+//            System.out.println(String.format("查询文件状态执行第%s次",i+1));
+//            if("2".equalsIgnoreCase(status)||"5".equalsIgnoreCase(status)){//查询状态为2或者5代表文件准备完成
+//                System.out.println("文件准备完成");
+//                break;
+//            }
+//            System.out.println("文件未准备完成,等待两秒重新查询");
+//            TimeUnit.SECONDS.sleep(2);
+//            i++;
+//        }
         //发起签署
 //        EsignHttpResponse createByFile = createByFile();
 //        JSONObject createByFileJsonObject = JSONObject.parseObject(createByFile.getBody());

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IESignService.java

@@ -55,7 +55,7 @@ public interface IESignService {
      * @Param
      * @return
      **/
-    boolean uploadContractTemplate(AppContractInfoDTO appContractInfoDTO) throws EsignDemoException;
+    boolean uploadContractTemplate(AppContractInfoDTO appContractInfoDTO) throws Exception;
 
 
     /**

+ 8 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java

@@ -178,9 +178,14 @@ public class AppHomeServiceImpl implements IAppHomeService {
                             .ne(AppSitePriceRules::getInventory, 0)));
                 });
                 if(!appSitePriceRules.isEmpty()) ticketWhether = true;
-                placeVO.setKm(PositionUtil.calculateDistance(getPlaceListDTO.getLatitude(), getPlaceListDTO.getLongitude(), placeVO.getLatitude().doubleValue(), placeVO.getLongitude().doubleValue()))
-                        .setCategory(getCategoryName(placeVO.getCategoryId()))
-                        .setTicketWhether(ticketWhether);
+                if(placeVO.getLatitude() != null && placeVO.getLongitude() != null){
+                    placeVO.setKm(PositionUtil.calculateDistance(getPlaceListDTO.getLatitude(), getPlaceListDTO.getLongitude(),
+                            placeVO.getLatitude().doubleValue(), placeVO.getLongitude().doubleValue()));
+                }else{
+                    placeVO.setKm(0.0);
+                }
+                placeVO.setCategory(getCategoryName(placeVO.getCategoryId()));
+                placeVO.setTicketWhether(ticketWhether);
             });
         }
 

+ 2 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/ESignServiceImpl.java

@@ -118,9 +118,9 @@ public class ESignServiceImpl implements IESignService {
     }
 
     @Override
-    public boolean uploadContractTemplate(AppContractInfoDTO appContractInfoDTO) throws EsignDemoException {
+    public boolean uploadContractTemplate(AppContractInfoDTO appContractInfoDTO) throws Exception {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        String remoteUrl = REMOTE_URL + appContractInfoDTO.getFilePath();
+        String remoteUrl = appContractInfoDTO.getFilePath();
         String fileType = getFileExtension(appContractInfoDTO.getFilePath());
         if (fileType.isEmpty()) {
             throw new JeecgBootException("未指定文件类型");

+ 1 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/OrderVO.java

@@ -114,6 +114,7 @@ public class OrderVO {
     public static class PreviewOrderPlaceGymnasiumChartered {
         @Schema(description = "场地ID")
         private String placeId;
+        private String cover;
         @Schema(description = "体育馆包场提前退款时间;单位:分钟")
         private int earlyRefundTime;
         @Schema(description = "门店名称")

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PlaceVO.java

@@ -29,7 +29,7 @@ public class PlaceVO extends Page<PlaceVO> {
     @Schema(description = "门店类型 0学校 1体育馆包场 ")
     private int type;
     @Schema(description = "距离(KM)")
-    private double km;
+    private double km = 0.0;
     @Schema(description = "是否有票")
     private boolean ticketWhether;
     @Schema(description = "类目")

+ 2 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml

@@ -64,7 +64,8 @@
             g.end_time,
             a.advance_time,
             a.usable_count,
-            a.refund_type
+            a.refund_type,
+            a.cover
         FROM
             nm_site_place a
                 LEFT JOIN nm_site_price_rules g ON a.id = g.site_place_id