package com.yh.saas.plugin.clouddisk.controller;

import com.baomidou.mybatisplus.plugins.Page;
import com.winsea.svc.base.security.util.AuthSecurityUtils;
import com.yh.saas.common.support.plugin.PluginFeature;
import com.yh.saas.plugin.clouddisk.entity.DataManagerFileInfo;
import com.yh.saas.plugin.clouddisk.service.IDataManagerFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 资料管理 文件 - Controller
 * </p>
 *
 * @author ZhangMingYu
 * @since 2019年11月6日19:32:38
 */

@RestController
@RequestMapping("/dataManagerFile")
public class DataManagerFileController {

    @Autowired
    private IDataManagerFileService dataManagerFileService;

    /**
     * 新增 - 文件
     *
     * @param dataManagerFileInfo 新增文件对象
     */
    @PostMapping("/api/saveFile")
    @PluginFeature(id = "DataManager-Manage", name = "资料管理_管理")
    public void saveFile(@RequestBody DataManagerFileInfo dataManagerFileInfo) {
        dataManagerFileService.saveFile(dataManagerFileInfo.getAppendixIds(), dataManagerFileInfo);
        dataManagerFileService.updateRedisCloudDiskSize(AuthSecurityUtils.getCurrentUserInfo().getCompId());
    }

    /**
     * 删除全部
     *
     * @param dataManagerFileInfos 文件夹集合(主键id集合)
     */
    @PostMapping("/api/removeAll")
    @PluginFeature(id = "DataManager-Manage", name = "资料管理_管理")
    public void removeAll(@RequestBody List<DataManagerFileInfo> dataManagerFileInfos) {
        dataManagerFileService.removeAll(dataManagerFileInfos);
        dataManagerFileService.updateRedisCloudDiskSize(AuthSecurityUtils.getCurrentUserInfo().getCompId());
    }

    /**
     * 分页查询
     *
     * @param dataManagerFileInfo 分页查询参数
     * @return 返回分页集合
     */
    @GetMapping("/query/findFileUnderFolder")
    @PluginFeature(id = "DataManager-Review", name = "资料管理_查看")
    public Page<DataManagerFileInfo> findFileUnderFolder(DataManagerFileInfo dataManagerFileInfo) {
        return dataManagerFileService.findFileUnderFolder(dataManagerFileInfo);

    }

    /**
     * 文件 - 批量下载
     *
     * @param fileUrls url地址
     * @param zipName  压缩包名称
     */
    @GetMapping("/down/file")
    @PluginFeature(id = "DataManager-Review", name = "资料管理_查看")
    public void downFile(@RequestParam List<String> fileUrls, @RequestParam String zipName) {
        dataManagerFileService.downFile(fileUrls, zipName);
    }

    /**
     * 文件 - 获取文件类型集合
     */
    @GetMapping("/query/findFileType")
    public List<String> findFileType(String compId) {
        return dataManagerFileService.findFileType(compId);
    }

    /**
     * 文件 - 重命名
     */
    @PostMapping("/api/fileRename")
    @PluginFeature(id = "DataManager-Manage", name = "资料管理_管理")
    public void fileRename(@RequestBody DataManagerFileInfo dataManagerFileInfo) {
        dataManagerFileService.fileRename(dataManagerFileInfo.getFileId(), dataManagerFileInfo.getFileName());
    }

    /**
     * 文件 - 移动文件夹
     */
    @PostMapping("/api/update")
    @PluginFeature(id = "DataManager-Manage", name = "资料管理_管理")
    public void transferFolder(@RequestBody DataManagerFileInfo dataManagerFileInfo) {
        dataManagerFileService.transferFolder(dataManagerFileInfo);
    }

    /**
     * 重置云盘大小
     */
    @PostMapping("/api/initCloudDisk")
    public void initCloudDisk(@RequestBody DataManagerFileInfo dataManagerFileInfo){
        dataManagerFileService.updateRedisCloudDiskSize(dataManagerFileInfo.getCompId());
    }
}
