package api import ( "net/http" "github.com/gin-gonic/gin" "kenaito-media-picker/internal/service" ) // ScanController 扫描整理接口 type ScanController struct { service *service.ScanService } // NewScanController 创建扫描控制器 func NewScanController(svc *service.ScanService) *ScanController { return &ScanController{service: svc} } // scanStartReq 扫描启动请求;dir 为空时使用服务当前运行目录,destDir 为空时默认输出到扫描目录下的「KMP已整理」 type scanStartReq struct { Dir string `json:"dir"` DestDir string `json:"destDir"` } // Start POST /api/scan/start 触发一次扫描整理 func (c *ScanController) Start(ctx *gin.Context) { var req scanStartReq if err := ctx.ShouldBindJSON(&req); err != nil { Error(ctx, http.StatusBadRequest, "请求参数错误:"+err.Error()) return } if err := c.service.Start(req.Dir, req.DestDir); err != nil { Error(ctx, http.StatusBadRequest, err.Error()) return } Success(ctx, c.service.Status()) } // Status GET /api/scan/status 查询扫描状态与日志 func (c *ScanController) Status(ctx *gin.Context) { Success(ctx, c.service.Status()) }