Browse Source

Dev banner

tsurumure 5 months ago
parent
commit
84b6d4003d

+ 0 - 3
pom.xml

@@ -452,8 +452,6 @@
                 </includes>
             </resource>
         </resources>
-        <!--<finalName>backendsys</finalName>-->
-
 
         <plugins>
 
@@ -473,7 +471,6 @@
                 </configuration>
             </plugin>
 
-
             <!-- 如果不分包,则此处必填 -->
 <!--            <plugin>-->
 <!--                <groupId>org.springframework.boot</groupId>-->

+ 65 - 65
src/main/java/com/backendsys/controller/Cms/CmsBannerController.java

@@ -1,65 +1,65 @@
-package com.backendsys.controller.Cms;
-
-import com.backendsys.aspect.QueryNullCheck;
-import com.backendsys.aspect.QueryNullCheckAspect;
-import com.backendsys.entity.Cms.CmsBannerDTO;
-import com.backendsys.entity.PageDTO;
-import com.backendsys.service.Cms.CmsBannerService;
-import com.backendsys.utils.response.Result;
-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.*;
-
-/**
- * 幻灯片
- */
-@RestController
-public class CmsBannerController {
-
-    @Autowired
-    private CmsBannerService cmsBannerService;
-
-    @PreAuthorize("@sr.hasPermission('10.1')")
-    @GetMapping("/api/cms/banner/getBanner")
-    public Result getBanner(@Validated PageDTO pageDTO, @Validated CmsBannerDTO cmsBannerDTO) {
-        return Result.success(cmsBannerService.queryBanner(pageDTO.getPage_num(), pageDTO.getPage_size(), cmsBannerDTO));
-    }
-
-    @PreAuthorize("@sr.hasPermission('10.1.1')")
-    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
-    @GetMapping("/api/cms/banner/getBannerDetail")
-    public Result getBannerDetail(@Validated(CmsBannerDTO.Detail.class) CmsBannerDTO cmsBannerDTO) {
-        return Result.success(QueryNullCheckAspect.getQueryResult());
-    }
-
-    @PreAuthorize("@sr.hasPermission('10.1.2')")
-    @PostMapping("/api/cms/banner/createBanner")
-    public Result createBanner(@Validated(CmsBannerDTO.Create.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
-        return Result.success(cmsBannerService.insertBanner(cmsBannerDTO), "创建成功");
-    }
-
-    @PreAuthorize("@sr.hasPermission('10.1.3')")
-    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
-    @PutMapping("/api/cms/banner/updateBanner")
-    public Result updateBanner(@Validated(CmsBannerDTO.Update.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
-        return Result.success(cmsBannerService.updateBanner(cmsBannerDTO), "更新成功");
-    }
-
-    @PreAuthorize("@sr.hasPermission('10.1.4')")
-    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
-    @DeleteMapping("/api/cms/banner/deleteBanner")
-    public Result deleteBanner(@Validated(CmsBannerDTO.Delete.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
-        return Result.success(cmsBannerService.deleteBanner(cmsBannerDTO), "删除成功");
-    }
-
-    /**
-     * 幻灯片列表 (公共)
-     */
-    @GetMapping("/api/public/cms/banner/getBanner")
-    public Result getPublicBanner(@Validated PageDTO pageDTO, @Validated CmsBannerDTO cmsBannerDTO) {
-        cmsBannerDTO.setStatus(1); // 已启用
-        return Result.success(cmsBannerService.queryBanner(pageDTO.getPage_num(), pageDTO.getPage_size(), cmsBannerDTO));
-    }
-
-}
+//package com.backendsys.controller.Cms;
+//
+//import com.backendsys.aspect.QueryNullCheck;
+//import com.backendsys.aspect.QueryNullCheckAspect;
+//import com.backendsys.entity.Cms.CmsBannerDTO;
+//import com.backendsys.entity.PageDTO;
+//import com.backendsys.service.Cms.CmsBannerService;
+//import com.backendsys.utils.response.Result;
+//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.*;
+//
+///**
+// * 幻灯片
+// */
+//@RestController
+//public class CmsBannerController {
+//
+//    @Autowired
+//    private CmsBannerService cmsBannerService;
+//
+//    @PreAuthorize("@sr.hasPermission('10.1')")
+//    @GetMapping("/api/cms/banner/getBanner")
+//    public Result getBanner(@Validated PageDTO pageDTO, @Validated CmsBannerDTO cmsBannerDTO) {
+//        return Result.success(cmsBannerService.queryBanner(pageDTO.getPage_num(), pageDTO.getPage_size(), cmsBannerDTO));
+//    }
+//
+//    @PreAuthorize("@sr.hasPermission('10.1.1')")
+//    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
+//    @GetMapping("/api/cms/banner/getBannerDetail")
+//    public Result getBannerDetail(@Validated(CmsBannerDTO.Detail.class) CmsBannerDTO cmsBannerDTO) {
+//        return Result.success(QueryNullCheckAspect.getQueryResult());
+//    }
+//
+//    @PreAuthorize("@sr.hasPermission('10.1.2')")
+//    @PostMapping("/api/cms/banner/createBanner")
+//    public Result createBanner(@Validated(CmsBannerDTO.Create.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
+//        return Result.success(cmsBannerService.insertBanner(cmsBannerDTO), "创建成功");
+//    }
+//
+//    @PreAuthorize("@sr.hasPermission('10.1.3')")
+//    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
+//    @PutMapping("/api/cms/banner/updateBanner")
+//    public Result updateBanner(@Validated(CmsBannerDTO.Update.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
+//        return Result.success(cmsBannerService.updateBanner(cmsBannerDTO), "更新成功");
+//    }
+//
+//    @PreAuthorize("@sr.hasPermission('10.1.4')")
+//    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
+//    @DeleteMapping("/api/cms/banner/deleteBanner")
+//    public Result deleteBanner(@Validated(CmsBannerDTO.Delete.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
+//        return Result.success(cmsBannerService.deleteBanner(cmsBannerDTO), "删除成功");
+//    }
+//
+//    /**
+//     * 幻灯片列表 (公共)
+//     */
+//    @GetMapping("/api/public/cms/banner/getBanner")
+//    public Result getPublicBanner(@Validated PageDTO pageDTO, @Validated CmsBannerDTO cmsBannerDTO) {
+//        cmsBannerDTO.setStatus(1); // 已启用
+//        return Result.success(cmsBannerService.queryBanner(pageDTO.getPage_num(), pageDTO.getPage_size(), cmsBannerDTO));
+//    }
+//
+//}

+ 73 - 0
src/main/java/com/backendsys/modules/cms/banner/controller/BannerController.java

@@ -0,0 +1,73 @@
+package com.backendsys.modules.cms.banner.controller;
+
+import com.backendsys.modules.cms.article.entity.Article;
+import com.backendsys.modules.cms.banner.entity.Banner;
+import com.backendsys.modules.cms.banner.service.BannerService;
+import com.backendsys.modules.common.utils.Result;
+import io.swagger.v3.oas.annotations.Operation;
+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;
+
+@Validated
+@RestController
+@Tag(name = "幻灯片管理")
+public class BannerController {
+
+    @Autowired
+    private BannerService bannerService;
+
+    @Operation(summary = "获取幻灯片列表")
+    @PreAuthorize("@sr.hasPermission('10.1')")
+    @GetMapping("/api/cms/banner/getBanner")
+    public Result getBanner(@Validated Banner banner) {
+        return Result.success().put("data", bannerService.selectBannerList(banner));
+    }
+
+    @Operation(summary = "获取幻灯片详情")
+    @PreAuthorize("@sr.hasPermission('10.1.1')")
+    @GetMapping("/api/cms/banner/getBannerDetail")
+    public Result getBannerDetail(@Validated(Article.Detail.class) Banner banner) {
+        return Result.success().put("data", bannerService.selectBannerDetail(banner));
+    }
+
+    /*
+
+    @PreAuthorize("@sr.hasPermission('10.1.1')")
+    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
+    @GetMapping("/api/cms/banner/getBannerDetail")
+    public Result getBannerDetail(@Validated(CmsBannerDTO.Detail.class) CmsBannerDTO cmsBannerDTO) {
+        return Result.success(QueryNullCheckAspect.getQueryResult());
+    }
+
+    @PreAuthorize("@sr.hasPermission('10.1.2')")
+    @PostMapping("/api/cms/banner/createBanner")
+    public Result createBanner(@Validated(CmsBannerDTO.Create.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
+        return Result.success(cmsBannerService.insertBanner(cmsBannerDTO), "创建成功");
+    }
+
+    @PreAuthorize("@sr.hasPermission('10.1.3')")
+    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
+    @PutMapping("/api/cms/banner/updateBanner")
+    public Result updateBanner(@Validated(CmsBannerDTO.Update.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
+        return Result.success(cmsBannerService.updateBanner(cmsBannerDTO), "更新成功");
+    }
+
+    @PreAuthorize("@sr.hasPermission('10.1.4')")
+    @QueryNullCheck(serviceClass = CmsBannerService.class, serviceMethod = "queryBannerDetail", argField = "banner_id", message = "幻灯片不存在")
+    @DeleteMapping("/api/cms/banner/deleteBanner")
+    public Result deleteBanner(@Validated(CmsBannerDTO.Delete.class) @RequestBody CmsBannerDTO cmsBannerDTO) {
+        return Result.success(cmsBannerService.deleteBanner(cmsBannerDTO), "删除成功");
+    }
+
+    @GetMapping("/api/public/cms/banner/getBanner")
+    public Result getPublicBanner(@Validated PageDTO pageDTO, @Validated CmsBannerDTO cmsBannerDTO) {
+        cmsBannerDTO.setStatus(1); // 已启用
+        return Result.success(cmsBannerService.queryBanner(pageDTO.getPage_num(), pageDTO.getPage_size(), cmsBannerDTO));
+    }
+     */
+
+}

+ 15 - 0
src/main/java/com/backendsys/modules/cms/banner/dao/BannerDao.java

@@ -0,0 +1,15 @@
+package com.backendsys.modules.cms.banner.dao;
+
+import com.backendsys.modules.cms.banner.entity.Banner;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface BannerDao extends BaseMapper<Banner> {
+
+    List<Banner> selectBannerList(Banner banner);
+    Banner selectBannerDetail(Banner banner);
+
+}

+ 10 - 0
src/main/java/com/backendsys/modules/cms/banner/entity/Banner.java

@@ -23,6 +23,16 @@ public class Banner {
     private Long id;
     @NotNull(message="banner_id 不能为空", groups = { Detail.class, Update.class, Delete.class })
     private Long banner_id;
+
+    @TableField(exist = false)
+    private String title;
+    @TableField(exist = false)
+    private String link;
+    @TableField(exist = false)
+    private String image;
+    @TableField(exist = false)
+    private String image_thumb;
+
     @RangeArray(message="幻灯片类型取值有误,范围应是(1首页幻灯片, 2内页幻灯片)", value = {"1", "2"}, groups = { Create.class })
     private Integer type;
     @Range(min = 1, max = 9999, message = "排序必须在 {min} 到 {max} 之间", groups = { Create.class, Update.class})

+ 13 - 0
src/main/java/com/backendsys/modules/cms/banner/service/BannerService.java

@@ -0,0 +1,13 @@
+package com.backendsys.modules.cms.banner.service;
+
+import com.backendsys.modules.cms.banner.entity.Banner;
+import com.backendsys.utils.response.PageEntity;
+
+public interface BannerService {
+
+    // 获取幻灯片列表
+    PageEntity selectBannerList(Banner banner);
+    // 获取幻灯片详情
+    Banner selectBannerDetail(Banner banner);
+
+}

+ 38 - 0
src/main/java/com/backendsys/modules/cms/banner/service/impl/BannerServiceImpl.java

@@ -0,0 +1,38 @@
+package com.backendsys.modules.cms.banner.service.impl;
+
+import com.backendsys.modules.cms.article.entity.Article;
+import com.backendsys.modules.cms.banner.dao.BannerDao;
+import com.backendsys.modules.cms.banner.entity.Banner;
+import com.backendsys.modules.cms.banner.service.BannerService;
+import com.backendsys.utils.response.PageEntity;
+import com.backendsys.utils.response.PageInfoResult;
+import com.backendsys.utils.v2.PageUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class BannerServiceImpl implements BannerService {
+
+    @Autowired
+    private BannerDao bannerDao;
+
+    /**
+     * 获取幻灯片列表
+     */
+    @Override
+    public PageEntity selectBannerList(Banner banner) {
+        PageUtils.startPage();  // 分页
+        List<Banner> list = bannerDao.selectBannerList(banner);
+        return new PageInfoResult(list).toEntity();
+    }
+
+    // 获取幻灯片详情
+    @Override
+    public Banner selectBannerDetail(Banner banner) {
+        return bannerDao.selectBannerDetail(banner);
+    }
+
+}

+ 2 - 2
src/main/java/com/backendsys/modules/cms/siteinfo/controller/SiteInfoController.java

@@ -23,14 +23,14 @@ public class SiteInfoController {
 
     @Operation(summary = "获取站点信息")
     @PreAuthorize("@sr.hasPermission('13')")
-    @GetMapping("/api/v2/cms/site/getSiteInfo")
+    @GetMapping("/api/cms/site/getSiteInfo")
     public Result getSiteInfo() {
         return Result.success().put("data", siteInfoService.selectSiteInfo());
     }
 
     @Operation(summary = "编辑站点信息")
     @PreAuthorize("@sr.hasPermission('13.1')")
-    @PutMapping("/api/v2/cms/site/updateSiteInfo")
+    @PutMapping("/api/cms/site/updateSiteInfo")
     public Result updateSiteInfo(@Validated(SiteInfo.Update.class) @RequestBody SiteInfo siteInfo) {
         siteInfo.setId(1L);
         return Result.success().put("data", siteInfoService.updateSiteInfo(siteInfo));

+ 114 - 0
src/main/resources/mapper/cms/banner/BannerDao.xml

@@ -0,0 +1,114 @@
+<?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.banner.dao.BannerDao">
+
+    <sql id="includeBanner">
+        b.id id,
+        b.id banner_id,
+        b.type,
+        bt.title title,
+        COALESCE(bt.link, '') link,
+        bt.image image,
+        bt.image_thumb image_thumb,
+        b.sort,
+        b.status,
+        b.create_time,
+        b.update_time
+    </sql>
+    <sql id="includeBannerDetail">
+        b.id id,
+        b.id banner_id,
+        b.type,
+        b.sort,
+        b.status,
+        b.create_time,
+        b.update_time
+    </sql>
+    <sql id="includeBannerTranslation">
+        id,
+        banner_id,
+        language,
+        title,
+        COALESCE(link, '') link,
+        image,
+        image_thumb
+    </sql>
+
+    <sql id="leftJoinTranslations">
+        LEFT JOIN cms_banner_i18n bt ON b.id = bt.banner_id
+    </sql>
+
+    <resultMap id="resultMapBanner" type="java.util.LinkedHashMap">
+        <id property="id" column="id" jdbcType="BIGINT" />
+        <result property="banner_id" column="banner_id" javaType="java.lang.Long" />
+        <result property="type" column="type" javaType="java.lang.Integer" />
+        <result property="title" column="title" />
+        <result property="link" column="link" />
+        <result property="image" column="image" />
+        <result property="image_thumb" column="image_thumb" />
+        <result property="sort" column="sort" javaType="java.lang.Integer" />
+        <result property="status" column="status" javaType="java.lang.Integer" />
+        <result property="create_time" column="create_time" />
+        <result property="update_time" column="update_time" />
+    </resultMap>
+
+    <resultMap id="resultMapBannerDetail" type="java.util.LinkedHashMap">
+        <id property="id" column="id" jdbcType="BIGINT" />
+        <result property="banner_id" column="banner_id" javaType="java.lang.Long" />
+        <result property="type" column="type" javaType="java.lang.Integer" />
+        <result property="sort" column="sort" javaType="java.lang.Integer" />
+        <result property="status" column="status" javaType="java.lang.Integer" />
+        <result property="create_time" column="create_time" />
+        <result property="update_time" column="update_time" />
+        <collection property="translations" javaType="java.util.List"
+            select="queryTranslationsById" column="id">
+            <result property="title" column="title" />
+            <result property="link" column="link" />
+            <result property="image" column="image" />
+            <result property="image_thumb" column="image_thumb" />
+        </collection>
+    </resultMap>
+
+
+    <!-- 查 列表 -->
+    <select id="selectBannerList" resultMap="resultMapBanner">
+        SELECT <include refid="includeBanner" />
+        FROM cms_banner b
+        <include refid="leftJoinTranslations" />
+        <where>
+            bt.language = #{lang}
+            <if test="title != null and title != ''">
+                AND bt.title LIKE CONCAT('%', #{title}, '%')
+            </if>
+        </where>
+    </select>
+
+    <!-- 查 详情 -->
+    <select id="selectBannerDetail" resultMap="resultMapBannerDetail">
+        SELECT <include refid="includeBannerDetail" />
+        FROM cms_banner b
+        <where>
+            <if test="banner_id != null and banner_id != ''">
+                AND b.id = #{banner_id}
+            </if>
+        </where>
+    </select>
+
+    <!-- 查 翻译详情 (子查询) -->
+    <select id="queryTranslationsById" resultType="java.util.LinkedHashMap">
+        SELECT <include refid="includeBannerTranslation" />
+        FROM cms_banner_i18n
+        WHERE banner_id = #{id}
+    </select>
+
+    <!-- 查 详情 (公共) (带翻译 Object) (关联查询) -->
+    <!--    <select id="queryBannerDetailPublic" resultMap="resultMapBanner">-->
+    <!--        SELECT <include refid="includeBanner" />, content-->
+    <!--        FROM cms_banner a-->
+    <!--        <include refid="leftJoinCategory" />-->
+    <!--        <include refid="leftJoinUser" />-->
+    <!--        <include refid="leftJoinTranslations" />-->
+    <!--        WHERE a.uid = #{uid} AND bt.language = #{lang}-->
+    <!--    </select>-->
+
+</mapper>