提交代码

This commit is contained in:
liu
2026-01-29 18:26:02 +08:00
parent 981b4ecf42
commit 7531b6c466
47 changed files with 7257 additions and 16 deletions

View File

@@ -0,0 +1,72 @@
package com.music.controller;
import com.music.common.Result;
import com.music.dto.DedupRequest;
import com.music.exception.BusinessException;
import com.music.service.DedupService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.UUID;
/**
* 音乐去重任务控制器
*/
@RestController
@RequestMapping("/api/dedup")
@Validated
public class DedupController {
private final DedupService dedupService;
public DedupController(DedupService dedupService) {
this.dedupService = dedupService;
}
/**
* 启动音乐去重任务
*/
@PostMapping("/start")
public Result<StartResponse> start(@Valid @RequestBody DedupRequest request) {
// 模式校验
if (!"copy".equalsIgnoreCase(request.getMode()) &&
!"move".equalsIgnoreCase(request.getMode())) {
throw new BusinessException(400, "模式参数错误,必须是 copy 或 move");
}
// 至少启用一种策略
if (!request.isUseMd5() && !request.isUseMetadata()) {
throw new BusinessException(400, "至少需要启用一种去重策略MD5 或元数据匹配)");
}
String taskId = UUID.randomUUID().toString();
dedupService.dedup(
taskId,
request.getLibraryDir(),
request.getTrashDir(),
request.isUseMd5(),
request.isUseMetadata(),
request.getMode()
);
return Result.success(new StartResponse(taskId));
}
public static class StartResponse {
private String taskId;
public StartResponse(String taskId) {
this.taskId = taskId;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
}
}