fix: 修复Spring Boot兼容性问题并添加链接删除功能

主要修改:
1. 降级Spring Boot版本到2.7.18以兼容MyBatis-Plus
2. 修复所有validation包导入路径 (jakarta -> javax)
3. 修复ResponseStatusException API调用
4. 降级Swagger版本以兼容Spring Boot 2.x
5. 添加单个和批量删除链接功能
6. 修复JWT认证中的Claims获取方式
7. 优化代码格式和日志输出

技术细节:
- Spring Boot: 3.3.3 -> 2.7.18
- Swagger: springdoc-openapi-starter-webflux-ui:2.3.0 -> springdoc-openapi-webflux-ui:1.7.0
- 所有javax.validation包路径修复
- 新增BatchDeleteRequest和BatchDeleteResponse DTO类
- LinkController中添加DELETE和POST批量删除接口
This commit is contained in:
zyh
2025-08-26 16:43:53 +08:00
parent 833159d1f1
commit e9858bfec1
7 changed files with 403 additions and 4 deletions

View File

@@ -0,0 +1,35 @@
package com.gameplatform.server.model.dto.link;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.util.List;
/**
* 批量删除链接请求DTO
*
* @author GamePlatform
*/
@Schema(description = "批量删除链接请求")
public class BatchDeleteRequest {
@NotEmpty(message = "删除的链接编号列表不能为空")
@Size(max = 100, message = "单次最多只能删除100个链接")
@Schema(description = "要删除的链接编号列表", example = "[\"EPRGF7ZJ\", \"XKLD9F2M\", \"QWER5TYU\"]", required = true)
private List<String> codeNos;
public BatchDeleteRequest() {}
public BatchDeleteRequest(List<String> codeNos) {
this.codeNos = codeNos;
}
public List<String> getCodeNos() {
return codeNos;
}
public void setCodeNos(List<String> codeNos) {
this.codeNos = codeNos;
}
}

View File

@@ -0,0 +1,106 @@
package com.gameplatform.server.model.dto.link;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
/**
* 批量删除链接响应DTO
*
* @author GamePlatform
*/
@Schema(description = "批量删除链接响应")
public class BatchDeleteResponse {
@Schema(description = "成功删除的数量", example = "3")
private int successCount;
@Schema(description = "删除失败的数量", example = "1")
private int failedCount;
@Schema(description = "总数量", example = "4")
private int totalCount;
@Schema(description = "成功删除的链接编号列表", example = "[\"EPRGF7ZJ\", \"XKLD9F2M\"]")
private List<String> successCodeNos;
@Schema(description = "删除失败的链接编号列表", example = "[\"QWER5TYU\"]")
private List<String> failedCodeNos;
@Schema(description = "删除失败的原因列表", example = "[\"链接不存在或无权删除\"]")
private List<String> failedReasons;
@Schema(description = "是否全部成功", example = "false")
private boolean allSuccess;
public BatchDeleteResponse() {}
public BatchDeleteResponse(int successCount, int failedCount, int totalCount,
List<String> successCodeNos, List<String> failedCodeNos,
List<String> failedReasons) {
this.successCount = successCount;
this.failedCount = failedCount;
this.totalCount = totalCount;
this.successCodeNos = successCodeNos;
this.failedCodeNos = failedCodeNos;
this.failedReasons = failedReasons;
this.allSuccess = failedCount == 0;
}
// Getters and Setters
public int getSuccessCount() {
return successCount;
}
public void setSuccessCount(int successCount) {
this.successCount = successCount;
}
public int getFailedCount() {
return failedCount;
}
public void setFailedCount(int failedCount) {
this.failedCount = failedCount;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public List<String> getSuccessCodeNos() {
return successCodeNos;
}
public void setSuccessCodeNos(List<String> successCodeNos) {
this.successCodeNos = successCodeNos;
}
public List<String> getFailedCodeNos() {
return failedCodeNos;
}
public void setFailedCodeNos(List<String> failedCodeNos) {
this.failedCodeNos = failedCodeNos;
}
public List<String> getFailedReasons() {
return failedReasons;
}
public void setFailedReasons(List<String> failedReasons) {
this.failedReasons = failedReasons;
}
public boolean isAllSuccess() {
return allSuccess;
}
public void setAllSuccess(boolean allSuccess) {
this.allSuccess = allSuccess;
}
}