1.新闻首页
(1)删除新闻
①编写NewService类
void deleteNEW(Long id);
②编写NewServiceImpl类
@Override
public void deleteNEW(Long id) {
newRepository.deleteById(id);
}
③编写NewController类
@GetMapping("/news/{id}/delete")
public String delete(@PathVariable Long id,RedirectAttributes attributes){
newService.deleteNEW(id);
attributes.addFlashAttribute("message","删除成功");
return REDIRECT_LIST;
}
④界面展示
(2)新闻主页
①编写IndexController类
@Autowired
private TypeService typeService;
@Autowired
private TagService tagService;
@Autowired
private NewService newService;
@GetMapping("/")
public String index(@PageableDefault(size=3,sort={"updateTime"},direction = Sort.Direction.DESC)
Pageable pageable, Model model){
model.addAttribute("page",newService.listNew(pageable));
model.addAttribute("types",typeService.listTypeTop(3));
model.addAttribute("tags",tagService.listTagTop(3));
model.addAttribute("recommendNews",newService.listRecommendNewTop(3));
return "index";
}
②编写NewService类
//主页显示新闻列表
Page<News> listNew(Pageable pageable);
③编写NewServiceImpl类
@Override
public Page<News> listNew(Pageable pageable) {
return newRepository.findAll(pageable);
}
④编写NewController类
@GetMapping("/news")
public String news(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)
Pageable pageable, NewQuery newQuery, Model model){
model.addAttribute("types",typeService.listType());
model.addAttribute("page",newService.listNew(pageable,newQuery));
return LIST;
}
⑤界面展示
(3)主页分类
①编写TypeRepository类
@Query("select t from Type t")
List<Type> findTop(Pageable pageable);
②编写TypeService类
List<Type> listType();
List<Type> listTypeTop(Integer size);
③编写TypeServiceImpl类
@Override
public List<Type> listType() {
return typeRepository.findAll();
}
@Override
public List<Type> listTypeTop(Integer size) {
Sort sort = Sort.by(Sort.Direction.DESC,"news.size");
Pageable pageable = PageRequest.of(0,size,sort);
return typeRepository.findTop(pageable);
}
④编写TypeController类
@RequestMapping("/types")
public String type(@PageableDefault(size = 3,sort = {"id"},direction = Sort.Direction.DESC)
Pageable pageable, Model model){
model.addAttribute("page",typeService.listType(pageable));
// System.out.println("page:"+typeService.listType(pageable));
return "admin/types";
}
⑤界面展示
(4)主页标签
①编写TagRepository类
@Query("select t from Tag t")
List<Tag> findTop(Pageable pageable);
②编写TagService类
List<Tag> listTag(String ids);
List<Tag> listTagTop(Integer size);
③编写TagServiceImpl类
@Override
public List<Tag> listTag(String ids){
return tagRepository.findAllById(convertToList(ids));
}
@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);
}
④编写TagController类
@RequestMapping("/tags")
public String tags(@PageableDefault(size = 3,sort = {"id"},direction = Sort.Direction.DESC)
Pageable pageable, Model model){
model.addAttribute("page",tagService.listTag(pageable));
return "admin/tags";
}
⑤界面展示
(5)主页最新推荐
①编写NewRepository类
@Query("select n from News n where n.recommend = true")
List<News> findTop(Pageable pageable);
②编写NewService类
//主页推荐最新新闻列表
List<News> listRecommendNewTop(Integer size);
③编写NewServiceImpl类
@Override
public List<News> listRecommendNewTop(Integer size) {
Sort sort = Sort.by(Sort.Direction.DESC,"updateTime");
Pageable pageable = PageRequest.of(0,size,sort);
return newRepository.findTop(pageable);
}
④编写NewController类
@GetMapping("/news")
public String news(@PageableDefault(size = 3,sort = {"updateTime"},direction = Sort.Direction.DESC)
Pageable pageable, NewQuery newQuery, Model model){
model.addAttribute("types",typeService.listType());
model.addAttribute("page",newService.listNew(pageable,newQuery));
return LIST;
}
⑤界面展示
(6)主页新闻搜索
①编写NewRepository类
@Query("select n from News n where n.title like ?1 or n.content like ?1")
Page<News> findByQuery(String query, Pageable pageable);
②编写NewService类
//全局搜索
Page<News> listNew(String query,Pageable pageable);
③编写NewServiceImpl类
@Override
public Page<News> listNew(String query, Pageable pageable) {
return newRepository.findByQuery(query,pageable);
}
④编写NewController类
@PostMapping("/news/search")
public String search(@PageableDefault(size=3,sort={"updateTime"},direction = Sort.Direction.DESC)
Pageable pageable,NewQuery newQuery,Model model){
model.addAttribute("page",newService.listNew(pageable,newQuery));
return "admin/news :: newsList";
}
⑤界面展示
2.添加数据源
3.详细页
①编写IndexController类
@RequestMapping("/news/{id}")
public String news(@PathVariable Long id,Model model){
model.addAttribute("news",newService.getAndConvert(id));
return "new";
}
②编写NewService类
News getAndConvert(Long id);
③编写NewServiceImpl类
@Override
public News getAndConvert(Long id) {
News news = newRepository.findById(id).orElse(null);
if(news==null){
System.out.println("给新闻不存在");
}
News news1 = new News();
BeanUtils.copyProperties(news,news1);
System.out.println("转换前:"+news1.getContent());
String connect = news1.getContent();
news1.setContent(MarkdownUtils.markdownToHtmlExtensions(connect));
System.out.println("转换后:"+news1.getContent());
return news1;
}
④界面展示