|
|
|
@ -15,7 +15,7 @@ import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
import org.springframework.web.bind.annotation.PathPathVariable;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
@ -35,35 +35,45 @@ import com.tamguo.modules.book.service.IFileEntityService;
|
|
|
|
|
import com.tamguo.modules.book.service.IFileUploadService;
|
|
|
|
|
import com.tamguo.utils.FileMd5Utils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* DocumentController 类,处理文档相关的请求
|
|
|
|
|
*/
|
|
|
|
|
@Controller
|
|
|
|
|
@RequestMapping(value="document")
|
|
|
|
|
@RequestMapping(value = "document")
|
|
|
|
|
public class DocumentController {
|
|
|
|
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass()); // 创建日志记录器对象
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
IDocumentService iDocumentService;
|
|
|
|
|
IDocumentService iDocumentService; // 自动注入文档服务
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
IFileEntityService iFileEntityService;
|
|
|
|
|
IFileEntityService iFileEntityService; // 自动注入文件实体服务
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
IFileUploadService iFileUploadService;
|
|
|
|
|
|
|
|
|
|
IFileUploadService iFileUploadService; // 自动注入文件上传服务
|
|
|
|
|
|
|
|
|
|
@Value("${file.storage.path}")
|
|
|
|
|
private String fileStoragePath;
|
|
|
|
|
private String fileStoragePath; // 文件存储路径配置
|
|
|
|
|
|
|
|
|
|
@Value("${tamguo.domain.name}")
|
|
|
|
|
private String domainName;
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(value = "{id}" , method = RequestMethod.GET)
|
|
|
|
|
private String domainName; // 域名配置
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取文档信息的请求处理
|
|
|
|
|
* @param id 文档 ID
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "{id}", method = RequestMethod.GET)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result getDocument(@PathVariable String id) {
|
|
|
|
|
DocumentEntity document = null;
|
|
|
|
|
DocumentEntity document = null; // 定义文档对象
|
|
|
|
|
try {
|
|
|
|
|
document = iDocumentService.selectById(id);
|
|
|
|
|
document = iDocumentService.selectById(id); // 根据 ID 获取文档信息
|
|
|
|
|
// 查询附件
|
|
|
|
|
List<FileUploadEntity> fileUploads = iFileUploadService.selectList(Condition.create().eq("biz_key", document.getId()).eq("biz_type", BizTypeEnum.DOCUMENT.getValue()));
|
|
|
|
|
if(!CollectionUtils.isEmpty(fileUploads)) {
|
|
|
|
|
for(int i=0 ; i<fileUploads.size() ; i++) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(fileUploads)) {
|
|
|
|
|
for (int i = 0; i < fileUploads.size(); i++) {
|
|
|
|
|
FileUploadEntity fileUpload = fileUploads.get(i);
|
|
|
|
|
FileEntity fileEntity = iFileEntityService.selectOne(Condition.create().eq("file_id", fileUpload.getFileId()));
|
|
|
|
|
fileUpload.setFilePath(domainName + "files/" + fileEntity.getFilePath());
|
|
|
|
@ -72,152 +82,172 @@ public class DocumentController {
|
|
|
|
|
document.setFileUploads(fileUploads);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error(e.getMessage() , e );
|
|
|
|
|
return Result.failResult("查询失败");
|
|
|
|
|
logger.error(e.getMessage(), e); // 记录错误日志
|
|
|
|
|
return Result.failResult("查询失败"); // 返回查询失败结果
|
|
|
|
|
}
|
|
|
|
|
return Result.successResult(document);
|
|
|
|
|
return Result.successResult(document); // 返回查询成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 编辑内容
|
|
|
|
|
* 编辑文档内容的请求处理
|
|
|
|
|
* @param document 文档对象
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "modify" , method = RequestMethod.POST)
|
|
|
|
|
@RequestMapping(value = "modify", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result modify(DocumentEntity document) {
|
|
|
|
|
try {
|
|
|
|
|
iDocumentService.modify(document);
|
|
|
|
|
iDocumentService.modify(document); // 修改文档内容
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error(e.getMessage() , e );
|
|
|
|
|
return Result.failResult("保存失败");
|
|
|
|
|
logger.error(e.getMessage(), e); // 记录错误日志
|
|
|
|
|
return Result.failResult("保存失败"); // 返回保存失败结果
|
|
|
|
|
}
|
|
|
|
|
return Result.successResult("保存成功");
|
|
|
|
|
return Result.successResult("保存成功"); // 返回保存成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建文档
|
|
|
|
|
* 创建文档的请求处理
|
|
|
|
|
* @param document 文档对象
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "create" , method = RequestMethod.POST)
|
|
|
|
|
@RequestMapping(value = "create", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result create(DocumentEntity document) {
|
|
|
|
|
try {
|
|
|
|
|
iDocumentService.create(document);
|
|
|
|
|
iDocumentService.create(document); // 创建文档
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error(e.getMessage() , e );
|
|
|
|
|
return Result.failResult("保存失败");
|
|
|
|
|
logger.error(e.getMessage(), e); // 记录错误日志
|
|
|
|
|
return Result.failResult("保存失败"); // 返回保存失败结果
|
|
|
|
|
}
|
|
|
|
|
return Result.successResult(document);
|
|
|
|
|
return Result.successResult(document); // 返回保存成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(value = "uploadImage" , method = RequestMethod.POST)
|
|
|
|
|
/**
|
|
|
|
|
* 上传图片的请求处理
|
|
|
|
|
* @param file 图片文件
|
|
|
|
|
* @param bookId 图书 ID
|
|
|
|
|
* @param request HTTP 请求对象
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "uploadImage", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result uploadImage(@RequestParam("editormd-image-file") MultipartFile file, String bookId , HttpServletRequest request) {
|
|
|
|
|
public Result uploadImage(@RequestParam("editormd-image-file") MultipartFile file, String bookId, HttpServletRequest request) {
|
|
|
|
|
try {
|
|
|
|
|
String fileMd5 = FileMd5Utils.getMD5((FileInputStream)file.getInputStream());
|
|
|
|
|
FileEntity sysFile = iFileEntityService.selectOne(Condition.create().eq("file_md5", fileMd5));
|
|
|
|
|
if(sysFile != null) {
|
|
|
|
|
String fileMd5 = FileMd5Utils.getMD5((FileInputStream) file.getInputStream()); // 获取文件的 MD5 值
|
|
|
|
|
FileEntity sysFile = iFileEntityService.selectOne(Condition.create().eq("file_md5", fileMd5)); // 根据 MD5 值查询系统文件
|
|
|
|
|
if (sysFile!= null) {
|
|
|
|
|
sysFile.setFilePath(domainName + "files/" + sysFile.getFilePath());
|
|
|
|
|
return Result.successResult(sysFile);
|
|
|
|
|
return Result.successResult(sysFile); // 如果文件已存在,直接返回文件信息
|
|
|
|
|
}
|
|
|
|
|
String filePath = fileStoragePath + "book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId;
|
|
|
|
|
String filePath = fileStoragePath + "book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId; // 生成文件存储路径
|
|
|
|
|
File dest = new File(filePath);
|
|
|
|
|
if(!dest.exists()) {
|
|
|
|
|
dest.mkdirs();
|
|
|
|
|
if (!dest.exists()) {
|
|
|
|
|
dest.mkdirs(); // 创建存储目录
|
|
|
|
|
}
|
|
|
|
|
// save 文件
|
|
|
|
|
FileUtils.writeByteArrayToFile(new File(filePath + "/" + file.getOriginalFilename()) , file.getBytes());
|
|
|
|
|
|
|
|
|
|
FileEntity fileEntity = new FileEntity();
|
|
|
|
|
fileEntity.setFileContentType(file.getContentType());
|
|
|
|
|
fileEntity.setFileExtension(file.getOriginalFilename());
|
|
|
|
|
fileEntity.setFileMd5(FileMd5Utils.getMD5((FileInputStream)file.getInputStream()));
|
|
|
|
|
fileEntity.setFileSize(file.getSize());
|
|
|
|
|
fileEntity.setFilePath("book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId + "/" + file.getOriginalFilename());
|
|
|
|
|
iFileEntityService.insert(fileEntity);
|
|
|
|
|
|
|
|
|
|
fileEntity.setFilePath(domainName + "files/" + fileEntity.getFilePath());
|
|
|
|
|
|
|
|
|
|
return Result.successResult(fileEntity);
|
|
|
|
|
FileUtils.writeByteArrayToFile(new File(filePath + "/" + file.getOriginalFilename()), file.getBytes()); // 保存文件
|
|
|
|
|
FileEntity fileEntity = new FileEntity(); // 创建文件实体对象
|
|
|
|
|
fileEntity.setFileContentType(file.getContentType()); // 设置文件类型
|
|
|
|
|
fileEntity.setFileExtension(file.getOriginalFilename()); // 设置文件扩展名
|
|
|
|
|
fileEntity.setFileMd5(FileMd5Utils.getMD5((FileInputStream) file.getInputStream())); // 设置文件 MD5 值
|
|
|
|
|
fileEntity.setFileSize(file.getSize()); // 设置文件大小
|
|
|
|
|
fileEntity.setFilePath("book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId + "/" + file.getOriginalFilename()); // 设置文件路径
|
|
|
|
|
iFileEntityService.insert(fileEntity); // 插入文件实体到数据库
|
|
|
|
|
|
|
|
|
|
fileEntity.setFilePath(domainName + "files/" + fileEntity.getFilePath()); // 设置文件路径
|
|
|
|
|
|
|
|
|
|
return Result.successResult(fileEntity); // 返回文件信息
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return Result.failResult("上传失败");
|
|
|
|
|
return Result.failResult("上传失败"); // 如果上传失败,返回失败结果
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 上传附件
|
|
|
|
|
* 上传附件的请求处理
|
|
|
|
|
* @param file 附件文件
|
|
|
|
|
* @param documentId 文档 ID
|
|
|
|
|
* @param bookId 图书 ID
|
|
|
|
|
* @param request HTTP 请求对象
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(value = "uploadFile" , method = RequestMethod.POST)
|
|
|
|
|
@RequestMapping(value = "uploadFile", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result uploadFile(@RequestParam("editormd-file-file") MultipartFile file , String documentId , String bookId , HttpServletRequest request) {
|
|
|
|
|
public Result uploadFile(@RequestParam("editormd-file-file") MultipartFile file, String documentId, String bookId, HttpServletRequest request) {
|
|
|
|
|
try {
|
|
|
|
|
String fileMd5 = FileMd5Utils.getMD5((FileInputStream)file.getInputStream());
|
|
|
|
|
FileEntity sysFile = iFileEntityService.selectOne(Condition.create().eq("file_md5", fileMd5));
|
|
|
|
|
String fileMd5 = FileMd5Utils.getMD5((FileInputStream) file.getInputStream()); // 获取文件的 MD5 值
|
|
|
|
|
FileEntity sysFile = iFileEntityService.selectOne(Condition.create().eq("file_md5", fileMd5)); // 根据 MD5 值查询系统文件
|
|
|
|
|
// 文件不存在
|
|
|
|
|
if(sysFile == null) {
|
|
|
|
|
String filePath = fileStoragePath + "book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId;
|
|
|
|
|
if (sysFile == null) {
|
|
|
|
|
String filePath = fileStoragePath + "book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId; // 生成文件存储路径
|
|
|
|
|
File dest = new File(filePath);
|
|
|
|
|
if(!dest.exists()) {
|
|
|
|
|
dest.mkdirs();
|
|
|
|
|
if (!dest.exists()) {
|
|
|
|
|
dest.mkdirs(); // 创建存储目录
|
|
|
|
|
}
|
|
|
|
|
// save 文件
|
|
|
|
|
FileUtils.writeByteArrayToFile(new File(filePath + "/" + file.getOriginalFilename()) , file.getBytes());
|
|
|
|
|
sysFile = new FileEntity();
|
|
|
|
|
sysFile.setFileContentType(file.getContentType());
|
|
|
|
|
sysFile.setFileExtension(file.getOriginalFilename());
|
|
|
|
|
sysFile.setFileMd5(FileMd5Utils.getMD5((FileInputStream)file.getInputStream()));
|
|
|
|
|
sysFile.setFileSize(file.getSize());
|
|
|
|
|
sysFile.setFilePath("book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId + "/" + file.getOriginalFilename());
|
|
|
|
|
iFileEntityService.insert(sysFile);
|
|
|
|
|
FileUtils.writeByteArrayToFile(new File(filePath + "/" + file.getOriginalFilename()), file.getBytes()); // 保存文件
|
|
|
|
|
sysFile = new FileEntity(); // 创建文件实体对象
|
|
|
|
|
sysFile.setFileContentType(file.getContentType()); // 设置文件类型
|
|
|
|
|
sysFile.setFileExtension(file.getOriginalFilename()); // 设置文件扩展名
|
|
|
|
|
sysFile.setFileMd5(FileMd5Utils.getMD5((FileInputStream) file.getInputStream())); // 设置文件 MD5 值
|
|
|
|
|
sysFile.setFileSize(file.getSize()); // 设置文件大小
|
|
|
|
|
sysFile.setFilePath("book/" + DateUtil.fomatDate(new Date(), "yyyyMM") + "/" + bookId + "/" + file.getOriginalFilename()); // 设置文件路径
|
|
|
|
|
iFileEntityService.insert(sysFile); // 插入文件实体到数据库
|
|
|
|
|
}
|
|
|
|
|
// 创建上传记录
|
|
|
|
|
FileUploadEntity fileUpload = new FileUploadEntity();
|
|
|
|
|
fileUpload.setBizKey(documentId);
|
|
|
|
|
fileUpload.setBizType(BizTypeEnum.DOCUMENT);
|
|
|
|
|
fileUpload.setCreateBy("system");
|
|
|
|
|
fileUpload.setCreateDate(new Date());
|
|
|
|
|
fileUpload.setFileId(sysFile.getFileId());
|
|
|
|
|
fileUpload.setFileName(sysFile.getFileExtension());
|
|
|
|
|
fileUpload.setFileType(file.getContentType());
|
|
|
|
|
fileUpload.setUpdateBy("system");
|
|
|
|
|
fileUpload.setUpdateDate(new Date());
|
|
|
|
|
fileUpload.setStatus(FileUploadStatusEnum.NORMAL);
|
|
|
|
|
iFileUploadService.insert(fileUpload);
|
|
|
|
|
|
|
|
|
|
fileUpload.setFilePath(domainName + "files/" + sysFile.getFilePath());
|
|
|
|
|
fileUpload.setFileSize(sysFile.getFileSize());
|
|
|
|
|
return Result.successResult(fileUpload);
|
|
|
|
|
FileUploadEntity fileUpload = new FileUploadEntity(); // 创建文件上传记录对象
|
|
|
|
|
fileUpload.setBizKey(documentId); // 设置业务键
|
|
|
|
|
fileUpload.setBizType(BizTypeEnum.DOCUMENT); // 设置业务类型
|
|
|
|
|
fileUpload.setCreateBy("system"); // 设置创建者
|
|
|
|
|
fileUpload.setCreateDate(new Date()); // 设置创建日期
|
|
|
|
|
fileUpload.setFileId(sysFile.getFileId()); // 设置文件 ID
|
|
|
|
|
fileUpload.setFileName(sysFile.getFileExtension()); // 设置文件名称
|
|
|
|
|
fileUpload.setFileType(file.getContentType()); // 设置文件类型
|
|
|
|
|
fileUpload.setUpdateBy("system"); // 设置更新者
|
|
|
|
|
fileUpload.setUpdateDate(new Date()); // 设置更新日期
|
|
|
|
|
fileUpload.setStatus(FileUploadStatusEnum.NORMAL); // 设置状态为正常
|
|
|
|
|
iFileUploadService.insert(fileUpload); // 插入文件上传记录到数据库
|
|
|
|
|
|
|
|
|
|
fileUpload.setFilePath(domainName + "files/" + sysFile.getFilePath()); // 设置文件路径
|
|
|
|
|
fileUpload.setFileSize(sysFile.getFileSize()); // 设置文件大小
|
|
|
|
|
|
|
|
|
|
return Result.successResult(fileUpload); // 返回文件上传记录信息
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
return Result.failResult("上传失败");
|
|
|
|
|
return Result.failResult("上传失败"); // 如果上传失败,返回失败结果
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 移除文件
|
|
|
|
|
* 移除文件的请求处理
|
|
|
|
|
* @param id 文件上传记录 ID
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "removeFile" , method = RequestMethod.POST)
|
|
|
|
|
@RequestMapping(value = "removeFile", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result removeFile(String id) {
|
|
|
|
|
try {
|
|
|
|
|
iFileUploadService.deleteById(id);
|
|
|
|
|
iFileUploadService.deleteById(id); // 根据 ID 删除文件上传记录
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return Result.result(1, null, "删除失败");
|
|
|
|
|
return Result.result(1, null, "删除失败"); // 如果删除失败,返回失败结果
|
|
|
|
|
}
|
|
|
|
|
return Result.result(0, null, "删除成功");
|
|
|
|
|
return Result.result(0, null, "删除成功"); // 如果删除成功,返回成功结果
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
@RequestMapping(value="delete" , method = RequestMethod.POST)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除文档的请求处理
|
|
|
|
|
* @param id 文档 ID
|
|
|
|
|
* @return 返回处理结果
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "delete", method = RequestMethod.POST)
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result delete(String id) {
|
|
|
|
|
try {
|
|
|
|
|
DocumentEntity document = iDocumentService.selectById(id);
|
|
|
|
|
iDocumentService.delete(Condition.create().eq("batch_no", document.getBatchNo()));
|
|
|
|
|
DocumentEntity document = iDocumentService.selectById(id); // 根据 ID 获取文档信息
|
|
|
|
|
iDocumentService.delete(Condition.create().eq("batch_no", document.getBatchNo())); // 根据批次号删除文档
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
return Result.result(1, null, "删除失败");
|
|
|
|
|
return Result.result(1, null, "删除失败"); // 如果删除失败,返回失败结果
|
|
|
|
|
}
|
|
|
|
|
return Result.result(0, null, "删除成功");
|
|
|
|
|
return Result.result(0, null, "删除成功"); // 如果删除成功,返回成功结果
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|