diff --git a/README.md b/README.md index bdcc507..3978175 100644 --- a/README.md +++ b/README.md @@ -83,11 +83,17 @@ novel-cloud ![QQ20200520-215756](./assert/QQ20200528-020543.png) - 4. 门户网站 + - ![QQ20200520-215756](./assert/pc_index.png) + 4. 接口文档 - + ![QQ20200520-215756](./assert/QQ20200528-200023.png) + + 5. 门户网站 + + ![QQ20200520-215756](./assert/pc_index.png) + + #### 项目文档 diff --git a/assert/QQ20200528-200023.png b/assert/QQ20200528-200023.png new file mode 100644 index 0000000..d3f5036 Binary files /dev/null and b/assert/QQ20200528-200023.png differ diff --git a/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java b/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java index b47a68b..153a618 100644 --- a/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java +++ b/novel-book/book-api/src/main/java/com/java2nb/novel/book/api/BookApi.java @@ -33,5 +33,14 @@ public interface BookApi { @GetMapping("api/book/queryBookByIds") List queryBookByIds(@RequestBody List ids); + /** + * 小说排行数据查询列表 + * @param type 排行类型,1:更新排行,2:新书排行,3评论排行 + * @param limit 查询数量 + * @return 书籍列表 + * */ + @GetMapping("api/book/listRank") + List listRank(@RequestParam("type") Byte type, @RequestParam("limit") Integer limit); + } diff --git a/novel-book/book-api/src/main/java/com/java2nb/novel/book/entity/Book.java b/novel-book/book-api/src/main/java/com/java2nb/novel/book/entity/Book.java index 99bab9b..82b0e29 100644 --- a/novel-book/book-api/src/main/java/com/java2nb/novel/book/entity/Book.java +++ b/novel-book/book-api/src/main/java/com/java2nb/novel/book/entity/Book.java @@ -3,9 +3,10 @@ package com.java2nb.novel.book.entity; import io.swagger.annotations.ApiModelProperty; import javax.annotation.Generated; +import java.io.Serializable; import java.util.Date; -public class Book { +public class Book implements Serializable { @ApiModelProperty(value = "主键") @Generated("org.mybatis.generator.api.MyBatisGenerator") private Long id; diff --git a/novel-book/book-api/src/main/java/com/java2nb/novel/book/vo/BookVO.java b/novel-book/book-api/src/main/java/com/java2nb/novel/book/vo/BookVO.java new file mode 100644 index 0000000..16c0806 --- /dev/null +++ b/novel-book/book-api/src/main/java/com/java2nb/novel/book/vo/BookVO.java @@ -0,0 +1,22 @@ +package com.java2nb.novel.book.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.java2nb.novel.book.entity.Book; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author Administrator + */ +@Data +public class BookVO extends Book{ + + @ApiModelProperty(value = "最新目录更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "MM/dd HH:mm") + private Date lastIndexUpdateTime; + + +} diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java index d8c3970..4665bc7 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java @@ -48,5 +48,16 @@ public class BookApi { return bookService.queryBookByIds(ids); } + /** + * 小说排行数据查询列表 + * @param type 排行类型,1:更新排行,2:新书排行,3评论排行 + * @param limit 查询数量 + * @return 书籍列表 + * */ + @GetMapping("listRank") + List listRank(Byte type, Integer limit){ + return bookService.listRank(type,limit); + } + } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java index 56ce0ee..c6f9a10 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/BookService.java @@ -1,7 +1,6 @@ package com.java2nb.novel.book.service; import com.java2nb.novel.book.entity.Book; -import org.springframework.web.bind.annotation.GetMapping; import java.util.Date; import java.util.List; @@ -28,4 +27,12 @@ public interface BookService { * @return 书籍列表 * */ List queryBookByIds(List ids); + + /** + * 小说排行数据查询列表 + * @param type 排行类型,1:更新排行,2:新书排行,3评论排行 + * @param limit 查询数量 + * @return 书籍列表 + * */ + List listRank(Byte type, Integer limit); } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java index faf3d11..0138fea 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java @@ -5,7 +5,9 @@ import com.java2nb.novel.book.mapper.BookDynamicSqlSupport; import com.java2nb.novel.book.mapper.BookMapper; import com.java2nb.novel.book.service.BookService; import lombok.RequiredArgsConstructor; +import org.mybatis.dynamic.sql.SortSpecification; import org.mybatis.dynamic.sql.render.RenderingStrategies; +import org.mybatis.dynamic.sql.select.render.SelectStatementProvider; import org.springframework.stereotype.Service; import java.util.Date; @@ -49,4 +51,43 @@ public class BookServiceImpl implements BookService { .render(RenderingStrategies.MYBATIS3) ); } + + @Override + public List listRank(Byte type, Integer limit) { + SortSpecification sortSpecification = BookDynamicSqlSupport.visitCount.descending(); + switch (type) { + case 1: { + //最新入库排序 + sortSpecification = BookDynamicSqlSupport.createTime.descending(); + break; + } + case 2: { + //最新更新时间排序 + sortSpecification = BookDynamicSqlSupport.lastIndexUpdateTime.descending(); + break; + } + case 3: { + //评论数量排序 + sortSpecification = BookDynamicSqlSupport.commentCount.descending(); + break; + } + default: { + break; + } + } + SelectStatementProvider selectStatement = + select(BookDynamicSqlSupport.id, BookDynamicSqlSupport.catId, + BookDynamicSqlSupport.catName, BookDynamicSqlSupport.bookName, + BookDynamicSqlSupport.lastIndexId, BookDynamicSqlSupport.lastIndexName, + BookDynamicSqlSupport.authorId, BookDynamicSqlSupport.authorName, + BookDynamicSqlSupport.picUrl, BookDynamicSqlSupport.bookDesc, + BookDynamicSqlSupport.wordCount, BookDynamicSqlSupport.lastIndexUpdateTime) + .from(book) + .where(BookDynamicSqlSupport.wordCount, isGreaterThan(0)) + .orderBy(sortSpecification) + .limit(limit) + .build() + .render(RenderingStrategies.MYBATIS3); + return bookMapper.selectMany(selectStatement); + } } diff --git a/novel-home/src/main/java/com/java2nb/novel/home/controller/HomeController.java b/novel-home/src/main/java/com/java2nb/novel/home/controller/HomeController.java index ce41af2..822261c 100644 --- a/novel-home/src/main/java/com/java2nb/novel/home/controller/HomeController.java +++ b/novel-home/src/main/java/com/java2nb/novel/home/controller/HomeController.java @@ -1,5 +1,7 @@ package com.java2nb.novel.home.controller; +import com.java2nb.novel.book.entity.Book; +import com.java2nb.novel.book.vo.BookVO; import com.java2nb.novel.common.bean.PageBean; import com.java2nb.novel.common.bean.ResultBean; import com.java2nb.novel.home.entity.HomeFriendLink; @@ -58,4 +60,30 @@ public class HomeController { } + /** + * 首页点击榜单查询接口 + * */ + @ApiOperation("首页点击榜单查询接口") + @GetMapping("listClickRank") + public ResultBean> listClickRank(){ + return ResultBean.ok(homeService.listClickRank()); + } + /** + * 首页新书榜单查询接口 + * */ + @ApiOperation("首页点击榜单查询接口") + @GetMapping("listNewRank") + public ResultBean> listNewRank(){ + return ResultBean.ok(homeService.listNewRank()); + } + + /** + * 首页更新榜单查询接口 + * */ + @ApiOperation("首页点击榜单查询接口") + @GetMapping("listUpdateRank") + public ResultBean> listUpdateRank(){ + return ResultBean.ok(homeService.listUpdateRank()); + } + } diff --git a/novel-home/src/main/java/com/java2nb/novel/home/service/HomeService.java b/novel-home/src/main/java/com/java2nb/novel/home/service/HomeService.java index 395fe3b..c4a99e1 100644 --- a/novel-home/src/main/java/com/java2nb/novel/home/service/HomeService.java +++ b/novel-home/src/main/java/com/java2nb/novel/home/service/HomeService.java @@ -1,7 +1,8 @@ package com.java2nb.novel.home.service; -import com.java2nb.novel.home.entity.HomeBook; +import com.java2nb.novel.book.entity.Book; +import com.java2nb.novel.book.vo.BookVO; import com.java2nb.novel.home.entity.HomeFriendLink; import com.java2nb.novel.home.vo.HomeBookVO; import com.java2nb.novel.news.entity.News; @@ -34,4 +35,22 @@ public interface HomeService { * @return 新闻列表集合 * */ List listIndexNews(); + + /** + * 首页点击榜单查询接口 + * @return 小说数据集合 + * */ + List listClickRank(); + + /** + * 首页新书榜单查询接口 + * @return 小说数据集合 + * */ + List listNewRank(); + + /** + * 首页更新榜单查询接口 + * @return 小说数据集合 + * */ + List listUpdateRank(); } diff --git a/novel-home/src/main/java/com/java2nb/novel/home/service/impl/HomeServiceImpl.java b/novel-home/src/main/java/com/java2nb/novel/home/service/impl/HomeServiceImpl.java index 8ba7cb8..ce88b0c 100644 --- a/novel-home/src/main/java/com/java2nb/novel/home/service/impl/HomeServiceImpl.java +++ b/novel-home/src/main/java/com/java2nb/novel/home/service/impl/HomeServiceImpl.java @@ -2,8 +2,10 @@ package com.java2nb.novel.home.service.impl; import com.fasterxml.jackson.databind.ObjectMapper; import com.java2nb.novel.book.entity.Book; +import com.java2nb.novel.book.vo.BookVO; import com.java2nb.novel.common.cache.CacheKey; import com.java2nb.novel.common.cache.CacheService; +import com.java2nb.novel.common.utils.BeanUtil; import com.java2nb.novel.common.utils.Constants; import com.java2nb.novel.home.entity.HomeBook; import com.java2nb.novel.home.entity.HomeFriendLink; @@ -111,4 +113,35 @@ public class HomeServiceImpl implements HomeService { } return result; } + + @Override + public List listClickRank() { + List result = (List) cacheService.getObject(CacheKey.INDEX_CLICK_BANK_BOOK_KEY); + if (result == null || result.size() == 0) { + result = bookFeignClient.listRank((byte) 0, 10); + cacheService.setObject(CacheKey.INDEX_CLICK_BANK_BOOK_KEY, result, 5000); + } + return result; + } + + @Override + public List listNewRank() { + List result = (List) cacheService.getObject(CacheKey.INDEX_NEW_BOOK_KEY); + if (result == null || result.size() == 0) { + result = bookFeignClient.listRank((byte) 1, 10); + cacheService.setObject(CacheKey.INDEX_NEW_BOOK_KEY, result, 3600); + } + return result; + } + + @Override + public List listUpdateRank() { + List result = (List) cacheService.getObject(CacheKey.INDEX_UPDATE_BOOK_KEY); + if (result == null || result.size() == 0) { + List bookPOList = bookFeignClient.listRank((byte) 2, 23); + result = BeanUtil.copyList(bookPOList, BookVO.class); + cacheService.setObject(CacheKey.INDEX_UPDATE_BOOK_KEY, result, 60 * 10); + } + return result; + } }