Explorar o código

fix(risk): verifyQr 接收 string taskId(防 JS 雪花 ID 精度丢失)

- VerifyQrBo.taskId: Long → String(@NotBlank)
- 两个 verifyQr Controller:加 Long.parseLong 转换,失败 R.fail
- 原因:雪花 ID (2.08e18) 超过 JS Number.MAX_SAFE_INTEGER (9.0e15),
  移动端 JSON.stringify 时末位精度丢失,后端 selectById 查不到任务
yangjingjing hai 17 horas
pai
achega
58adaf65ca

+ 9 - 1
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/controller/RiskInspectionTaskController.java

@@ -164,7 +164,15 @@ public class RiskInspectionTaskController extends BaseController {
      */
     @PostMapping("/verifyQr")
     public R<Boolean> verifyQr(@RequestBody org.dromara.risk.domain.bo.VerifyQrBo bo) {
-        return R.ok(inspectionTaskService.verifyQrCode(bo.getTaskId(), bo.getQrCode()));
+        // 前端 taskId 用 String 传(防 JS Number 精度丢失,雪花 ID > 2^53),
+        // service 内部还是 Long,Controller 层做转换
+        Long taskId;
+        try {
+            taskId = Long.parseLong(bo.getTaskId());
+        } catch (NumberFormatException e) {
+            return R.fail("任务ID格式不合法: " + bo.getTaskId());
+        }
+        return R.ok(inspectionTaskService.verifyQrCode(taskId, bo.getQrCode()));
     }
 
 }

+ 9 - 1
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/controller/RiskQualityInspectionTaskController.java

@@ -165,7 +165,15 @@ public class RiskQualityInspectionTaskController extends BaseController {
      */
     @PostMapping("/verifyQr")
     public R<Boolean> verifyQr(@RequestBody org.dromara.risk.domain.bo.VerifyQrBo bo) {
-        return R.ok(inspectionTaskService.verifyQrCode(bo.getTaskId(), bo.getQrCode()));
+        // 前端 taskId 用 String 传(防 JS Number 精度丢失,雪花 ID > 2^53),
+        // service 内部还是 Long,Controller 层做转换
+        Long taskId;
+        try {
+            taskId = Long.parseLong(bo.getTaskId());
+        } catch (NumberFormatException e) {
+            return R.fail("任务ID格式不合法: " + bo.getTaskId());
+        }
+        return R.ok(inspectionTaskService.verifyQrCode(taskId, bo.getQrCode()));
     }
 
 }

+ 3 - 3
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/domain/bo/VerifyQrBo.java

@@ -18,9 +18,9 @@ public class VerifyQrBo implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
-    /** 任务ID */
-    @NotNull(message = "任务ID不能为空")
-    private Long taskId;
+    /** 任务ID(用 String 防 JS Number 精度丢失,雪花 ID 超出 Number.MAX_SAFE_INTEGER) */
+    @NotBlank(message = "任务ID不能为空")
+    private String taskId;
 
     /** 二维码内容 */
     @NotBlank(message = "二维码内容不能为空")