浏览代码

Finish page api

tsurumure 5 月之前
父节点
当前提交
3bb7763725

+ 3 - 1
db/sys_user_role_permission.sql

@@ -145,7 +145,9 @@ INSERT INTO sys_user_role_permission(id, parent_id, permission_name, sort) VALUE
     ('12', -1, '单页管理', null),
         ('12.1', '12', '单页列表', null),
         ('12.2', '12', '单页详情', null),
-        ('12.3', '12', '编辑单页', null),
+        ('12.3', '12', '创建单页', null),
+        ('12.4', '12', '编辑单页', null),
+        ('12.5', '12', '删除单页', null),
 
     ('13', -1, '站点管理', null),
         ('13.1', '13', '编辑站点信息', null),

+ 1 - 1
db/sys_user_role_permission_relation.sql

@@ -68,7 +68,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
 #         (1, '11.6'),
 #             (1, '11.6.1'), (1, '11.6.2'), (1, '11.6.3'), (1, '11.6.4'),
     (1, '12'),
-        (1, '12.1'), (1, '12.2'), (1, '12.3'),
+        (1, '12.1'), (1, '12.2'), (1, '12.3'), (1, '12.4'), (1, '12.5'),
 
 
     (1, '13'),

+ 6 - 6
src/main/java/com/backendsys/controller/Cms/CmsPageController.java

