From 005f47a039bf309b5cdb2b7dedbbf1ac771a67f2 Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <773861846@qq.com> Date: Sat, 14 Dec 2019 11:06:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E7=89=A9=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java2nb/books/service/BookService.java | 2 + .../service/impl/BookCrawlServiceImpl.java | 68 ++---------------- .../books/service/impl/BookServiceImpl.java | 71 ++++++++++++++++++- .../books/service/BookService.java | 8 ++- 4 files changed, 80 insertions(+), 69 deletions(-) diff --git a/novel-admin/src/main/java/com/java2nb/books/service/BookService.java b/novel-admin/src/main/java/com/java2nb/books/service/BookService.java index 5433303..c61e3d6 100644 --- a/novel-admin/src/main/java/com/java2nb/books/service/BookService.java +++ b/novel-admin/src/main/java/com/java2nb/books/service/BookService.java @@ -45,4 +45,6 @@ public interface BookService { int indexRemove(Long id, Long bookId); int batchIndexRemove(Long[] ids, Long[] bookIds); + + void saveBookAndIndexAndContent(BookDO book, List bookIndex, List bookContent); } diff --git a/novel-admin/src/main/java/com/java2nb/books/service/impl/BookCrawlServiceImpl.java b/novel-admin/src/main/java/com/java2nb/books/service/impl/BookCrawlServiceImpl.java index b128d7f..23bfee5 100644 --- a/novel-admin/src/main/java/com/java2nb/books/service/impl/BookCrawlServiceImpl.java +++ b/novel-admin/src/main/java/com/java2nb/books/service/impl/BookCrawlServiceImpl.java @@ -7,6 +7,7 @@ import com.java2nb.books.dao.BookIndexDao; import com.java2nb.books.domain.BookContentDO; import com.java2nb.books.domain.BookDO; import com.java2nb.books.domain.BookIndexDO; +import com.java2nb.books.service.BookService; import com.java2nb.books.util.RestTemplateUtil; import com.java2nb.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -50,7 +51,7 @@ public class BookCrawlServiceImpl implements BookCrawlService { private BookIndexDao bookIndexDao; @Autowired - private BookContentDao bookContentDao; + private BookService bookService; @Override public BookCrawlDO get(Long id) { @@ -592,7 +593,7 @@ public class BookCrawlServiceImpl implements BookCrawlService { } if (indexList.size() == contentList.size() && indexList.size() > 0) { - saveBookAndIndexAndContent(book, indexList, contentList); + bookService.saveBookAndIndexAndContent(book, indexList, contentList); } } @@ -820,7 +821,7 @@ public class BookCrawlServiceImpl implements BookCrawlService { } if (indexList.size() == contentList.size() && indexList.size() > 0) { - saveBookAndIndexAndContent(book, indexList, contentList); + bookService.saveBookAndIndexAndContent(book, indexList, contentList); } } @@ -855,70 +856,9 @@ public class BookCrawlServiceImpl implements BookCrawlService { } - @Transactional(rollbackFor = Exception.class) - public void saveBookAndIndexAndContent(BookDO book, List bookIndex, List bookContent) { - Long bookId = -1L; - book.setBookName(book.getBookName().trim()); - book.setAuthor(book.getAuthor().trim()); - Map bookExample = new HashMap<>(); - bookExample.put("bookName", book.getBookName()); - bookExample.put("author", book.getAuthor()); - List books = bookDao.list(bookExample); - if (books.size() > 0) { - //更新 - bookId = books.get(0).getId(); - book.setId(bookId); - bookDao.update(book); - - } else { - if (book.getVisitCount() == null) { - Long visitCount = generateVisiteCount(book.getScore()); - book.setVisitCount(visitCount); - } - //插入 - int rows = bookDao.save(book); - if (rows > 0) { - bookId = book.getId(); - } - } - if (bookId >= 0) { - - - List newBookIndexList = new ArrayList<>(); - List newContentList = new ArrayList<>(); - for (int i = 0; i < bookIndex.size(); i++) { - BookContentDO bookContentItem = bookContent.get(i); - if (!bookContentItem.getContent().contains("正在手打中,请稍等片刻,内容更新后,需要重新刷新页面,才能获取最新更新")) { - - - BookIndexDO bookIndexItem = bookIndex.get(i); - bookIndexItem.setBookId(bookId); - bookContentItem.setBookId(bookId); - bookContentItem.setIndexNum(bookIndexItem.getIndexNum()); - - newBookIndexList.add(bookIndexItem); - newContentList.add(bookContentItem); - } - } - - if (newBookIndexList.size() > 0) { - bookIndexDao.insertBatch(newBookIndexList); - - bookContentDao.insertBatch(newContentList); - } - - - } - - - } - - private Long generateVisiteCount(Float score) { - return Long.parseLong((int)(score*10000) + new Random().nextInt(1000) + ""); - } private String getByTemplate(String catBookListUrl) { try { diff --git a/novel-admin/src/main/java/com/java2nb/books/service/impl/BookServiceImpl.java b/novel-admin/src/main/java/com/java2nb/books/service/impl/BookServiceImpl.java index 9aee630..111aa76 100644 --- a/novel-admin/src/main/java/com/java2nb/books/service/impl/BookServiceImpl.java +++ b/novel-admin/src/main/java/com/java2nb/books/service/impl/BookServiceImpl.java @@ -11,9 +11,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import com.java2nb.books.dao.BookDao; import com.java2nb.books.domain.BookDO; @@ -131,4 +129,71 @@ public class BookServiceImpl implements BookService { return bookIndexDao.batchRemove(ids); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveBookAndIndexAndContent(BookDO book, List bookIndex, List bookContent) { + Long bookId = -1L; + book.setBookName(book.getBookName().trim()); + book.setAuthor(book.getAuthor().trim()); + Map bookExample = new HashMap<>(); + bookExample.put("bookName", book.getBookName()); + bookExample.put("author", book.getAuthor()); + List books = bookDao.list(bookExample); + if (books.size() > 0) { + //更新 + bookId = books.get(0).getId(); + book.setId(bookId); + bookDao.update(book); + + } else { + if (book.getVisitCount() == null) { + Long visitCount = generateVisiteCount(book.getScore()); + book.setVisitCount(visitCount); + } + //插入 + int rows = bookDao.save(book); + if (rows > 0) { + bookId = book.getId(); + } + + + } + + if (bookId >= 0) { + + + List newBookIndexList = new ArrayList<>(); + List newContentList = new ArrayList<>(); + for (int i = 0; i < bookIndex.size(); i++) { + BookContentDO bookContentItem = bookContent.get(i); + if (!bookContentItem.getContent().contains("正在手打中,请稍等片刻,内容更新后,需要重新刷新页面,才能获取最新更新")) { + + + BookIndexDO bookIndexItem = bookIndex.get(i); + bookIndexItem.setBookId(bookId); + bookContentItem.setBookId(bookId); + bookContentItem.setIndexNum(bookIndexItem.getIndexNum()); + + newBookIndexList.add(bookIndexItem); + newContentList.add(bookContentItem); + } + } + + if (newBookIndexList.size() > 0) { + bookIndexDao.insertBatch(newBookIndexList); + + bookContentDao.insertBatch(newContentList); + } + + + } + + + } + + private Long generateVisiteCount(Float score) { + return Long.parseLong((int)(score*10000) + new Random().nextInt(1000) + ""); + } + } diff --git a/novel-front/src/main/java/xyz/zinglizingli/books/service/BookService.java b/novel-front/src/main/java/xyz/zinglizingli/books/service/BookService.java index 01c6469..6f87e48 100644 --- a/novel-front/src/main/java/xyz/zinglizingli/books/service/BookService.java +++ b/novel-front/src/main/java/xyz/zinglizingli/books/service/BookService.java @@ -20,6 +20,7 @@ import xyz.zinglizingli.books.core.enums.PicSaveType; import xyz.zinglizingli.books.mapper.*; import xyz.zinglizingli.books.po.*; import xyz.zinglizingli.books.core.utils.Constants; +import xyz.zinglizingli.common.utils.SpringUtil; import xyz.zinglizingli.common.utils.UUIDUtils; import xyz.zinglizingli.common.cache.CommonCacheUtil; import xyz.zinglizingli.common.utils.RestTemplateUtil; @@ -51,6 +52,7 @@ public class BookService { private final CommonCacheUtil cacheUtil; + @Value("${pic.save.type}") private Integer picSaveType; @@ -63,6 +65,8 @@ public class BookService { * 保存章节目录和内容 * */ public void saveBookAndIndexAndContent(Book book, List bookIndex, List bookContent){ + //解决内部调用事物不生效的问题 + BookService bookService = SpringUtil.getBean(BookService.class); boolean isUpdate = false; Long bookId = -1L; @@ -107,7 +111,7 @@ public class BookService { } //一次最多只允许插入20条记录,否则影响服务器响应 if (isUpdate && i % 20 == 0 && newBookIndexList.size() > 0) { - insertIndexListAndContentList(newBookIndexList, newContentList); + bookService.insertIndexListAndContentList(newBookIndexList, newContentList); newBookIndexList = new ArrayList<>(); newContentList = new ArrayList<>(); try { @@ -121,7 +125,7 @@ public class BookService { if (newBookIndexList.size() > 0) { - insertIndexListAndContentList(newBookIndexList, newContentList); + bookService.insertIndexListAndContentList(newBookIndexList, newContentList); } cacheUtil.del(CacheKeyConstans.NEWST_BOOK_LIST_KEY);