Browse Source

fix(web): 修复简单类型入参缺参数名导致的接口500(系统繁忙)

- 根因: 离线重编译时 javac 漏加 -parameters,且 @PathVariable/@RequestParam 简单类型入参未显式命名,
  Spring 无法绑定路径变量 -> IllegalArgumentException -> 全局异常包成'系统繁忙'。
  仅影响简单类型入参接口(detail/delete/unrelate/操作日志),对象入参(page)不受影响,故列表正常、编辑报错。
- 修复: 给所有 @PathVariable Long id 显式命名 @PathVariable("id");
  @RequestParam 显式命名(OperationLog/unrelate);pom 增加 maven-compiler-plugin <parameters>true</parameters>。
- 已重新离线编译(javac -parameters)并重打包,后端 :8080 重启验证: GET /resource/{id} 由500转为200,
  项目详情/操作日志/unrelate 等同类型接口均恢复正常。
C 2 tháng trước cách đây
mục cha
commit
f6b79ba1cf

+ 9 - 0
backend/pom.xml

@@ -107,6 +107,15 @@
         <finalName>resource-platform</finalName>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <!-- 保留参数名,使 @PathVariable/@RequestParam 等简单类型入参在运行时可被 Spring 正确绑定
+                         (否则编译产物缺参数名信息,导致 detail/delete 等接口 IllegalArgumentException -> "系统繁忙") -->
+                    <parameters>true</parameters>
+                </configuration>
+            </plugin>
+            <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <configuration>

+ 7 - 7
backend/src/main/java/com/example/resourceplatform/controller/OperationLogController.java

@@ -23,13 +23,13 @@ public class OperationLogController {
 
     @GetMapping("/page")
     public Result<Page<OperationLog>> page(
-            @RequestParam(defaultValue = "1") int pageNum,
-            @RequestParam(defaultValue = "10") int pageSize,
-            @RequestParam(required = false) String module,
-            @RequestParam(required = false) String action,
-            @RequestParam(required = false) Long userId,
-            @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime,
-            @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
+            @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+            @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
+            @RequestParam(value = "module", required = false) String module,
+            @RequestParam(value = "action", required = false) String action,
+            @RequestParam(value = "userId", required = false) Long userId,
+            @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime,
+            @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         LambdaQueryWrapper<OperationLog> wrapper = new LambdaQueryWrapper<OperationLog>()
                 .like(module != null && !module.isBlank(), OperationLog::getModule, module)
                 .like(action != null && !action.isBlank(), OperationLog::getAction, action)

+ 2 - 2
backend/src/main/java/com/example/resourceplatform/controller/ProjectController.java

@@ -26,7 +26,7 @@ public class ProjectController {
     }
 
     @GetMapping("/{id}")
-    public Result<ProjectVO> detail(@PathVariable Long id) {
+    public Result<ProjectVO> detail(@PathVariable("id") Long id) {
         return Result.success(projectService.getDetail(id));
     }
 
@@ -37,7 +37,7 @@ public class ProjectController {
     }
 
     @DeleteMapping("/{id}")
-    public Result<Void> delete(@PathVariable Long id) {
+    public Result<Void> delete(@PathVariable("id") Long id) {
         projectService.delete(id);
         return Result.success();
     }

+ 1 - 1
backend/src/main/java/com/example/resourceplatform/controller/ProviderController.java

@@ -32,7 +32,7 @@ public class ProviderController {
     }
 
     @DeleteMapping("/{id}")
-    public Result<Void> delete(@PathVariable Long id) {
+    public Result<Void> delete(@PathVariable("id") Long id) {
         long count = resourceMapper.selectCount(
                 new LambdaQueryWrapper<Resource>().eq(Resource::getProviderId, id));
         if (count > 0) {

+ 3 - 3
backend/src/main/java/com/example/resourceplatform/controller/ResourceController.java

@@ -28,7 +28,7 @@ public class ResourceController {
     }
 
     @GetMapping("/{id}")
-    public Result<ResourceVO> detail(@PathVariable Long id) {
+    public Result<ResourceVO> detail(@PathVariable("id") Long id) {
         return Result.success(resourceService.getDetail(id));
     }
 
@@ -39,7 +39,7 @@ public class ResourceController {
     }
 
     @DeleteMapping("/{id}")
-    public Result<Void> delete(@PathVariable Long id) {
+    public Result<Void> delete(@PathVariable("id") Long id) {
         resourceService.delete(id);
         return Result.success();
     }
@@ -52,7 +52,7 @@ public class ResourceController {
     }
 
     @DeleteMapping("/unrelate")
-    public Result<Void> unrelate(@RequestParam Long projectId, @RequestParam Long resourceId) {
+    public Result<Void> unrelate(@RequestParam("projectId") Long projectId, @RequestParam("resourceId") Long resourceId) {
         resourceService.unrelate(projectId, resourceId);
         return Result.success();
     }

+ 1 - 1
backend/src/main/java/com/example/resourceplatform/controller/ResourceTypeController.java

@@ -32,7 +32,7 @@ public class ResourceTypeController {
     }
 
     @DeleteMapping("/{id}")
-    public Result<Void> delete(@PathVariable Long id) {
+    public Result<Void> delete(@PathVariable("id") Long id) {
         long count = resourceMapper.selectCount(
                 new LambdaQueryWrapper<Resource>().eq(Resource::getTypeId, id));
         if (count > 0) {

+ 1 - 1
backend/src/main/java/com/example/resourceplatform/controller/UserController.java

@@ -38,7 +38,7 @@ public class UserController {
     }
 
     @DeleteMapping("/{id}")
-    public Result<Void> delete(@PathVariable Long id) {
+    public Result<Void> delete(@PathVariable("id") Long id) {
         sysUserService.deleteUser(id);
         return Result.success();
     }