Sfoglia il codice sorgente

知识库,添加视频链接功能

徐滕 4 giorni fa
parent
commit
c14c58c5f9

+ 47 - 4
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBaseShareService.java

@@ -202,6 +202,48 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
         return treeInfoDao.get(treeNodeId);
     }
 
+    /** 关联链接功能适用的目标节点名称 */
+    private static final String LINK_CATEGORY_NAME = "电网工程施工介绍";
+
+    /**
+     * 判断指定节点是否为"电网工程施工介绍"或其子节点(关联链接功能仅在此分类下启用)
+     */
+    public boolean isLinkCategory(String treeNodeId) {
+        if (StringUtils.isBlank(treeNodeId)) {
+            return false;
+        }
+        WorkKnowledgeBaseTreeInfo treeInfo = treeInfoDao.get(treeNodeId);
+        if (treeInfo == null) {
+            return false;
+        }
+        // 当前节点本身就是"电网工程施工介绍"
+        if (LINK_CATEGORY_NAME.equals(treeInfo.getTreeName())) {
+            return true;
+        }
+        // 查找"电网工程施工介绍"节点的ID
+        String targetId = treeInfoDao.findIdByTreeName(LINK_CATEGORY_NAME);
+        if (StringUtils.isBlank(targetId)) {
+            return false;
+        }
+        // 方法1:通过 root_id 判断(如果目标节点是根节点,所有子节点的 root_id 都等于它)
+        if (targetId.equals(treeInfo.getRootId())) {
+            return true;
+        }
+        // 方法2:通过 parent_ids 精确匹配(防止 ID 是其他 ID 的子串)
+        String parentIds = treeInfo.getParentIds();
+        if (StringUtils.isNotBlank(parentIds)) {
+            // parentIds 格式: ,id1,id2,id3,
+            // 使用逗号分隔后精确匹配,避免子串误匹配
+            String[] ids = parentIds.split(",");
+            for (String id : ids) {
+                if (targetId.equals(id.trim())) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     /**
      * 查询同名文件的目录路径及审核状态列表(排除问答答疑分类)
      * @param name 文件名称
@@ -834,7 +876,7 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
             // 查询附件
             List<Workattachment> attList = workattachmentService.getListByAttachmentIdAndFlag(fileId, ATTACHMENT_FLAG);
             
-            // 查询链接
+            // 查询链接(始终查询,前端根据 isLinkCategory 标志决定是否展示)
             List<WorkKnowledgeBaseShareLink> links = shareLinkDao.findByFileId(fileId);
             
             // 构建统一的内容项列表(用于列表页展示)
@@ -853,7 +895,7 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
                 }
             }
             
-            // 添加链接项
+            // 添加链接项(始终添加,前端根据 isLinkCategory 标志决定是否展示)
             if (links != null && !links.isEmpty()) {
                 for (WorkKnowledgeBaseShareLink link : links) {
                     Map<String, String> item = new HashMap<>();
@@ -884,9 +926,9 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
                 map.put("allAttachmentNames", "");
             }
             
-            // 填充链接基础字段(兼容原有逻辑)
-            map.put("linkCount", links != null ? links.size() : 0);
+            // 填充链接基础字段(始终填充,前端根据 isLinkCategory 标志决定是否展示)
             if (links != null && !links.isEmpty()) {
+                map.put("linkCount", links.size());
                 StringBuilder linkJson = new StringBuilder("[");
                 for (int i = 0; i < links.size(); i++) {
                     if (i > 0) linkJson.append(",");
@@ -899,6 +941,7 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
                 linkJson.append("]");
                 map.put("linkData", linkJson.toString());
             } else {
+                map.put("linkCount", 0);
                 map.put("linkData", "[]");
             }
             

+ 8 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/web/WorkKnowledgeBaseShareController.java

@@ -135,6 +135,7 @@ public class WorkKnowledgeBaseShareController extends BaseController {
             // 获取treeNodeId对应的treeName,用于前端判断是否需要专家审核
             Object treeNodeIdObj = map.get("treeNodeId");
             String treeName = null;
+            boolean isLinkCategory = false;
             if (treeNodeIdObj != null) {
                 String tid = treeNodeIdObj.toString();
                 WorkKnowledgeBaseTreeInfo treeInfo =
@@ -143,7 +144,10 @@ public class WorkKnowledgeBaseShareController extends BaseController {
                     treeName = treeInfo.getTreeName();
                     map.put("treeName", treeName);
                 }
+                // 判断是否为关联链接功能适用的分类(电网工程施工介绍及其子节点)
+                isLinkCategory = shareService.isLinkCategory(tid);
             }
+            map.put("isLinkCategory", isLinkCategory);
             
             // 判断是否为问答答疑分类
             boolean isQaCategory = "问答答疑".equals(treeName);
@@ -445,6 +449,7 @@ public class WorkKnowledgeBaseShareController extends BaseController {
         // 判断是否为问答答疑分类
         boolean isQaCategory = false;
         String treeName = null;
+        boolean isLinkCategory = false;
         if (StringUtils.isNotBlank(treeNodeId)) {
             WorkKnowledgeBaseTreeInfo treeInfo = shareService.getTreeInfoById(treeNodeId);
             if (treeInfo != null) {
@@ -452,6 +457,8 @@ public class WorkKnowledgeBaseShareController extends BaseController {
                 if ("问答答疑".equals(treeName)) {
                     isQaCategory = true;
                 }
+                // 判断是否为关联链接功能适用的分类(电网工程施工介绍及其子节点)
+                isLinkCategory = shareService.isLinkCategory(treeNodeId);
             }
         }
 
@@ -461,6 +468,7 @@ public class WorkKnowledgeBaseShareController extends BaseController {
         model.addAttribute("dynValues", dynValues);
         model.addAttribute("isQaCategory", isQaCategory);
         model.addAttribute("treeName", treeName);
+        model.addAttribute("isLinkCategory", isLinkCategory);
         return "modules/WorkKnowledgeBase/workKnowledgeBaseShareForm";
     }
 

+ 3 - 1
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseShareForm.jsp

@@ -427,7 +427,8 @@
                     storeAs="workKnowledgeBaseShareInfo"
             />
 
-            <!-- 相关链接区域(与附件可共存,支持多条) -->
+            <!-- 相关链接区域(仅在“电网工程施工介绍”及其子节点下展示) -->
+            <c:if test="${isLinkCategory}">
             <div class="form-group layui-row">
                 <div class="form-group-label"><h2>相关链接</h2></div>
                 <div class="layui-item nav-btns">
@@ -460,6 +461,7 @@
                     </script>
                 </div>
             </div>
+            </c:if>
 
             <div class="form-group layui-row page-end"></div>
         </form:form>

+ 31 - 5
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseShareList.jsp

@@ -310,6 +310,7 @@
 
         /** 附件/链接列表弹窗:展示所有文件和链接 */
         function showAttachmentList(fileId) {
+            console.log(12321321123)
             // 从表格数据中获取 contentItems
             var tableData = layui.table.cache['checkboxTable'];
             var row = null;
@@ -332,6 +333,17 @@
                 } catch(e) {}
             }
             
+            // 根据 isLinkCategory 标志过滤内容项:非“电网工程施工介绍”及其子节点不展示链接
+            if (!row.isLinkCategory) {
+                var filteredItems = [];
+                for (var i = 0; i < items.length; i++) {
+                    if (items[i].type === 'file') {
+                        filteredItems.push(items[i]);
+                    }
+                }
+                items = filteredItems;
+            }
+            
             if (items.length === 0) {
                 layer.msg('暂无内容', {icon: 0});
                 return;
@@ -1179,6 +1191,17 @@
                     } catch(e) {}
                 }
                 
+                // 根据 isLinkCategory 标志过滤内容项:非“电网工程施工介绍”及其子节点不展示链接
+                if (!d.isLinkCategory) {
+                    var filteredItems = [];
+                    for (var i = 0; i < items.length; i++) {
+                        if (items[i].type === 'file') {
+                            filteredItems.push(items[i]);
+                        }
+                    }
+                    items = filteredItems;
+                }
+                
                 if (items.length === 0) {
                     // 无内容时显示空
                     html = '<span style="color:#ccc;">-</span>';
@@ -1211,11 +1234,13 @@
                 } else {
                     // 多文件/链接:沿用原有多文件展示方式,用 ; 隔开
                     var displayName = d.allAttachmentNames || '';
-                    // 如果有链接,将链接描述也加入显示名称
-                    for (var i = 0; i < items.length; i++) {
-                        if (items[i].type === 'link') {
-                            if (displayName) displayName += '; ';
-                            displayName += items[i].name || items[i].url;
+                    // 如果是关联链接分类,将链接描述也加入显示名称
+                    if (d.isLinkCategory) {
+                        for (var i = 0; i < items.length; i++) {
+                            if (items[i].type === 'link') {
+                                if (displayName) displayName += '; ';
+                                displayName += items[i].name || items[i].url;
+                            }
                         }
                     }
                     if (displayName.length > 40) {
@@ -1414,6 +1439,7 @@
                     ,"treeNodeId": "${row.treeNodeId}"
                     ,"treeName": "<c:out value='${row.treeName}'/>"
                     ,"isQaCategory": ${row.isQaCategory == true ? 'true' : 'false'}
+                    ,"isLinkCategory": ${row.isLinkCategory == true ? 'true' : 'false'}
                     ,"clickCount": ${row.clickCount != null ? row.clickCount : 0}
                     ,"readCount": ${row.readCount != null ? row.readCount : 0}
                     ,"likeCount": ${row.likeCount != null ? row.likeCount : 0}