Explorar o código

feat(app): 优化课程详情接口并添加文件下载功能

- 修改 getCourseInfo 接口,将 latitude 和 longitude 参数改为可选参数
- 在 ESignApi 中添加 fileDownloadUrl 接口,用于下载已签署文件及附属材料- 更新 ESignServiceImpl 中的签名位置逻辑,支持多页文档的签名
- 修改 SignPositionGroup 中的 ComponentPosition 类,增加 pageNum 字段
SheepHy hai 3 semanas
pai
achega
49c70851ed

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

@@ -48,7 +48,9 @@ public class AppDetailController {
      **/
     @GetMapping("/getCourseInfo")
     @Operation(summary = "课程详情")
-    public Result<CourseInfoVO> getCourseInfo(@RequestParam @Schema(description="课程ID")String id, @RequestParam double latitude,@RequestParam double longitude){
+    public Result<CourseInfoVO> getCourseInfo(@RequestParam @Schema(description="课程ID")String id,
+                                              @RequestParam(required = false) double latitude,
+                                              @RequestParam(required = false) double longitude){
         return Result.ok(detailService.getCourseInfo(id, latitude, longitude));
     }
 

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

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Tag(name = "E签宝相关接口")
@@ -100,6 +101,17 @@ public class ESignApi {
     public Result<List<AppContractSign>> queryWaitSignList(@RequestParam("orderId") @Schema(description="订单ID")String orderId){
         return Result.OK(iESignService.queryWaitSignList(orderId));
     }
-
+    /**
+     * @Author SheepHy
+     * @Description 下载已签署文件及附属材料
+     * @Date 14:05 2025/7/28
+     * @Param
+     * @return
+     **/
+    @GetMapping("/fileDownloadUrl")
+    @Operation(summary = "下载已签署文件及附属材料-PC")
+    public Result<List<Map<String,String>>> fileDownloadUrl(@RequestParam("signFlowId") @Schema(description="文件标识")String signFlowId) throws EsignDemoException{
+        return Result.OK(iESignService.fileDownloadUrl(signFlowId));
+    }
 
 }

+ 5 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/dto/SignPositionGroup.java

@@ -16,13 +16,15 @@ public class SignPositionGroup {
     @Data
     @Accessors(chain = true)
     public static class ComponentPosition {
-        private int x;
-        private int y;
+        private float x;
+        private float y;
+        private int pageNum;
 
         // Constructor
-        public ComponentPosition(int x, int y) {
+        public ComponentPosition(float x, float y, int pageNum) {
             this.x = x;
             this.y = y;
+            this.pageNum = pageNum;
         }
     }
 }

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

@@ -289,8 +289,9 @@ public class ESignServiceImpl implements IESignService {
 
             int x = position.get("componentPositionX").getAsInt();
             int y = position.get("componentPositionY").getAsInt();
+            int pageNum = position.get("componentPageNum").getAsInt();
 
-            SignPositionGroup.ComponentPosition cp = new SignPositionGroup.ComponentPosition(x, y);
+            SignPositionGroup.ComponentPosition cp = new SignPositionGroup.ComponentPosition(x, y ,pageNum);
 
             if ("商户".equals(role)) {
                 merchant.add(cp);
@@ -329,7 +330,9 @@ public class ESignServiceImpl implements IESignService {
 
         signer1.add("psnSignerInfo", psnSignerInfo);
         positionGroup.getCustomer().forEach(position -> {
-            signer1.add("signFields", buildSignFields(contractInfo.getFileId(), position.getX(), position.getY(), 100, 0, 0,false,""));
+            signer1.add("signFields", buildSignFields(contractInfo.getFileId(),
+                    position.getX(), position.getY(),
+                    100, 0, 0,false,"", position.getPageNum()));
         });
         // 企业签署人
         JsonObject signer2 = new JsonObject();
@@ -338,7 +341,9 @@ public class ESignServiceImpl implements IESignService {
         orgSignerInfo.addProperty("orgId", orgId);
         positionGroup.getMerchant().forEach(position -> {
             try {
-                signer2.add("signFields", buildSignFields(contractInfo.getFileId(), position.getX(), position.getY(), 100, 0, 0,true,orgAuthorizedSeal(orgId)));
+                signer2.add("signFields", buildSignFields(contractInfo.getFileId(),
+                        position.getX(),
+                        position.getY(), 100, 0, 0,true,orgAuthorizedSeal(orgId),position.getPageNum()));
             } catch (EsignDemoException e) {
                 throw new RuntimeException(e);
             }
@@ -371,9 +376,13 @@ public class ESignServiceImpl implements IESignService {
      * 构建签署区域
      */
     private JsonArray buildSignFields(String fileId,
-                                      int x, int y,
+                                      float x, float y,
                                       int size,
-                                      int dateX, int dateY,boolean autoSign,String signature) {
+                                      int dateX,
+                                      int dateY,
+                                      boolean autoSign,
+                                      String signature,
+                                      int positionPage) {
         JsonArray signFields = new JsonArray();
         JsonObject field = new JsonObject();
 
@@ -393,7 +402,7 @@ public class ESignServiceImpl implements IESignService {
 
         // 位置配置
         JsonObject position = new JsonObject();
-        position.addProperty("positionPage", "1");
+        position.addProperty("positionPage", positionPage);
         position.addProperty("positionX", x);
         position.addProperty("positionY", y);
         normalConfig.add("signFieldPosition", position);