Parcourir la source

作者:张哲
时间:2022/12/6
类型:开发
描述:PC知识仓库首页及内容列表开发

ZizgZh il y a 2 ans
Parent
commit
c28b40c6e4

+ 18 - 0
src/main/java/com/redxun/knowledge/controller/KnowledgeController.java

@@ -120,5 +120,23 @@ public class KnowledgeController extends BaseController<Knowledge> {
         }
         return jsonResult;
     }
+
+    @ApiOperation(value = "工作成果&经验案例列表(分页前台)")
+    @ApiImplicitParam(name = "queryData", value = "查询条件")
+    @PostMapping("getAllKnowledgeByCategoryId")
+    public JsonPageResult getAllKnowledgeByCategoryId(@RequestBody QueryData queryData) {
+        JsonPageResult jsonResult = JsonPageResult.getSuccess("返回数据成功!");
+        try {
+            QueryFilter filter = QueryFilterBuilder.createQueryFilter(queryData);
+            IPage page = knowledgeService.getAllKnowledgeByCategoryId(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;
+    }
 }
 

+ 2 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeMapper.java

@@ -21,4 +21,6 @@ public interface KnowledgeMapper extends BaseDao<Knowledge> {
     void deleteKnowledge(String knowledgeId);
 
     IPage findAllAuditKnowledge(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
+
+    IPage getAllKnowledgeByCategoryId(IPage page, @Param("params") Map<String, Object> params, @Param("w") Map<String, Object> order);
 }

+ 12 - 5
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -6,7 +6,6 @@ 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.entity.BaseEntity;
 import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.common.tool.BeanUtil;
@@ -17,14 +16,11 @@ import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.mapper.KnowledgeCategoryMapper;
 import com.redxun.knowledge.mapper.KnowledgeMapper;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
-import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -119,6 +115,10 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         if (BeanUtil.isEmpty(entity.getPkId())) {
             entity.setPkId(IdGenerator.getIdStr());
         }
+        Integer count = this.baseMapper.selectCount(new QueryWrapper<KnowledgeCategory>().eq("NAME", entity.getName()));
+        if (count > 0){
+            throw new RuntimeException("分类名称已存在,请重新输入");
+        }
         // 没有parent默认为一级分类
         if (entity.getParent() == null){
             entity.setParent("0");
@@ -138,6 +138,13 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
      */
     @Override
     public int update(KnowledgeCategory entity) {
+        KnowledgeCategory knowledgeCategory = this.get(entity.getPkId());
+        if (!knowledgeCategory.getName().equals(entity.getName())){
+            Integer count = this.baseMapper.selectCount(new QueryWrapper<KnowledgeCategory>().eq("NAME", entity.getName()));
+            if (count > 0){
+                throw new RuntimeException("分类名称已存在,请重新输入");
+            }
+        }
         if (entity.getParent() != null){
             if (entity.getSort() == null) {
                 entity.setSort(0);
@@ -193,7 +200,7 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
     }
 
     // 查询孩子节点(递归)
-    private List<KnowledgeCategoryAdminVo> findChildrens(KnowledgeCategoryAdminVo knowledgeCategoryAdminVo){
+    public List<KnowledgeCategoryAdminVo> findChildrens(KnowledgeCategoryAdminVo knowledgeCategoryAdminVo){
         List<KnowledgeCategoryAdminVo> knowledgeCategories = knowledgeCategoryMapper.selectKnowledgeCategoryByParent(knowledgeCategoryAdminVo.getPkId());
         knowledgeCategoryAdminVo.setChildren(knowledgeCategories);
         knowledgeCategories.forEach(e -> {

+ 52 - 14
src/main/java/com/redxun/knowledge/service/KnowledgeServiceImpl.java

@@ -1,7 +1,6 @@
 
 package com.redxun.knowledge.service;
 
-import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -10,30 +9,22 @@ 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.model.JPaasUser;
-import com.redxun.common.tool.IdGenerator;
 import com.redxun.common.service.impl.SuperServiceImpl;
-import com.redxun.common.utils.ExceptionUtil;
+import com.redxun.common.tool.IdGenerator;
 import com.redxun.knowledge.common.UserService;
 import com.redxun.knowledge.entity.dao.*;
 import com.redxun.knowledge.entity.dto.knowledgeDto;
-import com.redxun.knowledge.entity.vo.BannerPcVo;
 import com.redxun.knowledge.entity.vo.KnowledgeApprovalVo;
 import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.entity.vo.KnowledgeVo;
-import com.redxun.knowledge.mapper.BannerMapper;
-import com.redxun.knowledge.mapper.KnowledgeApprovalNodeMapper;
-import com.redxun.knowledge.mapper.KnowledgeApproveMapper;
-import com.redxun.knowledge.mapper.KnowledgeMapper;
-import org.checkerframework.checker.units.qual.K;
+import com.redxun.knowledge.mapper.*;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * [业务--知识表]业务服务类
@@ -59,6 +50,9 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
     @Autowired
     private BannerMapper bannerMapper;
 
+    @Autowired
+    private KnowledgeCategoryMapper knowledgeCategoryMapper;
+
     @Override
     public BaseDao<Knowledge> getRepository() {
         return knowledgeMapper;
@@ -263,4 +257,48 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
         }
         return page;
     }
+
+    /**
+     * 根据分类id查询工作成果列表和经验案例列表
+     * @param filter
+     * @return
+     */
+    public IPage getAllKnowledgeByCategoryId(QueryFilter filter) {
+        Map<String, Object> params = PageHelper.constructParams(filter);
+        IPage page = knowledgeMapper.getAllKnowledgeByCategoryId(filter.getPage(), filter.getParams(), params);
+        List<KnowledgeVo> knowledgeVoList = page.getRecords();
+        knowledgeVoList.forEach(e -> {
+            KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.findAllParentByCategoryId(e.getCategoryId());
+            e.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVo);
+        });
+        List<KnowledgeVo> result = new ArrayList<>(knowledgeVoList);
+        knowledgeVoList.forEach(e -> {
+            //把一级分类下的分类的知识加入返回结果集
+            KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(e.getCategoryId());
+            KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = new KnowledgeCategoryAdminVo();
+            BeanUtils.copyProperties(knowledgeCategory,knowledgeCategoryAdminVo);
+            List<KnowledgeCategoryAdminVo> childrens = knowledgeCategoryService.findChildrens(knowledgeCategoryAdminVo);
+            childrens.forEach(children -> {
+                List<Knowledge> knowledgeList = this.baseMapper.selectList(new QueryWrapper<Knowledge>().eq("CATEGORY_ID", children.getPkId()));
+                List<KnowledgeVo> collect = knowledgeList.stream().map(h -> {
+                    KnowledgeVo knowledgeVo = new KnowledgeVo();
+                    BeanUtils.copyProperties(h, knowledgeVo);
+                    return knowledgeVo;
+                }).collect(Collectors.toList());
+
+                collect.forEach(g -> {
+                    KnowledgeCategoryAdminVo knowledgeCategoryAdminVos = knowledgeCategoryService.findAllParentByCategoryId(g.getCategoryId());
+                    g.setKnowledgeCategoryAdminVo(knowledgeCategoryAdminVos);
+                });
+
+                result.addAll(collect);
+            });
+        });
+        // 按照创建时间排序
+        List<KnowledgeVo> collect = result.stream().
+                sorted((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime())).collect(Collectors.toList());
+        page.setRecords(collect);
+        page.setTotal(collect.size());
+        return page;
+    }
 }

+ 22 - 1
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -76,7 +76,11 @@
         </if>
         and IS_DEL = 0
     </where>
-    ORDER BY CREATE_TIME_ DESC
+        ORDER BY
+        <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">
+            ${w.orderBySql},
+        </if>
+     CREATE_TIME_ DESC
     </select>
 
     <delete id="deleteKnowledge">
@@ -114,6 +118,23 @@
         ORDER BY CREATE_TIME_ DESC
     </select>
 
+    <select id="getAllKnowledgeByCategoryId" resultType="com.redxun.knowledge.entity.vo.KnowledgeVo">
+        SELECT
+        <include refid="COLUMNS" />
+        FROM KM_KNOWLEDGE
+        <where>
+            <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
+                CATEGORY_ID = #{params.categoryId}
+            </if>
+            and IS_DEL = 0
+        </where>
+        ORDER BY
+        <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">
+            ${w.orderBySql},
+        </if>
+        CREATE_TIME_ DESC
+    </select>
+
 
 </mapper>