Ver código fonte

作者:张哲
时间:2022/11/30
类型:开发
描述:知识分类列表

ZizgZh 2 anos atrás
pai
commit
8cb8a4dbe6

+ 7 - 2
src/main/java/com/redxun/knowledge/controller/BannerController.java

@@ -77,7 +77,7 @@ public class BannerController extends BaseController<Banner> {
     @GetMapping("deleteBanner")
     public JsonResult deleteBanner(@RequestParam("bannerId") String bannerId){
         bannerService.deleteBanner(bannerId);
-        return JsonResult.Success(bannerId);
+        return JsonResult.Success("删除成功!");
     }
 
     @ApiOperation(value = "上线/下线")
@@ -97,7 +97,12 @@ public class BannerController extends BaseController<Banner> {
     public JsonResult goUpOrDownUp(@PathVariable("bannerId") String bannerId,
                                    @PathVariable("status") Boolean status){
         bannerService.goUpOrDownUp(bannerId,status);
-        return JsonResult.Success("位置交换成功!");
+        if (status){
+            return JsonResult.Success("上升成功!");
+        } else {
+            return JsonResult.Success("下降成功!");
+        }
+
     }
 
 }

+ 27 - 0
src/main/java/com/redxun/knowledge/controller/KnowledgeCategoryController.java

@@ -1,15 +1,22 @@
 
 package com.redxun.knowledge.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.annotation.ClassDefine;
 import com.redxun.common.base.db.BaseService;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.redxun.common.base.entity.JsonPageResult;
 import com.redxun.common.base.entity.JsonResult;
+import com.redxun.common.base.entity.QueryData;
+import com.redxun.common.base.search.QueryFilter;
+import com.redxun.common.base.search.QueryFilterBuilder;
 import com.redxun.common.tool.StringUtils;
+import com.redxun.common.utils.ExceptionUtil;
 import com.redxun.knowledge.entity.dao.KnowledgeCategory;
 import com.redxun.knowledge.service.KnowledgeCategoryServiceImpl;
 import com.redxun.web.controller.BaseController;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +46,26 @@ public class KnowledgeCategoryController extends BaseController<KnowledgeCategor
         return "业务--知识分类表";
     }
 
