package com.ycwl.basic.controller;


import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.enums.BizCodeEnum;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;

/**
 * @Author: songmingsong
 * @CreateTime: 2024-12-05
 * @Description: 文件接口
 * @Version: 1.0
 */
@RestController
@RequestMapping("/api/file/v1")
@Slf4j
@Api(tags = "文件接口")
public class FileController {

    @ApiOperation(value = "上传文件")
    @PostMapping("/upload")
    @IgnoreToken
    public ApiResponse<?> upload(@RequestParam(value = "file") MultipartFile file) throws IOException {
        String[] split = file.getOriginalFilename().split("\\.");
        String ext = split[split.length - 1];
        String url = StorageFactory.use().uploadFile(file, "web", UUID.randomUUID() + "." + ext);
        return ApiResponse.success(url);
    }

    @ApiOperation(value = "删除文件")
    @PostMapping("/delete")
    @IgnoreToken
    public ApiResponse<?> delete(@RequestParam(value = "fileName") String fileName) throws IOException {
        boolean flag = StorageFactory.use().deleteFile("web", fileName);
        return flag ? ApiResponse.success(BizCodeEnum.REQUEST_OK) : ApiResponse.fail(BizCodeEnum.FAIL.getMessage());
    }
}