From dcc8cdeb6a16940b9bd9845c59b129e50fd39ab6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 5 Nov 2025 17:00:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(printer):=20=E4=BF=AE=E6=94=B9=20faceId=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=B1=BB=E5=9E=8B=E4=B8=BA=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E5=B9=B6=E5=A2=9E=E5=8A=A0=E8=A7=A3=E6=9E=90=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 getListFor、upload、uploadFromSource、queryPrice、createOrder 等接口中的 faceId 参数类型从 Long 改为 String - 新增 parseFaceId 方法用于将字符串类型的 faceId 安全转换为 Long 类型 - 在所有涉及 faceId 的业务方法调用处使用 parseFaceId 进行参数传递 - 增加对无效 faceId 字符串的处理,避免 NumberFormatException 异常 - 保持原有功能不变,提升接口健壮性和兼容性 --- .../mobile/AppPrinterController.java | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java index 77097b31..20cb34b9 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java @@ -37,9 +37,9 @@ public class AppPrinterController { } @GetMapping("/getListFor/{scenicId}") - public ApiResponse> getListFor(@PathVariable("scenicId") Long scenicId, @RequestParam(required = false) Long faceId) { + public ApiResponse> getListFor(@PathVariable("scenicId") Long scenicId, @RequestParam(required = false) String faceId) { JwtInfo worker = JwtTokenUtil.getWorker(); - return ApiResponse.success(printerService.getUserPhotoList(worker.getUserId(), scenicId, faceId)); + return ApiResponse.success(printerService.getUserPhotoList(worker.getUserId(), scenicId, parseFaceId(faceId))); } @GetMapping("/getItem/{scenicId}/{id}") @@ -61,11 +61,11 @@ public class AppPrinterController { @PostMapping("/uploadTo/{scenicId}") public ApiResponse upload(@PathVariable("scenicId") Long scenicId, @RequestParam(value = "file") MultipartFile file, - @RequestParam(value = "faceId", required = false) Long faceId) { + @RequestParam(value = "faceId", required = false) String faceId) { String[] split = file.getOriginalFilename().split("\\."); String ext = split[split.length - 1]; String url = StorageFactory.use().uploadFile(file, "printer", UUID.randomUUID() + "." + ext); - Integer id = printerService.addUserPhoto(JwtTokenUtil.getWorker().getUserId(), scenicId, url, faceId); + Integer id = printerService.addUserPhoto(JwtTokenUtil.getWorker().getUserId(), scenicId, url, parseFaceId(faceId)); return ApiResponse.success(id); } @PostMapping(value = "/uploadTo/{scenicId}/cropped/{id}", consumes = "multipart/form-data") @@ -82,8 +82,8 @@ public class AppPrinterController { @PostMapping("/uploadTo/{scenicId}/formSource") public ApiResponse uploadFromSource(@PathVariable("scenicId") Long scenicId, @RequestBody FromSourceReq req, - @RequestParam(value = "faceId", required = false) Long faceId) { - List list = printerService.addUserPhotoFromSource(JwtTokenUtil.getWorker().getUserId(), scenicId, req, faceId); + @RequestParam(value = "faceId", required = false) String faceId) { + List list = printerService.addUserPhotoFromSource(JwtTokenUtil.getWorker().getUserId(), scenicId, req, parseFaceId(faceId)); return ApiResponse.success(list); } @@ -100,19 +100,34 @@ public class AppPrinterController { } @GetMapping("/price/{scenicId}") public ApiResponse queryPrice(@PathVariable("scenicId") Long scenicId, - @RequestParam(value = "faceId", required = false) Long faceId) { - return ApiResponse.success(printerService.queryPrice(JwtTokenUtil.getWorker().getUserId(), scenicId, faceId)); + @RequestParam(value = "faceId", required = false) String faceId) { + return ApiResponse.success(printerService.queryPrice(JwtTokenUtil.getWorker().getUserId(), scenicId, parseFaceId(faceId))); } @PostMapping("/order/{scenicId}") public ApiResponse> createOrder(@PathVariable("scenicId") Long scenicId, - @RequestParam(value = "faceId", required = false) Long faceId) { - return ApiResponse.success(printerService.createOrder(JwtTokenUtil.getWorker().getUserId(), scenicId, null, faceId)); + @RequestParam(value = "faceId", required = false) String faceId) { + return ApiResponse.success(printerService.createOrder(JwtTokenUtil.getWorker().getUserId(), scenicId, null, parseFaceId(faceId))); } @PostMapping("/order/{scenicId}/toPrinter/{printerId}") public ApiResponse> createOrderToPrinter(@PathVariable("scenicId") Long scenicId, @PathVariable("printerId") Integer printerId, - @RequestParam(value = "faceId", required = false) Long faceId) { - return ApiResponse.success(printerService.createOrder(JwtTokenUtil.getWorker().getUserId(), scenicId, printerId, faceId)); + @RequestParam(value = "faceId", required = false) String faceId) { + return ApiResponse.success(printerService.createOrder(JwtTokenUtil.getWorker().getUserId(), scenicId, printerId, parseFaceId(faceId))); + } + + /** + * 解析 faceId 字符串为 Long 类型 + * 如果字符串不是有效数字,则返回 null + */ + private Long parseFaceId(String faceId) { + if (faceId == null || faceId.trim().isEmpty()) { + return null; + } + try { + return Long.parseLong(faceId.trim()); + } catch (NumberFormatException e) { + return null; + } } }