+    @ApiOperation("知识分类列表 (后台)")
+    @ApiImplicitParam(name = "queryData", value = "查询条件")
+    @PostMapping("findAllKnowledgeCategory")
+    public JsonPageResult findAllKnowledgeCategory(@RequestBody QueryData queryData) {
+        JsonPageResult jsonResult = JsonPageResult.getSuccess("返回数据成功!");
+        try {
+            QueryFilter filter = QueryFilterBuilder.createQueryFilter(queryData);
+            IPage page = knowledgeCategoryService.findAllKnowledgeCategory(filter);
+            this.handlePage(page);
+            jsonResult.setPageData(page);
+        } catch (Exception e) {
+            jsonResult.setSuccess(false);
+            this.logger.error(ExceptionUtil.getExceptionMessage(e));
+            jsonResult.setMessage(ExceptionUtil.getExceptionMessage(e));
+        }
+        return jsonResult;
+    }
+
+
+
     @ApiOperation("根据id查询其下级分类信息")
     @GetMapping("findAllByCategoryId/{categoryId}")
     public JsonResult findAllByCategoryId(@PathVariable(value = "categoryId",required = false) String categoryId){

+ 2 - 2
src/main/java/com/redxun/knowledge/entity/dao/News.java

@@ -35,8 +35,8 @@ public class News  extends BaseExtEntity<java.lang.String> {
 	private String pkId;
 
     //新闻标题
-    @TableField(value = "TITLE")
-    private String title;
+    @TableField(value = "TITLES")
+    private String titles;
     //新闻作者ID
     @TableField(value = "AUTHOR_ID")
     private String authorId;

+ 34 - 0
src/main/java/com/redxun/knowledge/entity/vo/KnowledgeCategoryAdminVo.java

@@ -0,0 +1,34 @@
+package com.redxun.knowledge.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.redxun.knowledge.entity.dao.KnowledgeCategory;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 文件名: KnowledgeCategoryAdminVo
+ * 作者: Zizg
+ * 时间: 2022/11/29
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@Data
+public class KnowledgeCategoryAdminVo implements Serializable {
+    //主键
+    private String pkId;
+    //上级分类
+    private String parent;
+    //分类名称
+    private String name;
+    //排序
+    private Integer sort;
+    //是否是系统预制节点;0-不是 1-是
+    private Integer isSys;
+    //孩子节点数据
+    private List<KnowledgeCategory> children;
+}

+ 1 - 1
src/main/java/com/redxun/knowledge/entity/vo/NewsAdminVo.java

@@ -25,7 +25,7 @@ public class NewsAdminVo {
     private String pkId;
 
     //新闻标题
-    private String title;
+    private String titles;
 
     //新闻作者ID
     private String authorId;

+ 5 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeCategoryMapper.java

@@ -1,8 +1,12 @@
 package com.redxun.knowledge.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.knowledge.entity.dao.KnowledgeCategory;
 import org.apache.ibatis.annotations.Mapper;
 import com.redxun.common.base.db.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
 
 /**
 * 业务--知识分类表数据库访问层
@@ -10,4 +14,5 @@ import com.redxun.common.base.db.BaseDao;
 @Mapper
 public interface KnowledgeCategoryMapper extends BaseDao<KnowledgeCategory> {
 
+    IPage findAllKnowledgeCategory(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
 }

+ 48 - 1
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -2,15 +2,23 @@
 package com.redxun.knowledge.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.common.base.db.BaseService;
+import com.redxun.common.base.db.PageHelper;
+import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.knowledge.entity.dao.KnowledgeCategory;
+import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.mapper.KnowledgeCategoryMapper;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * [业务--知识分类表]业务服务类
@@ -48,7 +56,31 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         return knowledgeCategory;
     }
 
-    // 查询孩子节点
+    /**
+     * 知识分类列表(可带条件,条件为知识分类名称)
+     * @param filter
+     * @return
+     */
+    // @Cacheable(value = "knowledgeCategory",keyGenerator = "keyGenerator")
+    public IPage findAllKnowledgeCategory(QueryFilter filter) {
+        Map<String, Object> params = PageHelper.constructParams(filter);
+        IPage page = knowledgeCategoryMapper.findAllKnowledgeCategory(filter.getPage(), filter.getParams(), params);
+        List<KnowledgeCategory> knowledgeCategoryList = page.getRecords();
+        // 查询顶级记录的所有子集合(顶级记录id为0)
+        List<KnowledgeCategory> collect = knowledgeCategoryList.
+                stream().
+                filter(knowledgeCategory -> "0".equals(knowledgeCategory.getParent())).
+                collect(Collectors.toList());
+        collect.forEach(e -> {
+            List<KnowledgeCategory> childrens = findChildrens(e);
+            e.setChildren(childrens);
+        });
+        // 把数据放回到分页中,结果返回
+        page.setRecords(collect);
+        return page;
+    }
+
+    // 查询孩子节点(非递归)
     private List<KnowledgeCategory> findAllChildren(KnowledgeCategory knowledgeCategory) {
         QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("PARENT", knowledgeCategory.getPkId());
@@ -56,6 +88,19 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         return knowledgeCategories;
     }
 
+    // 查询孩子节点(递归)
+    private List<KnowledgeCategory> findChildrens(KnowledgeCategory knowledgeCategory){
+        QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("PARENT", knowledgeCategory.getPkId());
+        List<KnowledgeCategory> knowledgeCategories = knowledgeCategoryMapper.selectList(queryWrapper);
+        knowledgeCategory.setChildren(knowledgeCategories);
+        knowledgeCategories.forEach(e -> {
+            List<KnowledgeCategory> allChildren = findChildrens(e);
+            e.setChildren(allChildren);
+        });
+        return knowledgeCategories;
+    }
+
     // 判断是否有孩子节点
     private Boolean findHasChirld(KnowledgeCategory knowledgeCategory) {
         QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
@@ -67,4 +112,6 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
             return false;
         }
     }
+
+
 }

+ 18 - 0
src/main/resources/mapper/knowledge/KnowledgeCategoryMapper.xml

@@ -18,6 +18,11 @@
                 <result property="updateTime" column="UPDATE_TIME_" jdbcType="DATE"/>
     </resultMap>
 
+    <sql id="COLUMNS">
+        PK_ID,PARENT,NAME,SORT,IS_SYS,IS_DEL,COMPANY_ID_,
+        CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_
+    </sql>
+
 
     <select id="query" resultType="com.redxun.knowledge.entity.dao.KnowledgeCategory" parameterType="java.util.Map">
         select PK_ID,PARENT,NAME,SORT,IS_SYS,IS_DEL,COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATED_BY_,CREATED_TIME_,UPDATED_BY_,UPDATED_TIME_ from KM_KNOWLEDGE_CATEGORY
@@ -34,6 +39,19 @@
         </if>
     </select>
 
+    <select id="findAllKnowledgeCategory" resultType="com.redxun.knowledge.entity.dao.KnowledgeCategory">
+    SELECT
+    <include refid="COLUMNS" />
+    FROM KM_KNOWLEDGE_CATEGORY
+    <where>
+        <if test="@rx.Ognl@isNotEmpty(params.name)">
+            NAME LIKE '%' || #{params.name} || '%'
+        </if>
+        and IS_DEL = 0
+    </where>
+    ORDER BY SORT ASC
+    </select>
+
 </mapper>
 
 

+ 5 - 5
src/main/resources/mapper/knowledge/NewsMapper.xml

@@ -4,7 +4,7 @@
 
     <resultMap id="News" type="com.redxun.knowledge.entity.dao.News">
                 <id property="pkId" column="PK_ID" jdbcType="VARCHAR"/>
-                <result property="title" column="TITLE" jdbcType="VARCHAR"/>
+                <result property="titles" column="TITLES" jdbcType="VARCHAR"/>
                 <result property="authorId" column="AUTHOR_ID" jdbcType="VARCHAR"/>
                 <result property="author" column="AUTHOR" jdbcType="VARCHAR"/>
                 <result property="summary" column="SUMMARY" jdbcType="VARCHAR"/>
@@ -24,13 +24,13 @@
     </resultMap>
 
     <sql id="columns">
-        PK_ID,TITLE,AUTHOR_ID,AUTHOR,SUMMARY,THUMBNAIL,CONTENT,VIEWS,ENABLED,IS_DEL,SORT,
+        PK_ID,TITLES,AUTHOR_ID,AUTHOR,SUMMARY,THUMBNAIL,CONTENT,VIEWS,ENABLED,IS_DEL,SORT,
         COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,
         CREATE_BY_,CREATE_TIME_,UPDATE_BY_,UPDATE_TIME_
     </sql>
 
     <select id="query" resultType="com.redxun.knowledge.entity.dao.News" parameterType="java.util.Map">
-        select PK_ID,TITLE,AUTHOR_ID,AUTHOR,SUMMARY,THUMBNAIL,CONTENT,VIEWS,ENABLED,IS_DEL,
+        select PK_ID,TITLES,AUTHOR_ID,AUTHOR,SUMMARY,THUMBNAIL,CONTENT,VIEWS,ENABLED,IS_DEL,
         COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,
         CREATED_BY_,CREATED_TIME_,UPDATED_BY_,UPDATED_TIME_ from KM_NEWS
         <where>
@@ -52,7 +52,7 @@
         FROM KM_NEWS
         <where>
             <if test="@rx.Ognl@isNotEmpty(params.title)">
-                TITLE LIKE '%' || #{params.title} || '%'
+                TITLES LIKE '%' || #{params.title} || '%'
             </if>
             <if test="@rx.Ognl@isNotEmpty(params.enabled)">
                 and ENABLED = #{params.enabled}
@@ -83,7 +83,7 @@
         FROM KM_NEWS
         <where>
             <if test="@rx.Ognl@isNotEmpty(params.keyword)">
-                (TITLE LIKE '%' || #{params.keyword} || '%' OR
+                (TITLES LIKE '%' || #{params.keyword} || '%' OR
                 AUTHOR LIKE '%' || #{params.keyword} || '%' OR
                 CONTENT LIKE '%' || #{params.keyword} || '%')
             </if>