Browse Source

作者:张哲
时间:2022/12/19
类型:开发
描述:文件通知接口对接

ZizgZh 2 years ago
parent
commit
bda0e7495a

+ 1 - 1
src/main/java/com/redxun/config/ClientWebsecurityConfigurer.java

@@ -37,7 +37,7 @@ public class ClientWebsecurityConfigurer extends WebSecurityConfigurerAdapter {
         JacksonAutoConfiguration autoConfiguration;
         http
                 .authorizeRequests()
-                .antMatchers("/", "/login", "/demo/**","/certificate/**","/api-knowledge/**","/api-kmsearch/**",
+                .antMatchers("/", "/login", "/demo/**","/certificate/**","/api-knowledge/**",
                         "/actuator/**",
                         "/restApi/**","/global/**", "/druid/**", "/v2/api-docs/**","/swagger*").permitAll()
                 .anyRequest().authenticated()

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

@@ -106,6 +106,15 @@ public class KnowledgeCategoryController extends BaseController<KnowledgeCategor
         return jsonResult;
     }
 
+    @ApiOperation("根据id查询其下级分类信息(非懒加载)")
+    @GetMapping("getAllByCategoryId/{categoryId}")
+    public JsonResult getAllByCategoryId(@PathVariable(value = "categoryId",required = false) String categoryId){
+        JsonResult jsonResult = JsonResult.getSuccessResult("获取数据成功");
+        KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = knowledgeCategoryService.getAllByCategoryId(categoryId);
+        jsonResult.setData(knowledgeCategoryAdminVo);
+        return jsonResult;
+    }
+
     @ApiOperation("根据id查询其上级分类信息")
     @GetMapping("findAllParentByCategoryId/{categoryId}")
     public JsonResult  findAllParentByCategoryId(@PathVariable("categoryId") String categoryId){

+ 24 - 0
src/main/java/com/redxun/knowledge/entity/dao/FilesEntity.java

@@ -0,0 +1,24 @@
+package com.redxun.knowledge.entity.dao;
+
+import com.redxun.common.base.entity.BaseEntity;
+
+/**
+ * 文件名: FilesEntity
+ * 作者: Zizg
+ * 时间: 2022/12/15
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+public class FilesEntity implements BaseEntity<String> {
+    @Override
+    public String getPkId() {
+        return null;
+    }
+
+    @Override
+    public void setPkId(String pkId) {
+
+    }
+}

+ 5 - 0
src/main/java/com/redxun/knowledge/entity/dto/knowledgeDto.java

@@ -29,8 +29,13 @@ public class knowledgeDto {
     private String content;
 
     // 附件ID
+    @NotBlank(message = "缺失关键参数:文件ID")
     private String attachment;
 
     // 附件类型 1-WORD(.doc、.docx) 2-PDF(.pdf) 3-PPT(.pptx) 4-EXCEL(.xls、.xlsx)
     private Integer attachmentType;
+
+    @NotBlank(message = "缺失关键参数:文件名称")
+    // 附件名称
+    private String attachmentName;
 }

+ 19 - 0
src/main/java/com/redxun/knowledge/mapper/FilesMapper.java

@@ -0,0 +1,19 @@
+package com.redxun.knowledge.mapper;
+
+import com.redxun.common.base.db.BaseDao;
+import com.redxun.knowledge.entity.dao.CommonEntity;
+import com.redxun.knowledge.entity.dao.FilesEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 文件名: FilesMapper
+ * 作者: Zizg
+ * 时间: 2022/12/15
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@Mapper
+public interface FilesMapper extends BaseDao<FilesEntity> {
+}

+ 46 - 0
src/main/java/com/redxun/knowledge/service/FileServiceImpl.java

@@ -0,0 +1,46 @@
+package com.redxun.knowledge.service;
+
+import com.redxun.common.base.db.BaseDao;
+import com.redxun.common.base.db.BaseService;
+import com.redxun.common.service.impl.SuperServiceImpl;
+import com.redxun.datasource.DataSourceContextHolder;
+import com.redxun.dto.sys.SysFileDto;
+import com.redxun.knowledge.entity.dao.CommonEntity;
+import com.redxun.knowledge.entity.dao.FilesEntity;
+import com.redxun.knowledge.mapper.CommonMapper;
+import com.redxun.knowledge.mapper.FilesMapper;
+import org.apache.http.entity.FileEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 文件名: FileServiceImpl
+ * 作者: Zizg
+ * 时间: 2022/12/15
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@Service
+public class FileServiceImpl extends SuperServiceImpl<FilesMapper, FilesEntity> implements BaseService<FilesEntity> {
+
+    @Autowired
+    private FilesMapper filesMapper;
+
+    @Override
+    public BaseDao<FilesEntity> getRepository() {
+        return null;
+    }
+
+    /**
+     * 根据文件id查询文件信息
+     */
+    public FilesEntity findFilesById(String fileId){
+        DataSourceContextHolder.setDataSource("system");
+        FilesEntity filesEntity = filesMapper.selectById(fileId);
+        // 调用完成后清除当前数据源
+        DataSourceContextHolder.clearDataSource();
+        return filesEntity;
+    }
+}

+ 18 - 3
src/main/java/com/redxun/knowledge/service/KnowledgeApproveServiceImpl.java

@@ -17,8 +17,11 @@ import com.redxun.knowledge.entity.vo.KnowledgeApprovalListVo;
 import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.mapper.KnowledgeApproveMapper;
 import com.redxun.knowledge.mapper.KnowledgeMapper;
+import com.redxun.search.service.SearchService;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.common.value.qual.BottomVal;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -33,6 +36,9 @@ import java.util.stream.Collectors;
 @Slf4j
 public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeApproveMapper, KnowledgeApprove> implements BaseService<KnowledgeApprove> {
 
+    @Value("${file.url}")
+    private String fileUrl;
+
     @Resource
     private KnowledgeApproveMapper knowledgeApproveMapper;
 
@@ -48,6 +54,9 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
     @Autowired
     private UserService userService;
 
+    @Autowired
+    private SearchService searchService;
+
     @Override
     public BaseDao<KnowledgeApprove> getRepository() {
         return knowledgeApproveMapper;
@@ -147,11 +156,17 @@ public class KnowledgeApproveServiceImpl extends SuperServiceImpl<KnowledgeAppro
             //给知识创建人发送站内信和企业微信消息
             String createBy = knowledgeMapper.selectById(knowledgeApprove.getKnowledgerId()).getCreateBy();
             sendMessage(createBy,entity.getRemark());
+            //把该知识附件信息传入搜索平台
+            Knowledge knowledges = knowledgeMapper.selectById(knowledgeApprove.getKnowledgerId());
+            searchService.notice(knowledges.getAttachment(),knowledges.getAttachmentName(),null,
+                    fileUrl + knowledges.getAttachment(),null,
+                    knowledges.getCreateBy(),
+                    knowledges.getAuthor(),null,1);
         }
         // 如果审核通过了,发送短信通知下一个人审核
-        if (knowledgeApprove.getResult() == 1 && knowledgeApprove.getIsFinal() != 1){
-            // TODO: 2022/12/9
-        }
+        //if (knowledgeApprove.getResult() == 1 && knowledgeApprove.getIsFinal() != 1){
+        //    // TODO: 2022/12/9
+        //}
         return this.getRepository().updateById(entity);
     }
 

+ 16 - 0
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -16,7 +16,9 @@ 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.context.annotation.Bean;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -65,6 +67,19 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         return knowledgeCategory;
     }
 
