Browse Source

知识库,问题修复

徐滕 2 weeks ago
parent
commit
e8c02a617f

+ 13 - 11
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBaseReadLikeService.java

@@ -80,6 +80,12 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
             existingRecord.preUpdate();
             readRecordDao.updateReadRecord(existingRecord);
 
+            // 非首次阅读,检查是否已发放阅读积分(change_type=3),未发放则补发
+            int pointCount = pointDetailDao.countByUserIdAndShareIdAndChangeType(userId, fileId, 3);
+            if (pointCount == 0) {
+                grantPointsForFirstRead(fileId, userId);
+            }
+
             return false; // 非首次阅读
         } else {
             // 首次阅读,创建新记录
@@ -140,7 +146,7 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
             newRecord.preInsert();
             likeRecordDao.insert(newRecord);
 
-            // 首次点赞:给创建人发放积分
+            // 首次点赞:给点赞人发放积分
             grantPointsForFirstLike(fileId, userId);
             return true; // 首次点赞
         }
@@ -264,10 +270,10 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
                 ? shareInfo.getSubmitAuditUserId() 
                 : shareInfo.getCreateBy().getId();
             
-            if (ownerUserId.equals(readerUserId)) {
+            /*if (ownerUserId.equals(readerUserId)) {
                 // 记录所有者阅读自己的文件,不给积分
                 return;
-            }
+            }*/
 
             // 查询"基础积分"分类的积分规则
             List<WorkKnowledgePointCategory> categories = categoryDao.findList(
@@ -314,10 +320,10 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
                 ? shareInfo.getSubmitAuditUserId() 
                 : shareInfo.getCreateBy().getId();
             
-            if (ownerUserId.equals(likerUserId)) {
+            /*if (ownerUserId.equals(likerUserId)) {
                 // 记录所有者点赞自己的文件,不给积分
                 return;
-            }
+            }*/
 
             // 查询"基础积分"分类的积分规则
             List<WorkKnowledgePointCategory> categories = categoryDao.findList(
@@ -398,14 +404,10 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
             if (shareInfo == null || shareInfo.getCreateBy() == null) {
                 return;
             }
-            
-            // 判断记录所有者(与grantPointsForFirstLike逻辑一致)
-            String ownerUserId = (StringUtils.isNotBlank(shareInfo.getSubmitAuditUserId())) 
-                ? shareInfo.getSubmitAuditUserId() 
-                : shareInfo.getCreateBy().getId();
+
             
             // 物理删除记录所有者的点赞积分记录(change_type=4表示点赞积分)
-            pointDetailDao.deleteByUserIdAndShareIdAndChangeType(ownerUserId, fileId, 4);
+            pointDetailDao.deleteByUserIdAndShareIdAndChangeType(likerUserId, fileId, 4);
         } catch (Exception e) {
             // 删除失败不影响取消点赞操作,记录日志即可
             e.printStackTrace();

+ 3 - 2
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/web/WorkKnowledgeBaseShareController.java

@@ -108,7 +108,7 @@ public class WorkKnowledgeBaseShareController extends BaseController {
         List<Map<String, Object>> list = page.getList();
         String currentUserId = UserUtils.getUser().getId();
         boolean isAdmin = UserUtils.getUser().isAdmin();
-        // 检查当前用户是否为专家
+        // 检查当前用户是否为专家(管理员/经理不算专家)
         boolean isExpert = !isAdmin && expertService.isUserBound(currentUserId);
 
         for (Map<String, Object> map : list) {
@@ -160,7 +160,8 @@ public class WorkKnowledgeBaseShareController extends BaseController {
         model.addAttribute("dynamicConditions", dynamicConditions);
         model.addAttribute("treeNodeId", treeNodeId);
         model.addAttribute("rootId", rootId);
-        model.addAttribute("isAdmin", UserUtils.getUser().isAdmin() || UserUtils.isManager());
+        model.addAttribute("isAdmin", isAdmin);
+        model.addAttribute("isExpert", isExpert);
         return "modules/WorkKnowledgeBase/workKnowledgeBaseShareList";
     }
 

+ 7 - 1
src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBaseShareInfoDao.xml

@@ -156,7 +156,13 @@
         GROUP BY a.id, a.tree_node_id, a.file_name, a.file_url, a.name, a.create_time,
                  a.create_by, a.create_date, a.remarks, a.audit_status, a.audit_pass_count, a.audit_reject_count, a.submit_audit_user_id, a.audit_start_date,
                  a.content_attribute, a.answer_id, a.confirm_date, a.question_description, a.click_count
-        ORDER BY a.update_date DESC
+        ORDER BY
+            CASE a.audit_status
+                WHEN '2' THEN 1
+                WHEN '5' THEN 2
+                ELSE 3
+            END ASC,
+            a.update_date DESC
         <if test="offset != null and limit != null">
             LIMIT #{offset}, #{limit}
         </if>

+ 13 - 2
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseIndex.jsp

@@ -232,8 +232,13 @@
                     var hasChildren = hasChildNodes(nodes, node.id);
                     html += '<li>';
                     html += '<div class="tree-node-item' + (parentId === '0' ? ' root-node' : '') + '" data-id="' + node.id + '" data-root-id="' + node.rootId + '" style="padding-left:' + indent + 'px;">';
+                    var startCollapsed = depth >= 1;
                     if (hasChildren) {
-                        html += '<i class="glyphicon glyphicon-chevron-down tree-toggle" style="cursor:pointer;margin-right:3px;font-size:10px;"></i>';
+                        if (startCollapsed) {
+                            html += '<i class="glyphicon glyphicon-chevron-right tree-toggle" style="cursor:pointer;margin-right:3px;font-size:10px;"></i>';
+                        } else {
+                            html += '<i class="glyphicon glyphicon-chevron-down tree-toggle" style="cursor:pointer;margin-right:3px;font-size:10px;"></i>';
+                        }
                     } else {
                         html += '<i class="glyphicon glyphicon-file" style="margin-right:5px;color:#5b9bd5;"></i>';
                     }
@@ -258,7 +263,13 @@
                     html += '</span>';
                     html += '</div>';
                     if (hasChildren) {
-                        html += buildTreeHtml(nodes, node.id, depth + 1);
+                        if (startCollapsed) {
+                            html += '<ul style="display:none;">';
+                            html += buildTreeHtml(nodes, node.id, depth + 1);
+                            html += '</ul>';
+                        } else {
+                            html += buildTreeHtml(nodes, node.id, depth + 1);
+                        }
                     }
                     html += '</li>';
                 }

+ 14 - 1
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseShareList.jsp

@@ -691,6 +691,18 @@
                             </shiro:hasPermission>
                         </c:if>
                         <button class="layui-btn layui-btn-sm" onclick="search()" title="刷新">刷新</button>
+
+                        <%-- 审核权限提示:根据是否为专家组成员显示不同提示 --%>
+                        <c:if test="${isExpert}">
+                            <span style="margin-left:10px;color:#00897b;font-size:12px;font-weight:500;">
+                                <i class="glyphicon glyphicon-info-sign"></i> 您是专家组成员,可对专业文件审核(典型案例原创、经验分享等)
+                            </span>
+                        </c:if>
+                        <c:if test="${!isExpert && !isAdmin}">
+                            <span style="margin-left:10px;color:#ef6c00;font-size:12px;font-weight:500;">
+                                <i class="glyphicon glyphicon-info-sign"></i> 您可以对普通文件审核(除典型案例原创、经验分享)
+                            </span>
+                        </c:if>
                     </div>
                     <div style="clear:both;"></div>
                 </div>
@@ -750,6 +762,7 @@
                     }
                 }
             }},
+            {field: 'treeName', align: 'center', title: '文件来源', width: 120},
             <c:forEach items="${dynamicFields}" var="field">
             {field: 'dynamic_${field.fieldKey}', align: 'center', title: '${field.fieldLabel}', minWidth: 100},
             </c:forEach>
@@ -866,7 +879,7 @@
                 }
                 
                 // 点赞/取消点赞按钮(仅审核通过的文件显示,问答分类不需要,创建人不能给自己点赞)
-                if (!d.isQaCategory && status === 5 && !isCreator) {
+                if (!d.isQaCategory && status === 5) {
                     if (d.liked) {
                         xml += '<a href="javascript:void(0)" onclick="cancelLikeFile(\'' + d.id + '\')" class="layui-btn layui-btn-xs layui-bg-orange"><i class="fa fa-heart"></i> 已赞</a>';
                     } else {