tsurumure hace 5 meses
padre
commit
28e95cbe53

+ 5 - 1
src/main/java/com/backendsys/modules/cms/article/service/ArticleCategoryService.java

@@ -3,14 +3,18 @@ package com.backendsys.modules.cms.article.service;
 import com.backendsys.modules.cms.article.entity.ArticleCategory;
 import com.backendsys.utils.response.PageEntity;
 
+import java.util.List;
 import java.util.Map;
 
 public interface ArticleCategoryService {
 
     // 获取资讯列表
-    PageEntity selectArticleCategoryList(ArticleCategory article);
+    PageEntity selectArticleCategoryList(ArticleCategory articleCategory);
+    // 获取资讯列表 (视图)
+    List<ArticleCategory> selectArticleCategory(ArticleCategory articleCategory);
     // 获取资讯详情
     Map<String, Object> selectArticleCategoryDetail(ArticleCategory article);
+
     // 创建资讯
     Map<String, Object> insertArticleCategory(ArticleCategory article);
     // 编辑资讯

+ 1 - 1
src/main/java/com/backendsys/modules/cms/article/service/ArticleService.java

@@ -12,7 +12,7 @@ public interface ArticleService {
     // 获取资讯详情
     Map<String, Object> selectArticleDetail(Article article);
 
-    // 获取资讯详情 (指定)
+    // 获取资讯详情 (视图)
     Article selectArticle(String lang, String uid);
 
     // 创建资讯

+ 10 - 2
src/main/java/com/backendsys/modules/cms/article/service/impl/ArticleCategoryServiceImpl.java

@@ -32,12 +32,20 @@ public class ArticleCategoryServiceImpl implements ArticleCategoryService {
      * 获取资讯分类列表
      */
     @Override
-    public PageEntity selectArticleCategoryList(ArticleCategory article) {
+    public PageEntity selectArticleCategoryList(ArticleCategory articleCategory) {
         PageUtils.startPage();  // 分页
-        List<ArticleCategory> list = articleCategoryDao.selectArticleCategoryList(article);
+        List<ArticleCategory> list = articleCategoryDao.selectArticleCategoryList(articleCategory);
         return new PageInfoResult(list).toEntity();
     }
 
+    /**
+     * 获取资讯列表 (视图)
+     */
+    @Override
+    public List<ArticleCategory> selectArticleCategory(ArticleCategory articleCategory) {
+        return articleCategoryDao.selectArticleCategoryList(articleCategory);
+    }
+
     /**
      * 获取资讯分类详情
      */

+ 1 - 1
src/main/java/com/backendsys/modules/cms/article/service/impl/ArticleServiceImpl.java

@@ -55,7 +55,7 @@ public class ArticleServiceImpl implements ArticleService {
     }
 
     /**
-     * 获取资讯详情 (公开)
+     * 获取资讯详情 (视图)
      */
     @Override
     public Article selectArticle(String lang, String uid) {

+ 46 - 34
src/main/java/com/backendsys/modules/cms/template/ViewArticleController.java

@@ -3,29 +3,43 @@ package com.backendsys.modules.cms.template;
 import cn.hutool.core.convert.Convert;
 import com.backendsys.modules.cms.article.dao.ArticleDao;
 import com.backendsys.modules.cms.article.entity.Article;
+import com.backendsys.modules.cms.article.entity.ArticleCategory;
+import com.backendsys.modules.cms.article.service.ArticleCategoryService;
 import com.backendsys.modules.cms.article.service.ArticleService;
+import com.backendsys.modules.cms.siteinfo.entity.SiteInfo;
 import com.backendsys.modules.common.aspect.Pages;
 import com.backendsys.modules.common.utils.CookieUtil;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.v2.PageUtils;
+import io.swagger.v3.oas.annotations.Operation;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 @Controller
 public class ViewArticleController {
 
+    @Autowired
+    private MessageSource messageSource;
+
     @Autowired
     private ArticleService articleService;
+    @Autowired
+    private ArticleCategoryService articleCategoryService;
 
     @Pages
+    @Operation(summary = "资讯列表 (视图)")
     @GetMapping({"/article/list"})
     public String article(Model model,
         @RequestParam(value = "page_num", defaultValue = "1") Integer pageNum,
@@ -36,64 +50,62 @@ public class ViewArticleController {
 
         String lang = Convert.toStr(model.getAttribute("lang"));
 
-        // [Get] 获取资讯列表
+        // [Get] 获取资讯列表 -------------------------------------------------
+        // [Condition] 查询条件
         Article article = new Article();
         article.setLang(lang);
         article.setTitle(title);
         article.setCategory_id(categoryId);
-        //
-        PageUtils.startPage(pageNum, pageSize);  // 分页
+        // [Condition] 分页
+        PageUtils.startPage(pageNum, pageSize);
         PageEntity articleList = articleService.selectArticleList(article);
         model.addAttribute("articleList", articleList);
 
-//
-//        // [Get] 资讯分类
-//        List<Map<String, Object>> categoryList = articleCategoryService.queryArticleCategoryActive();
-//        String categoryName = null;
-//        if ("zh".equals(lang)) {
-//            categoryName = (String) categoryList.stream()
-//                    .filter(cate -> cate.get("id").equals(categoryId))
-//                    .map(cate -> cate.get("category_name"))
-//                    .findFirst().orElse(null);
-//        }
-//        if ("en".equals(lang)) {
-//            categoryName = (String) categoryList.stream()
-//                    .filter(cate -> cate.get("id").equals(categoryId))
-//                    .map(cate -> cate.get("category_name_en"))
-//                    .findFirst().orElse(null);
-//        }
-//
-//
-//        model.addAttribute("isBrand", true);
-//        model.addAttribute("articleCategory", categoryList);
-//
-//        Map<String, Object> parameters = new LinkedHashMap<>();
-//        parameters.put("title", title);
-//        parameters.put("category_id", categoryId);
-//        parameters.put("category_name", categoryName);
-//        model.addAttribute("parameters", parameters);
+        // [Get] 获取资讯分类列表 ---------------------------------------------
+        ArticleCategory articleCategory = new ArticleCategory();
+        articleCategory.setLang(lang);
+        articleCategory.setStatus(1);
+        List<ArticleCategory> articleCategoryList = articleCategoryService.selectArticleCategory(articleCategory);
+        System.out.println(articleCategoryList);
+        model.addAttribute("articleCategoryList", articleCategoryList);
+
+        // 参数暴露
+        Map<String, Object> parameters = new LinkedHashMap<>();
+        parameters.put("title", title);
+        parameters.put("category_id", categoryId);
+        model.addAttribute("parameters", parameters);
 
         // -- Layout ---------------------------------------------
-        model.addAttribute("title", "zh".equals(lang) ? "资讯中心": "Aricle");
+        String titleTranslate = messageSource.getMessage("article.title", null, new Locale(lang));
+        model.addAttribute("title", titleTranslate);
+
         model.addAttribute("layout", "article");
         return "layout/layout";
     }
 
 
     @Pages
+    @Operation(summary = "资讯详情 (视图)")
     @GetMapping({"/articleDetail/{uid}"})
     public String articleDetail(Model model, @PathVariable("uid") String uid) {
 
         String lang = Convert.toStr(model.getAttribute("lang"));
 
-        // [Get] 获取资讯详情
+        // [Get] 获取资讯详情 ----------------------------------------------
         Article articleDetail = articleService.selectArticle(lang, uid);
         if (articleDetail == null) return "error";
-
         model.addAttribute("articleDetail", articleDetail);
 
-        // -- Layout ---------------------------------------------
-        model.addAttribute("title", articleDetail.getTitle() + "- 资讯详情");
+        // -- Layout -----------------------------------------------------
+        String titleTranslate = messageSource.getMessage("articleDetail.title", null, new Locale(lang));
+        model.addAttribute("title", articleDetail.getTitle() + " - " + titleTranslate);
+
+        // 重载页头信息
+        SiteInfo siteInfo = (SiteInfo) model.getAttribute("siteInfo");
+        siteInfo.setMeta_keyword(articleDetail.getMeta_keyword());
+        siteInfo.setMeta_description(articleDetail.getMeta_description());
+        model.addAttribute("siteInfo", siteInfo);
+
         model.addAttribute("layout", "articleDetail");
         return "layout/layout";
     }

+ 3 - 2
src/main/resources/i18n/locale_en.properties

@@ -9,9 +9,10 @@ top.welcome = Welcome to consult, WeChat ID:
 index.section1.title = Newest
 index.section2.title = HOT REVIEWS
 
+article.title = Article
+articleDetail.title = Article Detail
+
 sub.sider.title.nav = Navigation
-sub.sider.welcome = Welcome to consult,
-sub.sider.wechat = WeChat ID:
 
 footer.menu.home = Homepage
 footer.menu.product = Product

+ 3 - 2
src/main/resources/i18n/locale_zh.properties

@@ -9,9 +9,10 @@ top.welcome = 欢迎咨询,微信号:
 index.section1.title = 最新评测
 index.section2.title = 热门评测
 
+article.title = 资讯中心
+articleDetail.title = 资讯详情
+
 sub.sider.title.nav = 导航
-sub.sider.welcome = 欢迎咨询,
-sub.sider.wechat = 微信号:
 
 footer.menu.home = 首页
 footer.menu.product = 产品

+ 26 - 26
src/main/resources/templates/__article.html

@@ -67,31 +67,31 @@
   var lang = $.cookie('lang')
 
   // [Click] 分类
-    $('#category-bar > li > a').on('click', function(){
-        var category_id = $(this).attr('data-category-id')
-        if (category_id) {
-            window.location.href = QueryString.updateParams({ category_id: parseInt(category_id) })
-        } else {
-            window.location.href = window.location.href.split('?')[0];
-        }
-    })
-    // [Click] 分页
+  $('#category-bar > li > a').on('click', function(){
+      var category_id = $(this).attr('data-category-id')
+      if (category_id) {
+          window.location.href = QueryString.updateParams({ category_id: parseInt(category_id) })
+      } else {
+          window.location.href = window.location.href.split('?')[0];
+      }
+  })
+  // [Click] 分页
   console.log(lang)
-    layui.use('laypage', function(){
-        var laypage = layui.laypage
-        laypage.render({
-            elem: 'pagination-bar', theme: '#333e46',
-            prev: (lang == 'zh' ? '上一页' : 'Prev'),
-            next: (lang == 'zh' ? '下一页' : 'Next'),
-            count: [[${article.total}]], curr: [[${article.page_num}]], limit: [[${article.page_size}]],
-            jump: function(obj, first) {
-                // console.log(obj)
-                // 首次不执行
-                if (!first) {
-                  //do something
-                  window.location.href = QueryString.updateParams({ page_num: obj.curr, page_size: obj.limit })
-                }
-            }
-        })
-    })
+  layui.use('laypage', function(){
+      var laypage = layui.laypage
+      laypage.render({
+          elem: 'pagination-bar', theme: '#333e46',
+          prev: (lang == 'zh' ? '上一页' : 'Prev'),
+          next: (lang == 'zh' ? '下一页' : 'Next'),
+          count: [[${article.total}]], curr: [[${article.page_num}]], limit: [[${article.page_size}]],
+          jump: function(obj, first) {
+              // console.log(obj)
+              // 首次不执行
+              if (!first) {
+                //do something
+                window.location.href = QueryString.updateParams({ page_num: obj.curr, page_size: obj.limit })
+              }
+          }
+      })
+  })
 </script>

+ 31 - 1
src/main/resources/templates/article.html

@@ -2,6 +2,8 @@
 
   <div class="sub-section-main">
     <div class="wrapper">
+
+      <!-- 主要位置 -->
       <div class="sub-section-container">
         <div class="sub-section-container-title" th:text="${title}"></div>
         <div class="sub-section-container-content">
@@ -37,7 +39,7 @@
                 next: (lang == 'zh' ? '下一页' : 'Next'),
                 count: [[${articleList.total}]], curr: [[${articleList.page_num}]], limit: [[${articleList.page_size}]],
                 jump: function(obj, first) {
-                  console.log(obj)
+                  // console.log(obj)
                   // 首次不执行
                   if (!first) {
                     //do something
@@ -51,6 +53,34 @@
         </div>
       </div>
 
+      <!-- 侧边 -->
+      <div class="sub-section-sider">
+        <div class="sub-section-sider-title" th:text="#{category}"></div>
+
+        <div class="sub-section-sider-content">
+          <div class="article-category horizontal">
+            <ul id="category-bar">
+              <li class="mb-4"><a href="/article/list" th:classappend="${parameters.category_id == null ? 'active' : ''}">全部</a></li>
+              <li th:each="item, itemStat : ${articleCategoryList}">
+                <a th:href="@{'/article/list?category_id=' + ${item.article_category_id}}" th:text="${lang} == 'zh' ? ${item.category_name} : ${item.category_name_en}" th:data-category-id="${item.article_category_id}"
+                   th:classappend="(${item.article_category_id} == ${parameters.category_id} ? 'active' : '')"></a>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+      <script th:inline="javascript">
+        // // [Click] 分类
+        // $('#category-bar > li > a').on('click', function(){
+        //     var category_id = $(this).attr('data-category-id')
+        //     if (category_id) {
+        //         window.location.href = QueryString.updateParams({ category_id: parseInt(category_id) })
+        //     } else {
+        //         window.location.href = window.location.href.split('?')[0];
+        //     }
+        // })
+      </script>
+
     </div>
   </div>
 

+ 1 - 2
src/main/resources/templates/page.html

@@ -20,8 +20,7 @@
       <div class="sub-section-sider">
         <div class="sub-section-sider-title" th:text="#{sub.sider.title.nav}"></div>
         <div class="sub-section-sider-content">
-          <p th:text="#{sub.sider.welcome}"></p>
-          <p th:text="@{#{sub.sider.wechat} + ' cpnana8 / anywayto'}"></p>
+          <p>侧边信息</p>
         </div>
       </div>