@@ -48,12 +48,12 @@ public class CmsPageController {
 //        return Result.success(cmsPageService.queryPageDetail(cmsPageDTO));
 //    }
 
-    @PreAuthorize("@sr.hasPermission('12.3')")
-    // @QueryNullCheck(serviceClass = CmsPageService.class, serviceMethod = "queryPageDetail", argField = "page_id", message = "资讯不存在")
-    @PutMapping("/api/cms/page/updatePage")
-    public Result updatePage(@Validated(CmsPageDTO.Update.class) @RequestBody CmsPageDTO cmsPageDTO) {
-        return Result.success(cmsPageService.updatePage(cmsPageDTO), "更新成功");
-    }
+//    @PreAuthorize("@sr.hasPermission('12.3')")
+//    // @QueryNullCheck(serviceClass = CmsPageService.class, serviceMethod = "queryPageDetail", argField = "page_id", message = "资讯不存在")
+//    @PutMapping("/api/cms/page/updatePage")
+//    public Result updatePage(@Validated(CmsPageDTO.Update.class) @RequestBody CmsPageDTO cmsPageDTO) {
+//        return Result.success(cmsPageService.updatePage(cmsPageDTO), "更新成功");
+//    }
 
     /**
      * 详情 (公共)

+ 22 - 4
src/main/java/com/backendsys/modules/cms/page/controller/PageController.java

@@ -1,7 +1,5 @@
 package com.backendsys.modules.cms.page.controller;
 
-import com.backendsys.entity.Cms.CmsPageDTO;
-import com.backendsys.entity.PageDTO;
 import com.backendsys.modules.cms.page.entity.Page;
 import com.backendsys.modules.cms.page.service.PageService;
 import com.backendsys.modules.common.utils.Result;
@@ -10,8 +8,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @Validated
 @RestController
@@ -35,4 +32,25 @@ public class PageController {
         return Result.success().put("data", pageService.selectPageDetail(page));
     }
 
+    @Operation(summary = "创建单页")
+    @PreAuthorize("@sr.hasPermission('12.3')")
+    @PostMapping("/api/cms/page/createPage")
+    public Result createPage(@Validated(Page.Create.class) @RequestBody Page page) {
+        return Result.success().put("data", pageService.insertPage(page));
+    }
+
+    @Operation(summary = "编辑单页")
+    @PreAuthorize("@sr.hasPermission('12.4')")
+    @PutMapping("/api/cms/page/updatePage")
+    public Result updatePage(@Validated(Page.Update.class) @RequestBody Page page) {
+        return Result.success().put("data", pageService.updatePage(page));
+    }
+
+    @Operation(summary = "删除单页")
+    @PreAuthorize("@sr.hasPermission('12.5')")
+    @DeleteMapping("/api/cms/page/deletePage")
+    public Result deletePage(@Validated(Page.Delete.class) @RequestBody Page page) {
+        return Result.success().put("data", pageService.deletePage(page));
+    }
+
 }

+ 13 - 0
src/main/java/com/backendsys/modules/cms/page/dao/PageI18nDao.java

@@ -0,0 +1,13 @@
+package com.backendsys.modules.cms.page.dao;
+
+import com.backendsys.modules.cms.page.entity.PageI18n;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface PageI18nDao extends BaseMapper<PageI18n> {
+    int insertBatch(List<PageI18n> translations);
+    int updateBatch(List<PageI18n> translations);
+}

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

@@ -28,7 +28,7 @@ public class Page {
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    @NotEmpty(message="内容标识不能为空", groups = { Create.class, Update.class, Detail.class })
+    @NotEmpty(message="内容标识不能为空", groups = { Create.class, Update.class, Delete.class, Detail.class })
     private String page_sign;
 
     @TableField(exist = false)

+ 0 - 1
src/main/java/com/backendsys/modules/cms/page/entity/PageI18n.java

@@ -23,7 +23,6 @@ public class PageI18n {
 
     @TableId(type = IdType.AUTO)
     private Long id;
-    @NotEmpty(message="内容标识不能为空", groups = { Create.class })
     private String page_sign;
     @Size(max = 20, message = "内容标题长度不超过 {max} 字符", groups = { Create.class, Update.class })
     @NotBlank(message="内容标题不能为空", groups = { Create.class, Update.class })

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

@@ -11,5 +11,11 @@ public interface PageService {
     PageEntity selectPageList(Page page);
     // 获取单页详情
     Map<String, Object> selectPageDetail(Page page);
+    // 创建单页
+    Map<String, Object> insertPage(Page page);
+    // 编辑单页
+    Map<String, Object> updatePage(Page page);
+    // 删除单页
+    Map<String, Object> deletePage(Page page);
 
 }

+ 72 - 1
src/main/java/com/backendsys/modules/cms/page/service/impl/PageServiceImpl.java

@@ -1,18 +1,25 @@
 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;
+import com.backendsys.modules.cms.page.entity.PageI18n;
 import com.backendsys.modules.cms.page.service.PageService;
+import com.backendsys.modules.common.utils.ValidationUtil;
 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;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class PageServiceImpl implements PageService {
@@ -20,6 +27,9 @@ public class PageServiceImpl implements PageService {
     @Autowired
     private PageDao pageDao;
 
+    @Autowired
+    private PageI18nDao pageI18nDao;
+
     /**
      * 获取单页列表
      */
@@ -35,7 +45,68 @@ public class PageServiceImpl implements PageService {
      */
     @Override
     public Map<String, Object> selectPageDetail(Page page) {
-        return pageDao.selectPageDetail(page);
+        Map<String, Object> detail = pageDao.selectPageDetail(page);
+        if (detail == null) throw new CustException("单页不存在");
+        return detail;
+    }
+
+    /**
+     * 创建单页
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> insertPage(Page page) {
+
+        Boolean isExist = pageDao.exists(new LambdaQueryWrapper<Page>().eq(Page::getPage_sign, page.getPage_sign()));
+        if (isExist) throw new CustException("单页标识: " + page.getPage_sign() + " 已存在");
+
+        // 插入
+        pageDao.insert(page);
+        // 批量插入 (翻译字段)
+        List<PageI18n> translations = page.getTranslations().stream()
+            .peek(item -> { ValidationUtil.validateObject(item, PageI18n.Create.class); })
+            .map(item -> { item.setPage_sign(page.getPage_sign()); return item; })
+            .collect(Collectors.toList());
+        pageI18nDao.insertBatch(translations);
+        return Map.of("page_sign", page.getPage_sign());
+    }
+
+    /**
+     * 编辑单页
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> updatePage(Page page) {
+
+        Boolean isExist = pageDao.exists(new LambdaQueryWrapper<Page>().eq(Page::getPage_sign, page.getPage_sign()));
+        if (!isExist) throw new CustException("单页不存在");
+
+        // 更新
+        pageDao.update(page, new LambdaQueryWrapper<Page>().eq(Page::getPage_sign, page.getPage_sign()));
+        // 批量更新 (翻译字段)
+        List<PageI18n> translations = page.getTranslations().stream()
+            .peek(item -> { ValidationUtil.validateObject(item, PageI18n.Update.class); })
+            .map(t -> { t.setPage_sign(page.getPage_sign()); return t; })
+            .collect(Collectors.toList());
+        pageI18nDao.updateBatch(translations);
+
+        return Map.of("page_sign", page.getPage_sign());
+    }
+
+    /**
+     * 删除单页
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> deletePage(Page page) {
+
+        Boolean isExist = pageDao.exists(new LambdaQueryWrapper<Page>().eq(Page::getPage_sign, page.getPage_sign()));
+        if (!isExist) throw new CustException("单页不存在");
+
+        pageDao.delete(new LambdaQueryWrapper<Page>().eq(Page::getPage_sign, page.getPage_sign()));
+        pageI18nDao.delete(new LambdaQueryWrapper<PageI18n>().eq(PageI18n::getPage_sign, page.getPage_sign()));
+
+        return Map.of("page_sign", page.getPage_sign());
     }
 
 }

+ 44 - 0
src/main/resources/mapper/cms/page/PageI18nDao.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.backendsys.modules.cms.page.dao.PageI18nDao">
+
+    <!-- 批量插入 -->
+    <insert id="insertBatch" parameterType="java.util.List">
+        INSERT INTO cms_page_i18n (
+            page_sign, language,
+            title, description, content, meta_keyword, meta_description
+        )
+        VALUES
+        <foreach collection="translations" item="item" separator=",">
+        (
+            #{item.page_sign}, #{item.language},
+            #{item.title}, #{item.description}, #{item.content},
+            #{item.meta_keyword}, #{item.meta_description}
+        )
+        </foreach>
+    </insert>
+
+    <!-- 批量更新 -->
+    <update id="updateBatch" parameterType="com.backendsys.modules.cms.page.entity.PageI18n">
+        <foreach collection="translations" item="item" separator=";">
+            UPDATE cms_page_i18n
+            <set>
+                <trim suffixOverrides="," suffix=" ">
+                    title = #{item.title},
+                    content = #{item.content},
+                    <if test="item.description != null and item.description != ''">
+                        description = #{item.description},
+                    </if>
+                    <if test="item.meta_keyword != null and item.meta_keyword != ''">
+                        meta_keyword = #{item.meta_keyword},
+                    </if>
+                    <if test="item.meta_description != null and item.meta_description != ''">
+                        meta_description = #{item.meta_description},
+                    </if>
+                </trim>
+            </set>
+            WHERE page_sign = #{item.page_sign} AND language = #{item.language}
+        </foreach>
+    </update>
+
+</mapper>