From ea212c89311caa0ff5371692a0d05cf27e64513d Mon Sep 17 00:00:00 2001 From: super <2903208875@qq.com> Date: Thu, 26 Mar 2026 17:39:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=93=81=E7=89=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ app/__pycache__/config.cpython-312.pyc | Bin 2074 -> 2061 bytes .../__pycache__/brand.cpython-312.pyc | Bin 49754 -> 35543 bytes .../__pycache__/main.cpython-312.pyc | Bin 25343 -> 21707 bytes app/version.txt | 2 +- .../brand/controller/BrandTaskController.java | 23 +++++++----------- .../brand/service/BrandTaskService.java | 22 ++++++++--------- 7 files changed, 23 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index 0c8527a..a0be7ae 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ backend-java/*.iml # desktop app desktop/ ERP-Demo/ +xlsx/ +app/__pycache__ +backend/__pycache__ diff --git a/app/__pycache__/config.cpython-312.pyc b/app/__pycache__/config.cpython-312.pyc index d29bfaf09801ba7ee8274a574094f60621718855..8afe47fa1cb939bbabd50dd8283bae6e74230495 100644 GIT binary patch delta 407 zcmbOw&?~@unwOW00SGES9?85mkyny2ZK8TP*J?(P7z0BT=fpTkPB?es8X1-pp4Chf zPbp63XXKgqRf>-vu9TOFA$77Nqm-yXir{J{h<>;vKhPXOAs9DBxC&&r08r3cBt;aa zI!Z7_EJ`RvJW4o4B1$AhGDDoQLxI!Zi6CQ2ejHdS;sLyFv7<|xTju~e2UlgS?# zC0WJ6EIuY#Mw7`pOwyv#DJoGisT@F+s&kp5WK(6p@-a-3tg>KM71M*sjm(XcBbn7V zGqDIWa=2Bo8R{A68BUgAHDQ#S9LO4NRKy8%UJ)oTUlwp_;QheHz$ZPqi9L~xuYvUjm(b*w?1liGZ(*+h delta 465 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 literal 49754 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 O->7VnO8y{$g#H)7O5Gp; delta 7330 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 getTask( - @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId, - @Parameter(description = "用户 ID", required = true) @RequestParam Long userId) { - return ApiResponse.success(brandTaskService.getTaskDetailLegacy(taskId, userId)); + @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId) { + return ApiResponse.success(brandTaskService.getTaskDetailLegacy(taskId)); } @PostMapping("/tasks/{taskId}/result") @@ -154,9 +153,8 @@ public class BrandTaskController { }) public ApiResponse submitResult( @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId, - @Parameter(description = "用户 ID", required = true) @RequestParam Long userId, @Valid @RequestBody BrandCrawlResultRequest request) { - brandTaskService.submitCrawlResult(taskId, userId, request); + brandTaskService.submitCrawlResult(taskId, request); return ApiResponse.success(new BrandSimpleVo(true)); } @@ -170,9 +168,8 @@ public class BrandTaskController { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "任务不存在或当前状态不可取消") }) public ApiResponse cancelTask( - @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId, - @Parameter(description = "用户 ID", required = true) @RequestParam Long userId) { - brandTaskService.cancelTask(taskId, userId); + @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId) { + brandTaskService.cancelTask(taskId); return ApiResponse.success(new BrandSimpleVo(true)); } @@ -186,9 +183,8 @@ public class BrandTaskController { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "任务不存在或正在执行中不可删除") }) public ApiResponse deleteTask( - @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId, - @Parameter(description = "用户 ID", required = true) @RequestParam Long userId) { - brandTaskService.deleteTask(taskId, userId); + @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId) { + brandTaskService.deleteTask(taskId); return ApiResponse.success(new BrandSimpleVo(true)); } @@ -202,9 +198,8 @@ public class BrandTaskController { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "404", description = "任务不存在或无结果可下载") }) public ResponseEntity download( - @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId, - @Parameter(description = "用户 ID", required = true) @RequestParam Long userId) { - String url = brandTaskService.resolveDownloadUrl(taskId, userId); + @Parameter(description = "品牌任务 ID", required = true) @PathVariable Long taskId) { + String url = brandTaskService.resolveDownloadUrl(taskId); return ResponseEntity.status(302) .header(HttpHeaders.LOCATION, url) .build(); diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/brand/service/BrandTaskService.java b/backend-java/src/main/java/com/nanri/aiimage/modules/brand/service/BrandTaskService.java index 1ab7e99..39ed9f9 100644 --- a/backend-java/src/main/java/com/nanri/aiimage/modules/brand/service/BrandTaskService.java +++ b/backend-java/src/main/java/com/nanri/aiimage/modules/brand/service/BrandTaskService.java @@ -139,8 +139,8 @@ public class BrandTaskService { return vo; } - public LegacyBrandTaskDetailVo getTaskDetailLegacy(Long taskId, Long userId) { - BrandCrawlTaskEntity task = requireTask(taskId, userId); + public LegacyBrandTaskDetailVo getTaskDetailLegacy(Long taskId) { + BrandCrawlTaskEntity task = requireTask(taskId); LegacyBrandTaskDetailVo vo = new LegacyBrandTaskDetailVo(); vo.setTask(toLegacyTaskItem(task)); vo.setLine_progress(buildLineProgress(taskId)); @@ -204,8 +204,8 @@ public class BrandTaskService { return vo; } - public void submitCrawlResult(Long taskId, Long userId, BrandCrawlResultRequest request) { - BrandCrawlTaskEntity task = requireTask(taskId, userId); + public void submitCrawlResult(Long taskId, BrandCrawlResultRequest request) { + BrandCrawlTaskEntity task = requireTask(taskId); if (STATUS_CANCELLED.equalsIgnoreCase(blankToDefault(task.getStatus(), STATUS_PENDING))) { throw new BusinessException("任务已取消"); } @@ -310,11 +310,10 @@ public class BrandTaskService { } } - public void cancelTask(Long taskId, Long userId) { - requireTask(taskId, userId); + public void cancelTask(Long taskId) { + requireTask(taskId); int updated = brandCrawlTaskMapper.update(null, new LambdaUpdateWrapper() .eq(BrandCrawlTaskEntity::getId, taskId) - .eq(BrandCrawlTaskEntity::getUserId, userId) .in(BrandCrawlTaskEntity::getStatus, STATUS_PENDING, STATUS_RUNNING) .set(BrandCrawlTaskEntity::getStatus, STATUS_CANCELLED)); if (updated == 0) { @@ -323,19 +322,18 @@ public class BrandTaskService { brandTaskProgressCacheService.delete(taskId); } - public void deleteTask(Long taskId, Long userId) { - requireTask(taskId, userId); + public void deleteTask(Long taskId) { + requireTask(taskId); int deleted = brandCrawlTaskMapper.delete(new LambdaQueryWrapper() .eq(BrandCrawlTaskEntity::getId, taskId) - .eq(BrandCrawlTaskEntity::getUserId, userId) .ne(BrandCrawlTaskEntity::getStatus, STATUS_RUNNING)); if (deleted == 0) { throw new BusinessException("任务不存在或正在执行中无法删除"); } } - public String resolveDownloadUrl(Long taskId, Long userId) { - BrandCrawlTaskEntity task = requireTask(taskId, userId); + public String resolveDownloadUrl(Long taskId) { + BrandCrawlTaskEntity task = requireTask(taskId); Object raw = parseJsonValue(task.getResultPaths()); if (!(raw instanceof Map map)) { throw new BusinessException("无结果可下载");