package org.dromara.app.controller;

import org.dromara.common.core.domain.R;
import org.dromara.wflow.bean.vo.FileResourceVo;
import org.dromara.wflow.service.FileManagerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 文件管理服务
 *
 * @author : willian fu
 * @date : 2022/9/7
 */
@RestController
@RequestMapping("app/wflow/res")
public class FileManagerControllerApp {

    @Qualifier("minioFileManagerServiceImpl")
    @Autowired
    private FileManagerService fileManagerService;

    /**
     * 上传文件/图片
     *
     * @param file   文件流
     * @param isImg  是否为图片
     * @param isSign 是否为签名，签名的话单独一个文件夹存
     * @return 上传结果
     * @throws IOException
     */
    @PostMapping
    public R<FileResourceVo> uploadFile(MultipartFile file,
                                        @RequestParam(defaultValue = "false") Boolean isImg,
                                        @RequestParam(defaultValue = "false") Boolean isSign) throws IOException {
        return R.ok(fileManagerService.uploadFile(file, isImg, isSign));
    }

    /**
     * 通过文件ID删除文件
     * 文件ID格式为 文件md5取中间16位 + 文件后缀
     * @param fileId 文件ID
     * @param isSign 是否为签名，签名的话单独一个文件夹存
     * @return response
     */
    @DeleteMapping("{fileId}")
    public R<Void> delFileById(@PathVariable String fileId,
                              @RequestParam(defaultValue = "false") Boolean isSign){
        fileManagerService.delFileById(fileId, isSign);
        return R.ok("操作成功");
    }
}
