package com.labelsys.backend.controller; import com.labelsys.backend.common.Result; import com.labelsys.backend.context.UserContext; import com.labelsys.backend.dto.common.PageResult; import com.labelsys.backend.dto.request.SourceResourcePageQuery; import com.labelsys.backend.dto.request.SourceUploadRequest; import com.labelsys.backend.dto.response.SourceResourceResponse; import com.labelsys.backend.dto.response.SourceUploadResponse; import com.labelsys.backend.service.SourceResourceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Tag(name = "资源管理") @RestController @RequestMapping("/api/source-resources") @RequiredArgsConstructor public class SourceResourceController { private final SourceResourceService sourceResourceService; @Operation(summary = "上传资源") @PostMapping("/upload") public Result upload(@ModelAttribute SourceUploadRequest request) { return Result.success(sourceResourceService.upload(UserContext.requireUser(), request)); } @Operation(summary = "分页查询资源") @GetMapping public Result> page(SourceResourcePageQuery query) { return Result.success(sourceResourceService.pageResources(UserContext.requireUser(), query)); } @Operation(summary = "查询资源详情") @GetMapping("/{id}") public Result detail(@PathVariable Long id) { return Result.success(sourceResourceService.getResource(UserContext.requireUser(), id)); } @Operation(summary = "删除资源") @DeleteMapping("/{id}") public Result delete(@PathVariable Long id) { sourceResourceService.deleteResource(UserContext.requireUser(), id); return Result.success(); } }