Ver código fonte

web 模块更改为 restful 服务

reghao 3 meses atrás
pai
commit
4ce2681423

+ 19 - 45
web/src/main/java/cn/reghao/bnt/web/blog/controller/AdminArticleController.java

@@ -1,9 +1,9 @@
 package cn.reghao.bnt.web.blog.controller;
 
 import cn.reghao.bnt.web.blog.hibernate.HibernateLucene;
+import cn.reghao.jutil.jdk.web.db.PageList;
 import cn.reghao.jutil.jdk.web.result.Result;
 import cn.reghao.jutil.web.WebResult;
-import cn.reghao.jutil.web.ServletUtil;
 import cn.reghao.bnt.web.blog.service.ArticleQuery;
 import cn.reghao.bnt.web.blog.model.dto.ArticleDto;
 import cn.reghao.bnt.web.blog.model.po.Category;
@@ -15,13 +15,10 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.data.domain.Page;
 import org.springframework.http.MediaType;
-import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.ServletRequestUtils;
 import org.springframework.web.bind.annotation.*;
 
-import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -29,13 +26,14 @@ import java.util.List;
  * @date 2023-04-17 10:15:39
  */
 @Tag(name = "博客文章接口")
-@Controller
-@RequestMapping("/bg/blog/post")
+@RestController
+@RequestMapping("/api/blog/v2/post")
 public class AdminArticleController {
     private final ArticleService articleService;
     private final ArticleQuery articleQuery;
     private final CategoryService categoryService;
     private final HibernateLucene hibernateLucene;
+    private int pageSize = 10;
 
     public AdminArticleController(ArticleService articleService, ArticleQuery articleQuery,
                                   CategoryService categoryService, HibernateLucene hibernateLucene) {
@@ -47,33 +45,22 @@ public class AdminArticleController {
 
     @Operation(summary = "博客文章列表页面", description = "N")
     @GetMapping("/list")
-    public String list(ModelMap model, HttpServletRequest request) {
-        int id = ServletRequestUtils.getIntParameter(request, "id", 0);
-        int pageNumber = Integer.parseInt(ServletUtil.getRequestParam("pageNo", "1"));
-        Long categoryId1 = Long.parseLong(ServletUtil.getRequestParam("categoryId", "0"));
-        Integer published = Integer.parseInt(ServletUtil.getRequestParam("published", "0"));
-        String title1 = ServletUtil.getRequestParam("title", "");
-        Page<AdminArticle> page1 = articleQuery.findAdminArticleByPage(10, pageNumber, categoryId1, published, title1);
-
-        String queryParams = "";
-        if (categoryId1 != 0) {
-            queryParams += "?categoryId=" + categoryId1;
-        }
-
-        if (published != 0) {
-            queryParams += "?published=" + published;
-        }
-
-        model.put("id", id);
-        model.put("title", title1);
-        model.put("categoryId", categoryId1);
-        model.put("published", published);
-        model.addAttribute("query", queryParams);
-        model.put("page", page1);
-
+    public String list(@RequestParam("pn") int pageNumber,
+                       @RequestParam("categoryId") int categoryId,
+                       @RequestParam("published") int published,
+                       @RequestParam("title") String title) {
+        Page<AdminArticle> page1 = articleQuery.findAdminArticleByPage(pageSize, pageNumber, categoryId, published, title);
+        PageList<AdminArticle> pageList = getPageList(page1);
         List<Category> list = categoryService.findAllCategory();
-        model.put("categories", list);
-        return "/admin/blog/post/list";
+        return WebResult.success(pageList);
+    }
+
+    private PageList<AdminArticle> getPageList(Page<AdminArticle> page) {
+        int pageNumber = page.getNumber() + 1;
+        int pageSize = page.getSize();
+        long total = page.getTotalElements();
+        List<AdminArticle> list = page.getContent();
+        return PageList.pageList(pageNumber, pageSize, (int) total, list);
     }
 
     @Operation(summary = "新建/编辑文章页面", description = "N")
@@ -143,17 +130,4 @@ public class AdminArticleController {
         hibernateLucene.resetIndexes();
         return WebResult.success();
     }
-
-    @Operation(summary = "博客文章列表页面", description = "N")
-    @GetMapping("/list1")
-    @ResponseBody
-    public String list1(HttpServletRequest request) {
-        int id = ServletRequestUtils.getIntParameter(request, "id", 0);
-        int pageNumber = Integer.parseInt(ServletUtil.getRequestParam("pageNo", "1"));
-        Long categoryId1 = Long.parseLong(ServletUtil.getRequestParam("categoryId", "0"));
-        Integer published = Integer.parseInt(ServletUtil.getRequestParam("published", "0"));
-        String title1 = ServletUtil.getRequestParam("title", "");
-        Page<AdminArticle> page1 = articleQuery.findAdminArticleByPage(10, pageNumber, categoryId1, published, title1);
-        return WebResult.success(page1.getContent());
-    }
 }

+ 29 - 39
web/src/main/java/cn/reghao/bnt/web/blog/controller/AdminQuestionController.java

@@ -1,9 +1,9 @@
 package cn.reghao.bnt.web.blog.controller;
 
 import cn.reghao.bnt.web.blog.model.dto.QuestionUpdateDto;
+import cn.reghao.jutil.jdk.web.db.PageList;
 import cn.reghao.jutil.jdk.web.result.Result;
 import cn.reghao.jutil.jdk.web.result.WebResult;
-import cn.reghao.jutil.web.ServletUtil;
 import cn.reghao.bnt.web.blog.model.dto.QuestionDto;
 import cn.reghao.bnt.web.blog.model.po.Category;
 import cn.reghao.bnt.web.blog.model.po.Question;
@@ -14,13 +14,10 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.data.domain.Page;
 import org.springframework.http.MediaType;
-import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.ServletRequestUtils;
 import org.springframework.web.bind.annotation.*;
 
-import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -28,11 +25,12 @@ import java.util.List;
  * @date 2023-04-17 10:15:39
  */
 @Tag(name = "面试题接口")
-@Controller
-@RequestMapping("/bg/blog/interview")
+@RestController
+@RequestMapping("/api/blog/v2/question")
 public class AdminQuestionController {
     private final CategoryService categoryService;
     private final QuestionService questionService;
+    private int pageSize = 100;
 
     public AdminQuestionController(CategoryService categoryService, QuestionService questionService) {
         this.categoryService = categoryService;
@@ -40,33 +38,25 @@ public class AdminQuestionController {
     }
 
     @Operation(summary = "面试题列表页面", description = "N")
-    @GetMapping("/question/list")
-    public String list(ModelMap model, HttpServletRequest request) {
-        int id = ServletRequestUtils.getIntParameter(request, "id", 0);
-        int pageNumber = Integer.parseInt(ServletUtil.getRequestParam("pageNo", "1"));
-        int categoryId1 = Integer.parseInt(ServletUtil.getRequestParam("categoryId", "0"));
-        String title1 = ServletUtil.getRequestParam("title", "");
-        int pageSize = 100;
-        Page<QuestionView> page0 = questionService.findQuestionByPage(pageSize, pageNumber, categoryId1);
-
-        String queryParams = "";
-        if (categoryId1 != 0) {
-            queryParams += "?categoryId=" + categoryId1;
-        }
-
-        model.put("id", id);
-        model.put("title", title1);
-        model.put("categoryId", categoryId1);
-        model.addAttribute("query", queryParams);
-        model.put("page", page0);
+    @GetMapping("/list")
+    public String list(@RequestParam("pn") int pageNumber,
+                       @RequestParam("categoryId") int categoryId,
+                       @RequestParam("title") String title) {
+        Page<QuestionView> page0 = questionService.findQuestionByPage(pageSize, pageNumber, categoryId);
+        PageList<QuestionView> pageList = getPageList(page0);
+        return WebResult.success(pageList);
+    }
 
-        List<Category> list = questionService.getCategories();
-        model.put("categories", list);
-        return "/admin/blog/question/list";
+    private PageList<QuestionView> getPageList(Page<QuestionView> page) {
+        int pageNumber = page.getNumber() + 1;
+        int pageSize = page.getSize();
+        long total = page.getTotalElements();
+        List<QuestionView> list = page.getContent();
+        return PageList.pageList(pageNumber, pageSize, (int) total, list);
     }
 
     @Operation(summary = "添加面试题页面", description = "N")
-    @GetMapping("/question/new")
+    @GetMapping("/new")
     public String addArticlePage(String editor, ModelMap model) {
         if (editor == null) {
             editor = "markdown";
@@ -76,11 +66,11 @@ public class AdminQuestionController {
         model.put("editor", editor);
         model.put("editors", List.of("markdown", "tinymce"));
         model.put("categories", list);
-        return "/admin/blog/question/new";
+        return "/admin/blog/new";
     }
 
     @Operation(summary = "添加面试题接口", description = "N")
-    @PostMapping(value = "/question/add", produces = MediaType.APPLICATION_JSON_VALUE)
+    @PostMapping(value = "/add", produces = MediaType.APPLICATION_JSON_VALUE)
     @ResponseBody
     public String addArticle(@Validated QuestionDto questionDto) {
         Result result = questionService.addQuestion(questionDto);
@@ -88,23 +78,23 @@ public class AdminQuestionController {
     }
 
     @Operation(summary = "修改面试题页面", description = "N")
-    @GetMapping("/question/edit")
+    @GetMapping("/edit")
     public String edit(String questionId, ModelMap model) {
         Question question = questionService.findByQuestionId(questionId);
         model.put("editor", "markdown");
         model.put("view", question);
-        return "/admin/blog/question/edit";
+        return "/admin/blog/edit";
     }
 
     @Operation(summary = "修改面试题接口", description = "N")
-    @PostMapping(value = "/question/update")
+    @PostMapping(value = "/update")
     public String updateArticle(@Validated QuestionUpdateDto questionUpdateDto) {
         questionService.updateQuestion(questionUpdateDto);
-        return "redirect:/bg/blog/interview/question/list";
+        return "redirect:/bg/blog/interview/list";
     }
 
     @Operation(summary = "面试题加权重接口", description = "N")
-    @PostMapping(value = "/question/weight/add", produces = MediaType.APPLICATION_JSON_VALUE)
+    @PostMapping(value = "/weight/add", produces = MediaType.APPLICATION_JSON_VALUE)
     @ResponseBody
     public String addWeight(String questionId) {
         questionService.addWeight(questionId);
@@ -112,7 +102,7 @@ public class AdminQuestionController {
     }
 
     @Operation(summary = "面试题减权重接口", description = "N")
-    @PostMapping(value = "/question/weight/minus", produces = MediaType.APPLICATION_JSON_VALUE)
+    @PostMapping(value = "/weight/minus", produces = MediaType.APPLICATION_JSON_VALUE)
     @ResponseBody
     public String minusWeight(String questionId) {
         questionService.minusWeight(questionId);
@@ -120,7 +110,7 @@ public class AdminQuestionController {
     }
 
     @Operation(summary = "删除面试题接口", description = "N")
-    @PostMapping(value = "/question/delete", produces = MediaType.APPLICATION_JSON_VALUE)
+    @PostMapping(value = "/delete", produces = MediaType.APPLICATION_JSON_VALUE)
     @ResponseBody
     public String delete(@RequestParam("questionId") List<String> questionIds) {
         questionService.deleteQuestions(questionIds);
@@ -138,6 +128,6 @@ public class AdminQuestionController {
         }
 
         model.put("view", questionView);
-        return "/admin/blog/question/view";
+        return "/admin/blog/view";
     }
 }

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/service/ArticleQuery.java

@@ -222,7 +222,7 @@ public class ArticleQuery {
         return new PageImpl<>(list1, pageable, total);
     }
 
-    public Page<AdminArticle> findAdminArticleByPage(int pageSize, int pageNumber, Long categoryId, int published, String title) {
+    public Page<AdminArticle> findAdminArticleByPage(int pageSize, int pageNumber, int categoryId, int published, String title) {
         Specification<Article> specification = (root, query, cb) -> {
             List<Predicate> predicates = new ArrayList<>();
             if (!title.isBlank()) {