mirror of
https://github.com/201206030/novel-cloud.git
synced 2025-04-27 01:40:50 +00:00
新闻微服务开发完成,首页微服务开发中
This commit is contained in:
parent
387d5e862c
commit
7edd79a5f2
@ -2,6 +2,7 @@ package com.java2nb.novel.book.api;
|
|||||||
|
|
||||||
import com.java2nb.novel.book.entity.Book;
|
import com.java2nb.novel.book.entity.Book;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -23,4 +24,14 @@ public interface BookApi {
|
|||||||
* */
|
* */
|
||||||
@GetMapping("api/book/queryBookByMinUpdateTime")
|
@GetMapping("api/book/queryBookByMinUpdateTime")
|
||||||
List<Book> queryBookByMinUpdateTime(@RequestParam("minDate") Date minDate,@RequestParam("limit") int limit);
|
List<Book> queryBookByMinUpdateTime(@RequestParam("minDate") Date minDate,@RequestParam("limit") int limit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据小说ID集合查询书籍列表
|
||||||
|
* @param ids 小说ID集合
|
||||||
|
* @return 书籍列表
|
||||||
|
* */
|
||||||
|
@GetMapping("api/book/queryBookByIds")
|
||||||
|
List<Book> queryBookByIds(@RequestBody List<Long> ids);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,7 @@ import com.java2nb.novel.book.service.BookService;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -39,5 +37,16 @@ public class BookApi {
|
|||||||
return bookService.queryBookByMinUpdateTime(minDate,limit);
|
return bookService.queryBookByMinUpdateTime(minDate,limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据小说ID集合查询书籍列表
|
||||||
|
* @param ids 小说ID集合
|
||||||
|
* @return 书籍列表
|
||||||
|
* */
|
||||||
|
@GetMapping("queryBookByIds")
|
||||||
|
List<Book> queryBookByIds(@RequestBody List<Long> ids){
|
||||||
|
|
||||||
|
return bookService.queryBookByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -21,4 +21,11 @@ public interface BookService {
|
|||||||
* @return 书籍列表
|
* @return 书籍列表
|
||||||
* */
|
* */
|
||||||
List<Book> queryBookByMinUpdateTime(Date minDate, int limit);
|
List<Book> queryBookByMinUpdateTime(Date minDate, int limit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据小说ID集合查询书籍列表
|
||||||
|
* @param ids 小说ID集合
|
||||||
|
* @return 书籍列表
|
||||||
|
* */
|
||||||
|
List<Book> queryBookByIds(List<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import static com.java2nb.novel.book.mapper.BookDynamicSqlSupport.book;
|
import static com.java2nb.novel.book.mapper.BookDynamicSqlSupport.book;
|
||||||
import static org.mybatis.dynamic.sql.SqlBuilder.isGreaterThan;
|
import static org.mybatis.dynamic.sql.SqlBuilder.isGreaterThan;
|
||||||
|
import static org.mybatis.dynamic.sql.SqlBuilder.isIn;
|
||||||
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
|
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,4 +38,15 @@ public class BookServiceImpl implements BookService {
|
|||||||
.build()
|
.build()
|
||||||
.render(RenderingStrategies.MYBATIS3));
|
.render(RenderingStrategies.MYBATIS3));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Book> queryBookByIds(List<Long> ids) {
|
||||||
|
return bookMapper.selectMany(select(BookDynamicSqlSupport.id,BookDynamicSqlSupport.bookName,BookDynamicSqlSupport.authorName,
|
||||||
|
BookDynamicSqlSupport.picUrl,BookDynamicSqlSupport.bookDesc,BookDynamicSqlSupport.score)
|
||||||
|
.from(book)
|
||||||
|
.where(BookDynamicSqlSupport.id,isIn(ids))
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,11 @@
|
|||||||
<artifactId>lombok</artifactId>
|
<artifactId>lombok</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 替换默认的HttpURLConnection不支持@RequestBody+ RequestMethod.GET模式-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.github.openfeign</groupId>
|
||||||
|
<artifactId>feign-httpclient</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.java2nb.novel.common.utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 常量类
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
public class Constants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板路径前缀保存key
|
||||||
|
* */
|
||||||
|
public static final String TEMPLATE_PATH_PREFIX_KEY = "templatePathPrefixKey";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存图片到自己的存储介质路径前缀
|
||||||
|
* */
|
||||||
|
public static final String LOCAL_PIC_PREFIX = "/localPic/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户客户端标识保存key
|
||||||
|
* */
|
||||||
|
public static final String USER_CLIENT_MARK_KEY = "userClientMarkKey";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Object Json 缓存存在的最小长度
|
||||||
|
* */
|
||||||
|
public static final int OBJECT_JSON_CACHE_EXIST_LENGTH = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页设置的小说数量
|
||||||
|
* */
|
||||||
|
public static final int INDEX_BOOK_SETTING_NUM = 32;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 累积的最大点击量
|
||||||
|
* */
|
||||||
|
public static final Integer ADD_MAX_VISIT_COUNT = 10;
|
||||||
|
}
|
@ -15,6 +15,11 @@ logging:
|
|||||||
config: classpath:logback-boot.xml
|
config: classpath:logback-boot.xml
|
||||||
|
|
||||||
|
|
||||||
|
feign:
|
||||||
|
httpclient:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,7 +14,11 @@
|
|||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.java2nb.novel</groupId>
|
<groupId>com.java2nb.novel</groupId>
|
||||||
<artifactId>novel-common</artifactId>
|
<artifactId>book-api</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.java2nb.novel</groupId>
|
||||||
|
<artifactId>news-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
package com.java2nb.novel.home;
|
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
public class HomeController {
|
|
||||||
}
|
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.java2nb.novel.home.controller;
|
||||||
|
|
||||||
|
import com.java2nb.novel.common.bean.PageBean;
|
||||||
|
import com.java2nb.novel.common.bean.ResultBean;
|
||||||
|
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||||
|
import com.java2nb.novel.home.service.HomeService;
|
||||||
|
import com.java2nb.novel.home.vo.HomeBookVO;
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页微服务对外接口
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("home")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "首页相关接口")
|
||||||
|
public class HomeController {
|
||||||
|
|
||||||
|
private final HomeService homeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页小说推荐数据查询接口
|
||||||
|
* */
|
||||||
|
@ApiOperation("首页小说推荐列表查询接口")
|
||||||
|
@GetMapping("book")
|
||||||
|
public ResultBean<List<HomeBookVO>> listHomeBook(){
|
||||||
|
return ResultBean.ok(homeService.listHomeBook());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页友情链接查询接口
|
||||||
|
* */
|
||||||
|
@ApiOperation("首页友情链接查询接口")
|
||||||
|
@GetMapping("friendLink")
|
||||||
|
public ResultBean<List<HomeFriendLink>> listIndexLink(){
|
||||||
|
return ResultBean.ok(homeService.listFriendLink());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页新闻查询接口
|
||||||
|
* */
|
||||||
|
@ApiOperation("首页新闻查询接口")
|
||||||
|
@GetMapping("news")
|
||||||
|
public ResultBean<List<News>> listIndexNews(){
|
||||||
|
return ResultBean.ok(homeService.listIndexNews());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.java2nb.novel.home.feign;
|
||||||
|
|
||||||
|
import com.java2nb.novel.book.api.BookApi;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小说服务Feign客户端
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
@FeignClient("book-service")
|
||||||
|
public interface BookFeignClient extends BookApi {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.java2nb.novel.home.feign;
|
||||||
|
|
||||||
|
import com.java2nb.novel.book.api.BookApi;
|
||||||
|
import com.java2nb.novel.news.api.NewsApi;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新闻服务Feign客户端
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
@FeignClient("news-service")
|
||||||
|
public interface NewsFeignClient extends NewsApi {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.java2nb.novel.home.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.java2nb.novel.home.entity.HomeBook;
|
||||||
|
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||||
|
import com.java2nb.novel.home.vo.HomeBookVO;
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页服务接口
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
public interface HomeService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页小说推荐数据查询
|
||||||
|
* @return 首页推荐的小说数据
|
||||||
|
* */
|
||||||
|
List<HomeBookVO> listHomeBook();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页友情链接查询
|
||||||
|
* @return 友情链接集合
|
||||||
|
* */
|
||||||
|
List<HomeFriendLink> listFriendLink();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询首页新闻
|
||||||
|
* @return 新闻列表集合
|
||||||
|
* */
|
||||||
|
List<News> listIndexNews();
|
||||||
|
}
|
@ -0,0 +1,114 @@
|
|||||||
|
package com.java2nb.novel.home.service.impl;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.java2nb.novel.book.entity.Book;
|
||||||
|
import com.java2nb.novel.common.cache.CacheKey;
|
||||||
|
import com.java2nb.novel.common.cache.CacheService;
|
||||||
|
import com.java2nb.novel.common.utils.Constants;
|
||||||
|
import com.java2nb.novel.home.entity.HomeBook;
|
||||||
|
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||||
|
import com.java2nb.novel.home.feign.BookFeignClient;
|
||||||
|
import com.java2nb.novel.home.feign.NewsFeignClient;
|
||||||
|
import com.java2nb.novel.home.mapper.HomeBookDynamicSqlSupport;
|
||||||
|
import com.java2nb.novel.home.mapper.HomeBookMapper;
|
||||||
|
import com.java2nb.novel.home.mapper.HomeFriendLinkDynamicSqlSupport;
|
||||||
|
import com.java2nb.novel.home.mapper.HomeFriendLinkMapper;
|
||||||
|
import com.java2nb.novel.home.service.HomeService;
|
||||||
|
import com.java2nb.novel.home.vo.HomeBookVO;
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import org.mybatis.dynamic.sql.render.RenderingStrategies;
|
||||||
|
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||||
|
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页服务接口实现
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class HomeServiceImpl implements HomeService {
|
||||||
|
|
||||||
|
private final CacheService cacheService;
|
||||||
|
|
||||||
|
private final BookFeignClient bookFeignClient;
|
||||||
|
|
||||||
|
private final HomeBookMapper homeBookMapper;
|
||||||
|
|
||||||
|
private final HomeFriendLinkMapper homeFriendLinkMapper;
|
||||||
|
|
||||||
|
private final NewsFeignClient newsFeignClient;
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
@Override
|
||||||
|
public List<HomeBookVO> listHomeBook() {
|
||||||
|
String result = cacheService.get(CacheKey.INDEX_BOOK_SETTINGS_KEY);
|
||||||
|
if (result == null || result.length() < Constants.OBJECT_JSON_CACHE_EXIST_LENGTH) {
|
||||||
|
List<HomeBook> list = homeBookMapper.selectMany(
|
||||||
|
select(HomeBookDynamicSqlSupport.bookId,HomeBookDynamicSqlSupport.type)
|
||||||
|
.from(HomeBookDynamicSqlSupport.homeBook)
|
||||||
|
.orderBy(HomeBookDynamicSqlSupport.type,HomeBookDynamicSqlSupport.sort)
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3));
|
||||||
|
List<Book> books = bookFeignClient.queryBookByIds(list.stream().map(HomeBook::getBookId).collect(Collectors.toList()));
|
||||||
|
Map<Long, Book> booksById = books.stream().collect(Collectors.toMap(Book::getId, Function.identity(),(key1, key2) -> key2));
|
||||||
|
|
||||||
|
List<HomeBookVO> resultList = new ArrayList<>(booksById.size());
|
||||||
|
for(HomeBook homeBook : list){
|
||||||
|
HomeBookVO homeBookVO = new HomeBookVO();
|
||||||
|
BeanUtils.copyProperties(homeBook,homeBookVO);
|
||||||
|
Book book = booksById.get(homeBook.getBookId());
|
||||||
|
if(book != null){
|
||||||
|
BeanUtils.copyProperties(book,homeBookVO);
|
||||||
|
resultList.add(homeBookVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
result = new ObjectMapper().writeValueAsString(resultList);
|
||||||
|
cacheService.set(CacheKey.INDEX_BOOK_SETTINGS_KEY, result);
|
||||||
|
}
|
||||||
|
return new ObjectMapper().readValue(result, List.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<HomeFriendLink> listFriendLink() {
|
||||||
|
List<HomeFriendLink> result = (List<HomeFriendLink>) cacheService.getObject(CacheKey.INDEX_LINK_KEY);
|
||||||
|
if(result == null || result.size() == 0) {
|
||||||
|
SelectStatementProvider selectStatement =
|
||||||
|
select(HomeFriendLinkDynamicSqlSupport.linkName,HomeFriendLinkDynamicSqlSupport.linkUrl)
|
||||||
|
.from(HomeFriendLinkDynamicSqlSupport.homeFriendLink)
|
||||||
|
.where(HomeFriendLinkDynamicSqlSupport.isOpen,isEqualTo((byte)1))
|
||||||
|
.orderBy(HomeFriendLinkDynamicSqlSupport.sort)
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
|
result = homeFriendLinkMapper.selectMany(selectStatement);
|
||||||
|
cacheService.setObject(CacheKey.INDEX_LINK_KEY,result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<News> listIndexNews() {
|
||||||
|
List<News> result = (List<News>) cacheService.getObject(CacheKey.INDEX_NEWS_KEY);
|
||||||
|
if(result == null || result.size() == 0) {
|
||||||
|
result = newsFeignClient.listLastIndexNews(2);
|
||||||
|
cacheService.setObject(CacheKey.INDEX_NEWS_KEY,result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.java2nb.novel.home.vo;
|
||||||
|
|
||||||
|
import com.java2nb.novel.home.entity.HomeBook;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 11797
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class HomeBookVO extends HomeBook implements Serializable {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "小说名")
|
||||||
|
private String bookName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "小说封面")
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "作者名")
|
||||||
|
private String authorName;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "小说简介")
|
||||||
|
private String bookDesc;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "小说评分")
|
||||||
|
private Float score;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.java2nb.novel.news.api;
|
||||||
|
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新闻微服务API接口定义(内部)
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
public interface NewsApi {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询最新新闻集合
|
||||||
|
* @param limit 查询条数
|
||||||
|
* @return 新闻集合
|
||||||
|
* */
|
||||||
|
@GetMapping("api/news/listLastIndexNews")
|
||||||
|
List<News> listLastIndexNews(@RequestParam("limit") int limit);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -3,9 +3,10 @@ package com.java2nb.novel.news.entity;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
import javax.annotation.Generated;
|
import javax.annotation.Generated;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class News {
|
public class News implements Serializable {
|
||||||
@ApiModelProperty(value = "主键")
|
@ApiModelProperty(value = "主键")
|
||||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.java2nb.novel.news.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Administrator
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class NewsVO extends News {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "新闻发布时间")
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
|
||||||
|
private Date createTime;
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package com.java2nb.novel.news.controller;
|
||||||
|
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import com.java2nb.novel.common.bean.ResultBean;
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import com.java2nb.novel.news.service.NewsService;
|
||||||
|
import com.java2nb.novel.news.vo.NewsVO;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author 11797
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("news")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "新闻相关接口")
|
||||||
|
public class NewsController {
|
||||||
|
|
||||||
|
private final NewsService newsService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询新闻列表接口
|
||||||
|
* */
|
||||||
|
@ApiOperation("分页查询新闻列表接口")
|
||||||
|
@GetMapping("listByPage")
|
||||||
|
public ResultBean<List<NewsVO>> listByPage(@ApiParam("当前页码") @RequestParam(value = "curr", defaultValue = "1") int page, @ApiParam("每页大小") @RequestParam(value = "limit", defaultValue = "5") int pageSize){
|
||||||
|
return ResultBean.ok(new PageInfo<>(newsService.listByPage(page,pageSize)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新闻内容查询接口
|
||||||
|
* */
|
||||||
|
@ApiOperation("新闻内容查询接口")
|
||||||
|
@GetMapping("{newsId}")
|
||||||
|
public ResultBean<NewsVO> newsInfo(@ApiParam("新闻ID") @PathVariable("newsId") Long newsId) {
|
||||||
|
News news = newsService.queryNewsInfo(newsId);
|
||||||
|
NewsVO newsVO = new NewsVO();
|
||||||
|
BeanUtils.copyProperties(news,newsVO);
|
||||||
|
return ResultBean.ok(newsVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.java2nb.novel.news.controller.api;
|
||||||
|
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import com.java2nb.novel.news.service.NewsService;
|
||||||
|
import com.java2nb.novel.news.vo.NewsVO;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新闻微服务API接口(内部调用)
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/27
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(("api/news"))
|
||||||
|
@ApiIgnore
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class NewsApi {
|
||||||
|
|
||||||
|
private final NewsService newsService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询最新新闻集合
|
||||||
|
* @param limit 查询条数
|
||||||
|
* @return 新闻集合
|
||||||
|
* */
|
||||||
|
@GetMapping("listLastIndexNews")
|
||||||
|
List<News> listLastIndexNews(@RequestParam("limit") int limit){
|
||||||
|
|
||||||
|
return newsService.listLastIndexNews(limit);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.java2nb.novel.news.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import com.java2nb.novel.news.vo.NewsVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新闻服务接口
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
public interface NewsService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询新闻列表接口
|
||||||
|
* @param page 查询页码
|
||||||
|
* @param pageSize 分页大小
|
||||||
|
* @return 新闻列表集合
|
||||||
|
* */
|
||||||
|
List<NewsVO> listByPage(int page, int pageSize);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询最新新闻集合
|
||||||
|
* @param limit 查询条数
|
||||||
|
* @return 新闻集合
|
||||||
|
* */
|
||||||
|
List<News> listLastIndexNews(int limit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询新闻
|
||||||
|
* @param newsId 新闻id
|
||||||
|
* @return 新闻
|
||||||
|
* */
|
||||||
|
News queryNewsInfo(Long newsId);
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.java2nb.novel.news.service.impl;
|
||||||
|
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.java2nb.novel.common.utils.BeanUtil;
|
||||||
|
import com.java2nb.novel.news.entity.News;
|
||||||
|
import com.java2nb.novel.news.mapper.NewsDynamicSqlSupport;
|
||||||
|
import com.java2nb.novel.news.mapper.NewsMapper;
|
||||||
|
import com.java2nb.novel.news.service.NewsService;
|
||||||
|
import com.java2nb.novel.news.vo.NewsVO;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.mybatis.dynamic.sql.render.RenderingStrategies;
|
||||||
|
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||||
|
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新闻服务接口实现
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class NewsServiceImpl implements NewsService {
|
||||||
|
|
||||||
|
private final NewsMapper newsMapper;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<NewsVO> listByPage(int page, int pageSize) {
|
||||||
|
PageHelper.startPage(page,pageSize);
|
||||||
|
SelectStatementProvider selectStatement =
|
||||||
|
select(NewsDynamicSqlSupport.id, NewsDynamicSqlSupport.catName,
|
||||||
|
NewsDynamicSqlSupport.catId, NewsDynamicSqlSupport.title,NewsDynamicSqlSupport.createTime)
|
||||||
|
.from(NewsDynamicSqlSupport.news)
|
||||||
|
.orderBy(NewsDynamicSqlSupport.createTime.descending())
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
|
|
||||||
|
return BeanUtil.copyList(newsMapper.selectMany(selectStatement), NewsVO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<News> listLastIndexNews(int limit) {
|
||||||
|
SelectStatementProvider selectStatement =
|
||||||
|
select(NewsDynamicSqlSupport.id, NewsDynamicSqlSupport.catName,
|
||||||
|
NewsDynamicSqlSupport.catId, NewsDynamicSqlSupport.title)
|
||||||
|
.from(NewsDynamicSqlSupport.news)
|
||||||
|
.orderBy(NewsDynamicSqlSupport.createTime.descending())
|
||||||
|
.limit(limit)
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
|
return newsMapper.selectMany(selectStatement);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public News queryNewsInfo(Long newsId) {
|
||||||
|
SelectStatementProvider selectStatement = select(NewsDynamicSqlSupport.news.allColumns())
|
||||||
|
.from(NewsDynamicSqlSupport.news)
|
||||||
|
.where(NewsDynamicSqlSupport.id,isEqualTo(newsId))
|
||||||
|
.build()
|
||||||
|
.render(RenderingStrategies.MYBATIS3);
|
||||||
|
return newsMapper.selectMany(selectStatement).get(0);
|
||||||
|
}
|
||||||
|
}
|
@ -14,14 +14,16 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 11797
|
* 搜索微服务对外接口
|
||||||
|
* @author xiongxiaoyang
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2020/5/28
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("search")
|
@RequestMapping("search")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Api(tags = "搜索相关接口")
|
@Api(tags = "搜索相关接口")
|
||||||
|
|
||||||
public class SearchController {
|
public class SearchController {
|
||||||
|
|
||||||
private final SearchService searchService;
|
private final SearchService searchService;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user