+    // 根据id查询其下级分类信息(非懒加载)
+    public KnowledgeCategoryAdminVo getAllByCategoryId(String categoryId) {
+        QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("PK_ID", categoryId);
+        KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(categoryId);
+        KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = new KnowledgeCategoryAdminVo();
+        knowledgeCategoryAdminVo.setLevel(1);
+        BeanUtils.copyProperties(knowledgeCategory,knowledgeCategoryAdminVo);
+        List<KnowledgeCategoryAdminVo> childrens = findChildrens(knowledgeCategoryAdminVo);
+        knowledgeCategoryAdminVo.setChildren(childrens);
+        return knowledgeCategoryAdminVo;
+    }
+
     /**
      * 知识分类列表(可带条件,条件为知识分类名称)
      * @param filter
@@ -303,6 +318,7 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
                 collect(Collectors.toList());
         // 查询其孩子节点
         collect.forEach(e -> {
+            e.setLevel(1);
             List<KnowledgeCategoryAdminVo> childrens = findChildrens(e);
             e.setChildren(childrens);
         });

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

@@ -18,6 +18,8 @@ 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.*;
+import com.redxun.search.service.SearchService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -83,6 +85,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             knowledge.setType(knowledgeDto.getType());
             knowledge.setSummary(knowledgeDto.getSummary());
             knowledge.setAttachment(knowledgeDto.getAttachment());
+            knowledge.setAttachmentName(knowledgeDto.getAttachmentName());
             knowledge.setAttachmentType(knowledgeDto.getAttachmentType());
             knowledge.setContent(knowledgeDto.getContent());
 
@@ -189,6 +192,12 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
      */
     public IPage findAllKnowledge(QueryFilter filter) {
         Map<String, Object> params = PageHelper.constructParams(filter);
+        if (filter.getParams().containsKey("categoryId")){
+            String categoryId = (String) filter.getParams().get("categoryId");
+            String strip = StringUtils.strip(categoryId, "[]");
+            String[] split = strip.split(",");
+            filter.getParams().put("categoryId",split[0]);
+        }
         IPage page = knowledgeMapper.findAllKnowledge(filter.getPage(), filter.getParams(), params);
         List<KnowledgeVo> knowledgeVoList = page.getRecords();
         knowledgeVoList.forEach(e -> {
@@ -209,6 +218,10 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
         if (count > 0){
             return false;
         }
+        Knowledge knowledge = knowledgeMapper.selectById(knowledgeId);
+        if (knowledge.getApprovalStatus() == 5){
+            throw new RuntimeException("知识已通过,删除失败");
+        }
         // 把知识审批表中对应数据删除掉
         knowledgeApproveMapper.deleteByKnowledgeId(knowledgeId);
         knowledgeMapper.deleteKnowledge(knowledgeId);
@@ -282,6 +295,7 @@ public class KnowledgeServiceImpl extends SuperServiceImpl<KnowledgeMapper, Know
             KnowledgeCategory knowledgeCategory = knowledgeCategoryMapper.selectById(e.getCategoryId());
             KnowledgeCategoryAdminVo knowledgeCategoryAdminVo = new KnowledgeCategoryAdminVo();
             BeanUtils.copyProperties(knowledgeCategory,knowledgeCategoryAdminVo);
+            knowledgeCategoryAdminVo.setLevel(1);
             List<KnowledgeCategoryAdminVo> childrens = knowledgeCategoryService.findChildrens(knowledgeCategoryAdminVo);
             childrens.forEach(children -> {
                 List<Knowledge> knowledgeList = this.baseMapper.selectList(new QueryWrapper<Knowledge>().eq("CATEGORY_ID", children.getPkId()));

+ 2 - 2
src/main/java/com/redxun/search/api/SearchController.java

@@ -33,9 +33,9 @@ import java.util.Map;
  */
 @Slf4j
 @RestController
-@RequestMapping("/api-kmsearch/search")
+@RequestMapping("/api-knowledge/search")
 @Api(tags = "业务--首页banner表")
-@ClassDefine(title = "业务--首页banner表", alias = "BannerController", path = "/api-knowledge/knowledge/banner", packages = "", packageName = "子系统名称")
+@ClassDefine(title = "业务--首页banner表", alias = "SearchController", path = "/api-knowledge/search", packages = "", packageName = "子系统名称")
 public class SearchController{
 
     @Autowired

+ 27 - 0
src/main/java/com/redxun/search/service/SearchService.java

@@ -17,6 +17,33 @@ import java.util.Map;
 public interface SearchService {
 
 
+    /**
+     * 查询接口
+     * @param keyword
+     * @param pageIndex
+     * @param pageSize
+     * @param range
+     * @param secretType
+     * @param httpServletRequest
+     * @return
+     */
     Map<String,Object> search(String keyword, Integer pageIndex, Integer pageSize,
                              Integer range, Integer secretType, HttpServletRequest httpServletRequest);
+
+
+    /**
+     * 文件通知
+     * @param documentId
+     * @param documentName
+     * @param documentPath
+     * @param documentUrl
+     * @param documentMd5
+     * @param uploaderId
+     * @param uploader
+     * @param remark
+     * @param needText
+     * @return
+     */
+    Map<String,Object> notice(String documentId,String documentName,String documentPath,String documentUrl,
+                  String documentMd5,String uploaderId,String uploader,String remark,Integer needText);
 }

+ 39 - 4
src/main/java/com/redxun/search/service/impl/SearchServiceImpl.java

@@ -39,7 +39,7 @@ public class SearchServiceImpl implements SearchService {
         paramMap.put("range",range);
         paramMap.put("secretType",secretType);
         // 对signature进行加密
-        Map<String, String> params = getParams(httpServletRequest);
+        Map<String, Object> params = getParams(httpServletRequest);
         String sign = makeSign(params, "uyjg4h61j5y3t59t");
         // String sign = "uyjg4h61j5y3t59t";
         headerMap.put("signature", sign);
@@ -58,14 +58,49 @@ public class SearchServiceImpl implements SearchService {
         return result;
     }
 
+    @Override
+    public Map<String,Object> notice(String documentId, String documentName, String documentPath,
+                         String documentUrl, String documentMd5, String uploaderId,
+                         String uploader, String remark, Integer needText) {
+        Map<String,Object> result = new HashMap<>();
+        Map<String,Object> paramMap = new HashMap<>();
+        Map<String,Object> headerMap = new HashMap<>();
+        //paramMap.put("documentId",documentId);
+        paramMap.put("documentName",documentName);
+        paramMap.put("documentPath",documentPath);
+        paramMap.put("documentUrl",documentUrl);
+        paramMap.put("documentMd5",documentMd5);
+        paramMap.put("uploaderId",uploaderId);
+        paramMap.put("uploader",uploader);
+        paramMap.put("remark",remark);
+        paramMap.put("needText",needText);
+        // 对signature进行加密
+        String sign = makeSign(paramMap, "uyjg4h61j5y3t59t");
+        // String sign = "uyjg4h61j5y3t59t";
+        headerMap.put("signature", sign);
+        headerMap.put("businessKey", "knowlege-manager");
+        JSONObject respone = HttpRequestHelper.sendRequest(headerMap,paramMap,URL+"/api-kmsearch/search/notice");
+        if(null != respone && 200 == respone.getIntValue("code")) {
+            result.put("code",respone.getIntValue("code"));
+            result.put("message",respone.getString("message"));
+            result.put("data",respone.getJSONObject("data"));
+        } else {
+            assert respone != null;
+            result.put("code",respone.getIntValue("code"));
+            result.put("message",respone.getString("message"));
+            result.put("data",respone.getJSONObject("data"));
+        }
+        return result;
+    }
+
     /**
      * 获取请求参数
      * @param request
      * @return
      */
-    public Map<String, String> getParams(HttpServletRequest request) {// 未考虑数组排序之后逗号连接
+    public Map<String, Object> getParams(HttpServletRequest request) {// 未考虑数组排序之后逗号连接
         Map<String, String[]> map = request.getParameterMap();
-        SortedMap<String, String> result = new TreeMap<>();
+        SortedMap<String, Object> result = new TreeMap<>();
         for (Map.Entry<String, String[]> entry : map.entrySet()) {
             if (entry.getKey().equalsIgnoreCase("file")) {
                 continue;
@@ -86,7 +121,7 @@ public class SearchServiceImpl implements SearchService {
      * @param secret
      * @return
      */
-    public String makeSign(Map<String, String> params, String secret) {
+    public String makeSign(Map<String, Object> params, String secret) {
         List<String> keys = new ArrayList<>(params.keySet());
         Collections.sort(keys);
         StringBuilder sb = new StringBuilder();

+ 4 - 1
src/main/resources/application.properties

@@ -78,4 +78,7 @@ logging.level.com.xxl.job=warn
 management.health.rabbit.enabled=false
 
 # ¶àÊý¾ÝÔ´ÅäÖÃ
-customDataSource=train,system
+customDataSource=train,system
+
+# ÎļþURL
+file.url=http://www.hkcqjy.com.cn:8088/api/api-system/system/core/sysFile/previewFile?fileId=

+ 6 - 3
src/main/resources/mapper/knowledge/KnowledgeMapper.xml

@@ -126,10 +126,13 @@
         <include refid="COLUMNS" />
         FROM KM_KNOWLEDGE
         <where>
-            <if test="@rx.Ognl@isNotEmpty(params.categoryId)">
-                CATEGORY_ID = #{params.categoryId}
+            <if test="@rx.Ognl@isNotEmpty(params.keyword) and params.keyword == 'working'">
+                CATEGORY_ID = 40
+            </if>
+            <if test="@rx.Ognl@isNotEmpty(params.keyword) and params.keyword == 'experience'">
+                CATEGORY_ID = 50
             </if>
-            and IS_DEL = 0
+            and IS_DEL = 0 and APPROVAL_STATUS = 5
         </where>
         ORDER BY
         <if test="@rx.Ognl@isNotEmpty(w.orderBySql)">