提交 078f1b0b authored 作者: chaoyanjun's avatar chaoyanjun

--no commit message

上级 601ee9c4
package com.zrqx.file.util;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.context.ApplicationContext;
import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.model.file.FileInfo;
import com.zrqx.core.model.resource.articlelibrary.ArticleLibrary;
import com.zrqx.core.model.resource.articlelibrary.ChapterLibrary;
import com.zrqx.core.model.resource.ebook.Book;
import com.zrqx.core.model.resource.ebook.Ebook;
import com.zrqx.core.model.resource.imagelibrary.ImageLibrary;
import com.zrqx.core.util.datatype.UUIDUtil;
import com.zrqx.core.vo.resource.EpubVo;
import com.zrqx.file.service.FileService;
import nl.siegmann.epublib.domain.TOCReference;
public class BookUtil {
ApplicationContext appCtx = SpringUtil.getApplicationContext();
public FileService service = appCtx.getBean(FileService.class);
private EpubVo ev = new EpubVo();
public EpubVo getBaseInformation(String rootPath, MultipartFile file) throws Exception {
// 获取原文件的全名称
String originalFilename = file.getOriginalFilename();
System.out.println(file.getContentType());
// 源文件的名称,不带后缀
String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
FileInfo fileInfo = new FileInfo();
fileInfo.setOriginalFileName(originalFilename);
System.out.println("---------------------"+fileInfo);
int count = service.selectCount(fileInfo);
/*if (count > 0) {
throw new BaseException("epub已存在");
}*/
Ebook ebook = new Ebook();
Book book = new Book();
// epub工具类
EpubUtil epubUtil = new EpubUtil();
// epub解析方法类
EpubResolve er = new EpubResolve();
FileInfo entity = er.uploadFile(file, rootPath , fileName);
if (!service.insert(entity)) {
throw new BaseException("上传失败!");
} else {
String path = entity.getPath();
// 载入电子书资源
epubUtil.setEpubFile(file.getInputStream());
ev.setBook(book);
ev.setEbook(ebook);
/*ev.setBookgoods(bookgoods);
ev.setBookissued(bookissued);*/
ev = er.setBookInfo(epubUtil, ev);
/**
* 保存元数据相关内容
*/
// 名称
book.setName(epubUtil.getBookTitle());
// 作者
book.setAuthor(epubUtil.getAuthor());
// 出版时间
book.setPublishTime(epubUtil.getPublishDate() == null ? "" : epubUtil.getPublishDate().toString());
book.setIsbn(epubUtil.getISBN());
// 关键字(图书的名字)20
ebook.setKeywords(epubUtil.getBookTitle());
// 保存封面
if(epubUtil.getCover() != null){
String imgName = epubUtil.getCover().getHref().substring(epubUtil.getCover().getHref().lastIndexOf("/") + 1);
MultipartFile multipartFile = new MockMultipartFile(imgName, imgName, "image/jpeg", epubUtil.getCover().getInputStream());
FileInfo cover = er.uploadFile(multipartFile, rootPath , fileName);
ebook.setBookCover(cover.getFileName());
service.insert(cover);
}
ebook.setUploadTime(new Date());
book.setStatus(0);
book.setId(UUIDUtil.getUUID());
ev.setBook(book);
/**
* 保存电子书相关内容
*/
ebook.setId(book.getId());
ebook.setUploadTime(new Date());
// 修改时间4
ebook.setUpdateTime(new Date());// 设置为上传时间
ebook.setEpubFile(path);
ebook.setFileName(entity.getFileName());
// css路径
FileInfo cssentity = er.getCss(epubUtil, rootPath , fileName);
if (!service.insert(cssentity)) {
throw new BaseException("css文件上传失败!");
}
ebook.setCssPath(cssentity.getFileName());
// 完善图书信息(13-17)
ev.setEbook(ebook);
// ---------获取图书所有内容------------
List<TOCReference> listReferences = epubUtil.getTocReferences();
// 当前目录
TOCReference tocRef = new TOCReference();
// 初始化顶级目录id 为 "0"
tocRef.setFragmentId("0");
// 初始化顶级目录层级为 0
int level = 0;
// *******************解析章节信息*************
Set<ChapterLibrary> chapterSet = new HashSet<>();
chapterSet = er.setChapter(listReferences, tocRef, level, ebook, chapterSet);
ev.setChapterSet(chapterSet);
// ******************解析内容信息**************
Set<ArticleLibrary> contentSet = new HashSet<>();
Map<String, String> imgtzMap = new HashMap<>();// 图片图注信息
Object[] data = new Object[2];
book.setAuthor(book.getAuthor());
data = er.setContent(listReferences, contentSet, ebook, imgtzMap, data);
ev.setArticleSet(contentSet);
// ************导入图书中的图片资源************
if (data[1] instanceof Map && data[1] != null) {
imgtzMap = (Map<String, String>) data[1];
// 图片info
List<FileInfo> imageInfoList = er.getImages(epubUtil, rootPath , fileName);
if (!service.insertList(imageInfoList)) {
throw new BaseException("图片上传失败!");
}
importBookImgs(imgtzMap, book, imageInfoList);
}
}
return ev;
}
/**
* (后台) 导入epub中的图片资源到resource
*
* @throws Exception
*/
public void importBookImgs(Map<String, String> imgtzMap, Book book,
List<FileInfo> imageInfoList) throws Exception {
Set<ImageLibrary> imageSet = new HashSet<ImageLibrary>();
try {
// 保存图书中的图片资源到资源表中
for (FileInfo file : imageInfoList) {
ImageLibrary il = new ImageLibrary();
String imgName = file.getOriginalFileName();
String showName = imgtzMap.get(file.getPath());
// 图片的页面显示名称(图注),没有默认为原文件名
showName = (showName != null && !showName.equals("")) ? showName : imgName;
il.setName(showName);
// il.setImage(relativeBookFolderPath + file.getPath());
il.setUploadTime(new Date());
il.setBookId(book.getId());
il.setBookName(book.getName());
il.setStatus(0);
il.setImage(file.getFileName());
imageSet.add(il);
}
ev.setImageSet(imageSet);
} catch (Exception e) {
// 保存操作日志
throw new Exception();
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论