tsurumure vor 5 Monaten
Ursprung
Commit
e25b93487a

+ 4 - 4
db/cms_navigation_i18n.sql

@@ -18,10 +18,10 @@ CREATE TABLE `cms_navigation_i18n` (
 INSERT INTO cms_navigation_i18n(navigation_id, language, navigation_name, link, link_start_with) VALUES
     (1, 'zh', '首页', '/', null),
     (1, 'en', 'Home', '/', null),
-    (2, 'zh', '关于我们', '/pages/about', null),
-    (2, 'en', 'About', '/pages/about', null),
+    (2, 'zh', '关于我们', '/page/about', null),
+    (2, 'en', 'About', '/page/about', null),
     (3, 'zh', '资讯中心', '/article/list', '/article'),
     (3, 'en', 'Article', '/article/list', '/article'),
-    (3, 'zh', '联系我们', '/pages/concat', null),
-    (3, 'en', 'Concat us', '/pages/concat', null)
+    (3, 'zh', '联系我们', '/page/contact', null),
+    (3, 'en', 'Concat us', '/page/contact', null)
 ;

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

@@ -61,7 +61,7 @@ public class ArticleServiceImpl implements ArticleService {
     public Article selectArticle(String lang, String uid) {
 
         // [Get] 详情
-        Article detail = articleDao.selectOne(new LambdaQueryWrapper<Article>().eq(Article::getUid, uid));
+        Article detail = articleDao.selectOne(new LambdaQueryWrapper<Article>().eq(Article::getUid, uid).eq(Article::getStatus, 1));
         if (detail == null) return null;
 
         // [Get] 翻译

+ 6 - 0
src/main/java/com/backendsys/modules/cms/page/entity/Page.java

@@ -35,6 +35,12 @@ public class Page {
     private String title;
     @TableField(exist = false)
     private String description;
+    @TableField(exist = false)
+    private String content;
+    @TableField(exist = false)
+    private String meta_keyword;
+    @TableField(exist = false)
+    private String meta_description;
 
     @Range(min = 1, max = 9999, message = "排序必须在 {min} 到 {max} 之间", groups = { Create.class, Update.class })
     private Integer sort;

+ 2 - 0
src/main/java/com/backendsys/modules/cms/page/service/PageService.java

@@ -11,6 +11,8 @@ public interface PageService {
     PageEntity selectPageList(Page page);
     // 获取单页详情
     Map<String, Object> selectPageDetail(Page page);
+    // 获取单页详情 (视图)
+    Page selectPage(String lang, String page_sign);
     // 创建单页
     Map<String, Object> insertPage(Page page);
     // 编辑单页

+ 28 - 3
src/main/java/com/backendsys/modules/cms/page/service/impl/PageServiceImpl.java

@@ -1,7 +1,6 @@
 package com.backendsys.modules.cms.page.service.impl;
 
 import com.backendsys.exception.CustException;
-import com.backendsys.modules.cms.article.entity.ArticleI18n;
 import com.backendsys.modules.cms.page.dao.PageDao;
 import com.backendsys.modules.cms.page.dao.PageI18nDao;
 import com.backendsys.modules.cms.page.entity.Page;
@@ -12,7 +11,6 @@ import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,7 +24,6 @@ public class PageServiceImpl implements PageService {
 
     @Autowired
     private PageDao pageDao;
-
     @Autowired
     private PageI18nDao pageI18nDao;
 
@@ -50,6 +47,34 @@ public class PageServiceImpl implements PageService {
         return detail;
     }
 
+    /**
+     * 获取单页详情 (视图)
+     */
+    @Override
+    public Page selectPage(String lang, String page_sign) {
+
+        // [Get] 详情
+        Page detail = pageDao.selectOne(new LambdaQueryWrapper<Page>().eq(Page::getPage_sign, page_sign));
+        if (detail == null) return null;
+
+        // [Get] 翻译
+        LambdaQueryWrapper<PageI18n> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(PageI18n::getLanguage, lang);
+        wrapper.eq(PageI18n::getPage_sign, detail.getPage_sign());
+        PageI18n i18nDetail = pageI18nDao.selectOne(wrapper);
+        if (i18nDetail == null) return null;
+
+        // [拼接] 详情 + 翻译
+        detail.setTitle(i18nDetail.getTitle());
+        detail.setDescription(i18nDetail.getDescription());
+        detail.setContent(i18nDetail.getContent());
+        detail.setMeta_keyword(i18nDetail.getMeta_keyword());
+        detail.setMeta_description(i18nDetail.getMeta_description());
+
+        return detail;
+
+    }
+
     /**
      * 创建单页
      */

+ 1 - 6
src/main/java/com/backendsys/modules/cms/template/ViewArticleController.java → src/main/java/com/backendsys/modules/cms/template/ArticleViewController.java

@@ -1,19 +1,15 @@
 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;
@@ -28,11 +24,10 @@ import java.util.Locale;
 import java.util.Map;
 
 @Controller
-public class ViewArticleController {
+public class ArticleViewController {
 
     @Autowired
     private MessageSource messageSource;
-
     @Autowired
     private ArticleService articleService;
     @Autowired

+ 1 - 1
src/main/java/com/backendsys/modules/cms/template/ViewIndexController.java → src/main/java/com/backendsys/modules/cms/template/IndexViewController.java

@@ -8,7 +8,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 
 @Controller
-public class ViewIndexController {
+public class IndexViewController {
 
     @Pages
     @GetMapping({"/"})

+ 42 - 0
src/main/java/com/backendsys/modules/cms/template/PageViewController.java

@@ -0,0 +1,42 @@
+package com.backendsys.modules.cms.template;
+
+import cn.hutool.core.convert.Convert;
+import com.backendsys.modules.cms.article.entity.Article;
+import com.backendsys.modules.cms.page.entity.Page;
+import com.backendsys.modules.cms.page.service.PageService;
+import com.backendsys.modules.common.aspect.Pages;
+import io.swagger.v3.oas.annotations.Operation;
+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 java.util.Locale;
+
+@Controller
+public class PageViewController {
+
+    @Autowired
+    private PageService pageService;
+
+    @Pages
+    @Operation(summary = "单页详情 (视图)")
+    @GetMapping({"/page/{page_sign}"})
+    public String page(Model model, @PathVariable("page_sign") String page_sign) {
+
+        String lang = Convert.toStr(model.getAttribute("lang"));
+
+        // [Get] 获取单页详情 ----------------------------------------------
+        Page pageDetail = pageService.selectPage(lang, page_sign);
+        if (pageDetail == null) return "error";
+        model.addAttribute("pageDetail", pageDetail);
+
+        // -- Layout ---------------------------------------------
+        model.addAttribute("title", pageDetail.getTitle());
+        model.addAttribute("layout", "page");
+        return "layout/layout";
+    }
+
+}

+ 1 - 0
src/main/resources/i18n/locale_en.properties

@@ -11,6 +11,7 @@ index.section2.title = HOT REVIEWS
 
 article.title = Article
 articleDetail.title = Article Detail
+page.title = Page
 
 sub.sider.title.nav = Navigation
 

+ 1 - 0
src/main/resources/i18n/locale_zh.properties

@@ -11,6 +11,7 @@ index.section2.title = 热门评测
 
 article.title = 资讯中心
 articleDetail.title = 资讯详情
+page.title = 内容中心
 
 sub.sider.title.nav = 导航