package com.caimei.controller.admin.data; import com.alibaba.fastjson.JSONObject; import com.caimei.annotation.CurrentUser; import com.caimei.model.ResponseJson; import com.caimei.model.po.SysUser; import com.caimei.model.vo.FileTreeVo; import com.caimei.service.data.DatabaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; /** * @author zzj */ @Api(tags = "资料库Api") @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/database") public class DatabaseApi { private final DatabaseService databaseService; @ApiOperation("获取当前路径下文件") @ApiImplicitParam(name = "fileId", required = true, value = "文件Id") @GetMapping("/path/file") public ResponseJson> getFileById(@CurrentUser SysUser sysUser, Integer fileId) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return databaseService.getFileById(fileId, authUserId); } @ApiOperation("获取文件详情") @ApiImplicitParam(name = "fileId", required = true, value = "文件Id") @GetMapping("/file/detail") public ResponseJson getFileDetail(@CurrentUser SysUser sysUser, Integer fileId) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return databaseService.getFileDetail(fileId, authUserId); } @ApiOperation("面包屑") @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id") @GetMapping("/path/crumbs") public ResponseJson getCrumbs(@CurrentUser SysUser sysUser, Integer fileId) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return databaseService.getCrumbs(fileId, authUserId); } @ApiOperation("创建文件夹") @ApiImplicitParams({ @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"), @ApiImplicitParam(name = "fileName", required = true, value = "文件夹名称") }) @PostMapping("/path/package") public ResponseJson createPackage(@CurrentUser SysUser sysUser, @RequestBody String param) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } JSONObject jsonObject = JSONObject.parseObject(param); Integer fileId = jsonObject.getInteger("fileId"); String fileName = jsonObject.getString("fileName"); return databaseService.createPackage(authUserId, fileId, fileName); } @ApiOperation("修改文件/文件夹名") @ApiImplicitParams({ @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"), @ApiImplicitParam(name = "fileName", required = true, value = "修改的文件名称"), @ApiImplicitParam(name = "packageType", required = true, value = "0是文件夹,1是文件") }) @PostMapping("/update/fileName") public ResponseJson updatePackage(@RequestBody String params) { JSONObject parseObject = JSONObject.parseObject(params); Integer fileId = parseObject.getInteger("fileId"); String fileName = parseObject.getString("fileName"); Integer packageType = parseObject.getInteger("packageType"); return databaseService.updatePackage(fileId, fileName, packageType); } @ApiOperation("移动文件") @ApiImplicitParams({ @ApiImplicitParam(name = "fileId", required = true, value = "当前文件Id"), @ApiImplicitParam(name = "parentId", required = true, value = "目标文件夹Id") }) @PostMapping("/move/package") public ResponseJson movePackage(@RequestBody String param) { JSONObject jsonObject = JSONObject.parseObject(param); String fileId = jsonObject.getString("fileId"); Integer parentId = jsonObject.getInteger("parentId"); return databaseService.movePackage(fileId, parentId); } @ApiOperation("文件夹目录") @GetMapping("/file/tree") public ResponseJson getPackageTree(@CurrentUser SysUser sysUser) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return databaseService.getPackageTree(authUserId); } @ApiOperation("下载文件夹") @ApiImplicitParams({ @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"), @ApiImplicitParam(name = "fileName", required = true, value = "文件夹名称") }) @GetMapping("/path/package/zip") public ResponseJson downLoadPackageZip(@CurrentUser SysUser sysUser, Integer fileId, String fileName, HttpServletResponse response) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return databaseService.downLoadZip(fileId, fileName, authUserId, response); } @ApiOperation("勾选文件下载") @ApiImplicitParams({ @ApiImplicitParam(name = "fileId", required = true, value = "勾选文件Id,逗号分隔") }) @GetMapping("/path/chose/zip") public ResponseJson downLoadChoseZip(@CurrentUser SysUser sysUser, String fileId, HttpServletResponse response) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return databaseService.downLoadChoseZip(fileId, authUserId, response); } @ApiOperation("删除文件") @ApiImplicitParam(name = "fileId", required = true, value = "当前文件Id") @PostMapping("/delete/file") public ResponseJson deleteFiles(@RequestBody String fileId) { JSONObject jsonObject = JSONObject.parseObject(fileId); String fil = jsonObject.getString("fileId"); return databaseService.deleteFiles(fil); } @ApiOperation("上传结果") @ApiImplicitParam(name = "params", required = true, value = "fileName:文件原名;ossName:阿里云文件名:ossUrl:阿里云文件url;fileSize:文件大小;parentId:父级文件夹id;mime:文件application") @PostMapping("/oss/upload/result") public ResponseJson getOssUploadResult(@CurrentUser SysUser sysUser, @RequestBody String params) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } JSONObject parseObject = JSONObject.parseObject(params); String fileName = parseObject.getString("fileName"); String ossName = parseObject.getString("ossName"); String ossUrl = parseObject.getString("ossUrl"); String fileSize = parseObject.getString("fileSize"); Integer parentId = parseObject.getInteger("parentId"); String mime = parseObject.getString("mime"); return databaseService.getOssUploadResult(authUserId, fileName, ossName, ossUrl, fileSize, parentId,mime); } @ApiOperation("获取阿里云token") @GetMapping("/oss/token") public ResponseJson> ossTokenGet() { return databaseService.ossTokenGet(); } /** * 上传文件夹 * @param multipartFiles * @return * @throws IOException */ @PostMapping("/upload/dictionary") public ResponseJson uploadDictionary(@RequestParam("file")MultipartFile[] multipartFiles) throws IOException { // for (MultipartFile f: multipartFiles) { // //如果是文件夹,创建该文件夹并获取文件夹所有文件 // String name=""; // File file1; // if (f instanceof CommonsMultipartFile) { // // //转换成这个对象,然后我们需要通过里面的FileItem来获得相对路径 // // CommonsMultipartFile f2 = (CommonsMultipartFile) f; // // name = f2.getName(); // // System.out.println(name + " ---------相对路径"); // // file1 = new File("e:" + "/" + name); // // file1.mkdirs(); // // file1.createNewFile(); // // f.transferTo(file1); // // } // System.out.println(f.getOriginalFilename() + " iii --------"); // //如果是文件,直接添加 // // } databaseService.uploadDictionary(multipartFiles); return ResponseJson.success(); } @PostMapping("/upload/dictionary") public ResponseJson uploadPackage(@CurrentUser SysUser sysUser,@RequestBody String params){ if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } JSONObject parseObject = JSONObject.parseObject(params); String fileName = parseObject.getString("fileName"); String ossName = parseObject.getString("ossName"); String ossUrl = parseObject.getString("ossUrl"); String fileSize = parseObject.getString("fileSize"); Integer parentId = parseObject.getInteger("parentId"); String mime = parseObject.getString("mime"); String filePath=parseObject.getString("filePath"); return databaseService.uploadPackage(authUserId, fileName, ossName, ossUrl, fileSize, parentId,mime,filePath); } }