您的位置:首页 > 其它

项目迭代之:主页管理、页面显示

2020-07-31 16:07 92 查看

项目迭代之:主页管理、页面显示

主页管理

一、在NewsRepository新增findTop和findByQuery

@Query("select n from News n where n.recommend=true ")
List<News> findTop(Pageable pageable);

@Query("select n from News n where n.title like ?1 or n.content like ?1")
Page<News> findByQuery(String query, Pageable pageable);

二、在TagRepository、TypeRepository中补充findTop

@Query("select t from Type t")
List<Type> findTop(Pageable pageable);

三、在NewsService中写入主页显示列表、推荐列表、查询新闻

//显示新闻列表
Page<News> listNew(Pageable pageable);
//推荐最新新闻列表
List<News> listRecommendNews(Integer size);
//全局查询新闻
Page<News> listNew(String query,Pageable pageable);

四、NewsServiceImpl实现

@Override
public Page<News> listNew(Pageable pageable) {
return newsRepository.findAll(pageable);
}

@Override
public List<News> listRecommendNews(Integer size) {
Sort sort = Sort.by(Sort.Direction.DESC,"updateTime");
Pageable pageable = PageRequest.of(0,size,sort);

return newsRepository.findTop(pageable);
}

@Override
public Page<News> listNew(String query, Pageable pageable) {

return newsRepository.findByQuery(query,pageable);
}

五、TagService

List<Tag> listTag(String ids);
List<Tag> listTagTop(Integer size);

六、TagServiceImpl

@Override
public List<Tag> listTagTop(Integer size) {
Sort sort = Sort.by(Sort.Direction.DESC,"newsList.size" );
Pageable pageable = PageRequest.of(0,size,sort);
return tagRepository.findTop(pageable);

}

七、IndexController用于主页的信息显示、搜索功能

@Autowired
private NewsService newsService;

@Autowired
private TagService tagService;

@Autowired
private TypeService typeService;

@GetMapping("/")
public String index(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)
Pageable pageable, Model model){
model.addAttribute("page",newsService.listNew(pageable));
model.addAttribute("types",typeService.listType(3));
model.addAttribute("tags",tagService.listTagTop(3));
model.addAttribute("recommendNews",newsService.listRecommendNews(3));
return "index";

}

@PostMapping("/search")
public String search(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)
Pageable pageable, @RequestParam String query,Model model){
model.addAttribute("page",newsService.listNew("%"+query+"%",pageable));
model.addAttribute("query",query);
return "search";
}

页面显示

一、NewsService

//根据新闻id查找新闻
News getAndConvert(Long id);

二、NewsServiceImpl

@Override
public News getAndConvert(Long id) {

News news = newsRepository.findById(id).orElse(null);
if (news==null){
System.out.println("该新闻不存在");
}
News news1 = new News();
BeanUtils.copyProperties(news,news1);
String content= news1.getContent();
news1.setContent(MarkdownUtils.markdownToHtmlExtensions(content));
return news1;
}

三、IndexController

@RequestMapping("/news/{id}")
public String getNews(@PathVariable Long id, Model model){
model.addAttribute("news",newsService.getAndConvert(id));
return "new";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