Files
blog-server/src/main/java/xin/merlin/myblog_server/controller/BasicController.java
2025-11-06 11:09:45 +08:00

104 lines
3.7 KiB
Java

package xin.merlin.myblog_server.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import xin.merlin.myblog_server.entity.Article;
import xin.merlin.myblog_server.entity.Comment;
import xin.merlin.myblog_server.entity.News;
import xin.merlin.myblog_server.service.impl.*;
import xin.merlin.myblog_server.utils.JwtUtil;
import xin.merlin.myblog_server.utils.RequestBack;
import xin.merlin.myblog_server.utils.enums.ResultCode;
import java.util.List;
@RestController
@RequestMapping("/blog")
public class BasicController {
@Resource
private NewsServiceImpl newsService;
@Autowired
private ArticleServiceImpl articleService;
@Autowired
private UserServiceImpl userService;
@Autowired
private CommentServiceImpl commentService;
@Autowired
private JwtUtil jwtUtil;
// 获取用户个人信息
@GetMapping("/get/userinfo")
public RequestBack getUserinfo(@RequestHeader("Authorization") String token) {
token = token.substring(7);
return RequestBack.success(ResultCode.SUCCESS,userService.getById(jwtUtil.getUId(token)));
}
// 获取新闻
@GetMapping("/get/news")
public RequestBack getNews(@RequestParam Integer current,@RequestParam Integer size) {
Page<News> page = new Page<>(current,size);
page.setOrders(List.of(OrderItem.desc("published")));
return RequestBack.success(ResultCode.SUCCESS,newsService.page(page));
}
// 搜索新闻
@PostMapping("/search/news")
public RequestBack searchNews(@RequestParam Integer current,
@RequestParam Integer size,
@RequestBody News news) {
Page<News> page = new Page<>(current, size);
QueryWrapper<News> qw = new QueryWrapper<>();
qw.like(news.getTitle() != null, "title", news.getTitle())
.orderByDesc("published");
IPage<News> result = newsService.page(page, qw);
return RequestBack.success(ResultCode.SUCCESS, result);
}
// 获取文章
@GetMapping("/get/article/{a_id}")
public RequestBack getArticle(@PathVariable Integer a_id) {
return RequestBack.success(ResultCode.SUCCESS,articleService.getById(a_id));
}
// 获取文章
@GetMapping("/get/articles")
public RequestBack getArticles(@RequestParam Integer current,@RequestParam Integer size) {
Page<Article> page = new Page<>(current,size);
page.setOrders(List.of(OrderItem.desc("published")));
return RequestBack.success(ResultCode.SUCCESS,articleService.page(page));
}
// 发表评论
@PostMapping("/publish/comment")
public RequestBack publishComment(@RequestBody Comment comment) {
commentService.save(comment);
return RequestBack.success(ResultCode.SUCCESS);
}
// 搜索新闻
@PostMapping("/search/articles")
public RequestBack searchArticles(@RequestParam Integer current,
@RequestParam Integer size,
@RequestBody Article article) {
Page<Article> page = new Page<>(current, size);
QueryWrapper<Article> qw = new QueryWrapper<>();
qw.like(article.getTitle() != null, "title", article.getTitle())
.orderByDesc("published");
IPage<Article> result = articleService.page(page, qw);
return RequestBack.success(ResultCode.SUCCESS, result);
}
// 联系管理员
}