Parcourir la source

知识库积分部分功能提交,积分获取查看功能

徐滕 il y a 6 jours
Parent
commit
5b23aa2401

+ 45 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/UserPointDetail.java

@@ -36,6 +36,19 @@ public class UserPointDetail extends DataEntity<UserPointDetail> {
     /** 分享删除标志 */
     private String shareDelFlag;
 
+    /** 积分来源分类ID(来自 work_knowledge_point_category.id) */
+    private String categoryId;
+
+    /** 获取方式规则ID(来自 work_knowledge_base_point_rule.id) */
+    private String ruleId;
+
+    /** 积分来源名称(来自 work_knowledge_point_category.category_name) */
+    private String categoryName;
+
+    /** 获取方式规则类型(来自 work_knowledge_base_point_rule.rule_type)
+     * 1:创建, 2:审核, 10:阅读, 20:点赞 */
+    private Integer ruleType;
+
     private Date beginDate;
     private Date endDate;
     private String userName;
@@ -104,6 +117,38 @@ public class UserPointDetail extends DataEntity<UserPointDetail> {
         this.shareDelFlag = shareDelFlag;
     }
 
+    public String getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(String categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public String getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(String ruleId) {
+        this.ruleId = ruleId;
+    }
+
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    public Integer getRuleType() {
+        return ruleType;
+    }
+
+    public void setRuleType(Integer ruleType) {
+        this.ruleType = ruleType;
+    }
+
     public Date getBeginDate() {
         return beginDate;
     }

+ 22 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/WorkKnowledgeBasePointDetail.java

@@ -19,6 +19,12 @@ public class WorkKnowledgeBasePointDetail extends DataEntity<WorkKnowledgeBasePo
     /** 变动类型 1:创建加分 2:审核加分 */
     private Integer changeType;
 
+    /** 积分来源分类ID(关联 work_knowledge_point_category.id) */
+    private String categoryId;
+
+    /** 获取方式规则ID(关联 work_knowledge_base_point_rule.id) */
+    private String ruleId;
+
     /** 积分值 */
     private Integer point;
 
@@ -46,6 +52,22 @@ public class WorkKnowledgeBasePointDetail extends DataEntity<WorkKnowledgeBasePo
         this.changeType = changeType;
     }
 
+    public String getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(String categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public String getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(String ruleId) {
+        this.ruleId = ruleId;
+    }
+
     public Integer getPoint() {
         return point;
     }

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

@@ -246,13 +246,13 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
             String categoryId = categories.get(0).getId();
             
             // 使用新方法精确查询:category_id + rule_type=10 + point_name="阅读"
-            WorkKnowledgeBasePointRule rule = pointRuleDao.findByCategoryIdAndRuleTypeAndPointName(categoryId, "10", "阅读");
+            WorkKnowledgeBasePointRule rule = pointRuleDao.findByCategoryIdAndRuleType(categoryId, "10");
             
             if (rule != null && rule.getPointValue() != null) {
                 int pointValue = Integer.parseInt(rule.getPointValue());
                 if (pointValue > 0) {
                     // 插入积分明细(change_type=3 表示阅读积分)
-                    insertPointDetail(creatorUserId, fileId, 3, pointValue);
+                    insertPointDetail(creatorUserId, fileId, 3, categoryId, rule.getId(), pointValue);
                 }
             }
         } catch (Exception e) {
@@ -289,16 +289,14 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
 
             String categoryId = categories.get(0).getId();
             
-            // 使用新方法精确查询:category_id + rule_type=10 + point_name="点赞"
-            WorkKnowledgeBasePointRule rule = pointRuleDao.findByCategoryIdAndRuleTypeAndPointName(
-                categoryId, "10", "点赞"
-            );
+            // 使用新方法精确查询:category_id + rule_type=20 + point_name="点赞"
+            WorkKnowledgeBasePointRule rule = pointRuleDao.findByCategoryIdAndRuleType(categoryId, "20");
             
             if (rule != null && rule.getPointValue() != null) {
                 int pointValue = Integer.parseInt(rule.getPointValue());
                 if (pointValue > 0) {
                     // 插入积分明细(change_type=4 表示点赞积分)
-                    insertPointDetail(creatorUserId, fileId, 4, pointValue);
+                    insertPointDetail(creatorUserId, fileId, 4, categoryId, rule.getId(), pointValue);
                 }
             }
         } catch (Exception e) {
@@ -310,11 +308,13 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
     /**
      * 插入积分明细记录
      */
-    private void insertPointDetail(String userId, String shareId, Integer changeType, Integer point) {
+    private void insertPointDetail(String userId, String shareId, Integer changeType, String categoryId, String ruleId, Integer point) {
         WorkKnowledgeBasePointDetail detail = new WorkKnowledgeBasePointDetail();
         detail.setUserId(userId);
         detail.setShareId(shareId);
         detail.setChangeType(changeType);
+        detail.setCategoryId(categoryId);
+        detail.setRuleId(ruleId);
         detail.setPoint(point);
         detail.preInsert();
         pointDetailDao.insert(detail);

+ 59 - 33
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBaseShareService.java

@@ -586,6 +586,26 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
         }
         String shareId = entity.getId();
         
+        // 查询该分类对应的积分规则(用于获取categoryId和ruleId)
+        String categoryId = null;
+        WorkKnowledgeBasePointRule createRule = null;
+        WorkKnowledgeBasePointRule auditRule = null;
+        
+        if (StringUtils.isNotBlank(entity.getTreeNodeId())) {
+            WorkKnowledgeBaseTreeInfo treeInfo = getTreeInfoById(entity.getTreeNodeId());
+            if (treeInfo != null) {
+                // 根据treeName查询分类表获取categoryId
+                List<WorkKnowledgePointCategory> categories = findCategoriesByName(treeInfo.getTreeName());
+                if (categories != null && !categories.isEmpty()) {
+                    categoryId = categories.get(0).getId();
+                    // 查询该分类下rule_type=1(创建积分)的规则
+                    createRule = pointRuleDao.findByCategoryIdAndRuleType(categoryId, "1");
+                    // 查询该分类下rule_type=2(审核积分)的规则
+                    auditRule = pointRuleDao.findByCategoryIdAndRuleType(categoryId, "2");
+                }
+            }
+        }
+        
         // 计算三人评分的平均分(仅用于创建人)
         Integer averageScore = null;
         List<WorkKnowledgeBaseAuditRecord> records = auditRecordDao.findByFileIdSinceTime(shareId, startTime);
@@ -606,34 +626,21 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
         
         // 1、提交审核人获得创建积分(使用平均分)
         String submitUserId = entity.getSubmitAuditUserId();
-        if (StringUtils.isNotBlank(submitUserId) && averageScore != null) {
-            insertPointDetail(submitUserId, shareId, POINT_CHANGE_CREATE, averageScore);
+        if (StringUtils.isNotBlank(submitUserId) && averageScore != null && createRule != null) {
+            insertPointDetail(submitUserId, shareId, POINT_CHANGE_CREATE, categoryId, createRule.getId(), averageScore);
         }
         
-        // 2、查询该分类对应的审核积分规则(rule_type=2)
+        // 2、本轮三位审核人各获得审核积分(使用固定审核积分值)
+        if (records == null || records.isEmpty() || auditRule == null || StringUtils.isBlank(auditRule.getPointValue())) {
+            return;
+        }
         Integer auditPointValue = null;
-        if (StringUtils.isNotBlank(entity.getTreeNodeId())) {
-            WorkKnowledgeBaseTreeInfo treeInfo = getTreeInfoById(entity.getTreeNodeId());
-            if (treeInfo != null) {
-                // 根据treeName查询分类表获取categoryId
-                List<WorkKnowledgePointCategory> categories = findCategoriesByName(treeInfo.getTreeName());
-                if (categories != null && !categories.isEmpty()) {
-                    String categoryId = categories.get(0).getId();
-                    // 查询该分类下rule_type=2(审核积分)的规则
-                    WorkKnowledgeBasePointRule auditRule = pointRuleDao.findByCategoryIdAndRuleType(categoryId, "2");
-                    if (auditRule != null && StringUtils.isNotBlank(auditRule.getPointValue())) {
-                        try {
-                            auditPointValue = Integer.parseInt(auditRule.getPointValue());
-                        } catch (NumberFormatException e) {
-                            // 忽略无效值
-                        }
-                    }
-                }
-            }
+        try {
+            auditPointValue = Integer.parseInt(auditRule.getPointValue());
+        } catch (NumberFormatException e) {
+            return;
         }
-        
-        // 3、本轮三位审核人各获得审核积分(使用固定审核积分值)
-        if (records == null || records.isEmpty() || auditPointValue == null || auditPointValue <= 0) {
+        if (auditPointValue <= 0) {
             return;
         }
         Set<String> grantedUserIds = new HashSet<>();
@@ -641,7 +648,7 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
             if (record.getAuditResult() != null && record.getAuditResult() == 1
                     && StringUtils.isNotBlank(record.getAuditUserId())
                     && grantedUserIds.add(record.getAuditUserId())) {
-                insertPointDetail(record.getAuditUserId(), shareId, POINT_CHANGE_AUDIT, auditPointValue);
+                insertPointDetail(record.getAuditUserId(), shareId, POINT_CHANGE_AUDIT, categoryId, auditRule.getId(), auditPointValue);
             }
         }
     }
@@ -655,18 +662,35 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
         }
         String shareId = entity.getId();
         
+        // 查询全局默认积分规则(用于获取categoryId和ruleId)
+        WorkKnowledgeBasePointRule createRule = pointRuleDao.findByRuleType(POINT_RULE_CREATE);
+        WorkKnowledgeBasePointRule auditRule = pointRuleDao.findByRuleType(POINT_RULE_AUDIT);
+        
         // 1、提交审核人获得创建积分(使用固定值)
         String submitUserId = entity.getSubmitAuditUserId();
-        if (StringUtils.isNotBlank(submitUserId)) {
-            WorkKnowledgeBasePointRule createRule = pointRuleDao.findByRuleType(POINT_RULE_CREATE);
-            if (createRule != null && createRule.getPointValue() != null && Integer.parseInt(createRule.getPointValue()) > 0) {
-                insertPointDetail(submitUserId, shareId, POINT_CHANGE_CREATE, Integer.parseInt(createRule.getPointValue()));
+        if (StringUtils.isNotBlank(submitUserId) && createRule != null && createRule.getPointValue() != null) {
+            Integer createPoint = null;
+            try {
+                createPoint = Integer.parseInt(createRule.getPointValue());
+            } catch (NumberFormatException e) {
+                createPoint = null;
+            }
+            if (createPoint != null && createPoint > 0) {
+                insertPointDetail(submitUserId, shareId, POINT_CHANGE_CREATE, createRule.getCategoryId(), createRule.getId(), createPoint);
             }
         }
         
         // 2、本轮三位审核人各获得审核积分(使用固定值)
-        WorkKnowledgeBasePointRule auditRule = pointRuleDao.findByRuleType(POINT_RULE_AUDIT);
-        if (auditRule == null || auditRule.getPointValue() == null || Integer.parseInt(auditRule.getPointValue()) <= 0) {
+        if (auditRule == null || auditRule.getPointValue() == null) {
+            return;
+        }
+        Integer auditPointValue = null;
+        try {
+            auditPointValue = Integer.parseInt(auditRule.getPointValue());
+        } catch (NumberFormatException e) {
+            return;
+        }
+        if (auditPointValue <= 0) {
             return;
         }
         List<WorkKnowledgeBaseAuditRecord> records = auditRecordDao.findByFileIdSinceTime(shareId, startTime);
@@ -678,7 +702,7 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
             if (record.getAuditResult() != null && record.getAuditResult() == 1
                     && StringUtils.isNotBlank(record.getAuditUserId())
                     && grantedUserIds.add(record.getAuditUserId())) {
-                insertPointDetail(record.getAuditUserId(), shareId, POINT_CHANGE_AUDIT, Integer.parseInt(auditRule.getPointValue()));
+                insertPointDetail(record.getAuditUserId(), shareId, POINT_CHANGE_AUDIT, auditRule.getCategoryId(), auditRule.getId(), auditPointValue);
             }
         }
     }
@@ -686,12 +710,14 @@ public class WorkKnowledgeBaseShareService extends CrudService<WorkKnowledgeBase
     /**
      * 插入一条积分明细记录
      */
-    private void insertPointDetail(String userId, String shareId, Integer changeType, Integer point) {
+    private void insertPointDetail(String userId, String shareId, Integer changeType, String categoryId, String ruleId, Integer point) {
         WorkKnowledgeBasePointDetail detail = new WorkKnowledgeBasePointDetail();
         detail.setId(IdGen.uuid());
         detail.setUserId(userId);
         detail.setShareId(shareId);
         detail.setChangeType(changeType);
+        detail.setCategoryId(categoryId);
+        detail.setRuleId(ruleId);
         detail.setPoint(point);
         detail.preInsert();
         pointDetailDao.insert(detail);

+ 1 - 1
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/web/WorkKnowledgeBasePointController.java

@@ -131,7 +131,7 @@ public class WorkKnowledgeBasePointController extends BaseController {
 
     /**
      * 某用户积分明细列表(子页)
-     * 参数:userId(必传)、shareName(文档名模糊)、changeType(1创建/2审核)、beginDate、endDate
+     * 参数:userId(必传)、shareName(文档名模糊)、categoryName(来源分类名称模糊)、ruleType(获取方式:1创建/2审核/10阅读/20点赞)、beginDate、endDate
      */
     @RequiresPermissions("workKnowledgeBase:point:list")
     @RequestMapping(value = "userDetail")

+ 27 - 10
src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBasePointDetailDao.xml

@@ -7,6 +7,8 @@
         a.user_id       AS "userId",
         a.share_id      AS "shareId",
         a.change_type   AS "changeType",
+        a.category_id   AS "categoryId",
+        a.rule_id       AS "ruleId",
         a.point         AS "point",
         a.create_by     AS "createBy.id",
         a.create_date   AS "createDate",
@@ -58,10 +60,10 @@
 
     <insert id="insert">
         INSERT INTO work_knowledge_base_point_detail (
-            id, user_id, share_id, change_type, point,
+            id, user_id, share_id, change_type, category_id, rule_id, point,
             create_by, create_date, update_by, update_date, remarks, del_flag
         ) VALUES (
-            #{id}, #{userId}, #{shareId}, #{changeType}, #{point},
+            #{id}, #{userId}, #{shareId}, #{changeType}, #{categoryId}, #{ruleId}, #{point},
             #{createBy.id}, #{createDate}, #{updateBy.id}, #{updateDate}, #{remarks}, #{delFlag}
         )
     </insert>
@@ -69,6 +71,8 @@
     <update id="update">
         UPDATE work_knowledge_base_point_detail SET
             change_type = #{changeType},
+            category_id = #{categoryId},
+            rule_id     = #{ruleId},
             point       = #{point},
             update_by   = #{updateBy.id},
             update_date = #{updateDate},
@@ -163,30 +167,38 @@
 
     <!-- ============================================================
          用户积分明细查询(子页)
-         输出字段:id/shareId/shareName/treeNodeId/changeType/point/createDate
-         参数:userId(必传)/shareName(文档名模糊)/changeType/beginDate/endDate/offset/limit
+         输出字段:id/shareId/shareName/treeNodeId/categoryId/ruleId/categoryName/ruleType/point/createDate
+         参数:userId(必传)/shareName(文档名模糊)/categoryName(来源)/ruleType(获取方式)/beginDate/endDate/offset/limit
          ============================================================ -->
     <select id="findUserPointDetailList" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointDetail">
         SELECT
             d.id          AS "id",
             d.user_id     AS "userId",
             IFNULL(d.share_id, '')  AS "shareId",
-            CAST(d.change_type AS SIGNED) AS "changeType",
+            d.category_id AS "categoryId",
+            d.rule_id     AS "ruleId",
             CAST(IFNULL(d.point, 0) AS SIGNED) AS "point",
             d.create_date AS "createDate",
             IFNULL(s.name, '')          AS "shareName",
             IFNULL(s.tree_node_id, '')  AS "treeNodeId",
-            IFNULL(s.del_flag, '1')     AS "shareDelFlag"
+            IFNULL(s.del_flag, '1')     AS "shareDelFlag",
+            IFNULL(c.category_name, '') AS "categoryName",
+            CAST(IFNULL(r.rule_type, 0) AS SIGNED) AS "ruleType"
         FROM work_knowledge_base_point_detail d
         LEFT JOIN work_knowledge_base_share_info s ON s.id = d.share_id
+        LEFT JOIN work_knowledge_point_category c ON c.id = d.category_id AND c.del_flag = '0'
+        LEFT JOIN work_knowledge_base_point_rule r ON r.id = d.rule_id AND r.del_flag = '0'
         <where>
             d.del_flag = '0'
             AND d.user_id = #{userId}
             <if test="shareName != null and shareName != ''">
                 AND s.name LIKE CONCAT('%', #{shareName}, '%')
             </if>
-            <if test="changeType != null">
-                AND d.change_type = #{changeType}
+            <if test="categoryName != null and categoryName != ''">
+                AND c.category_name LIKE CONCAT('%', #{categoryName}, '%')
+            </if>
+            <if test="ruleType != null">
+                AND r.rule_type = #{ruleType}
             </if>
             <!-- 正确日期查询:使用 DATE() 函数 + 直接传 Date 类型 -->
             <if test="beginDate != null">
@@ -210,14 +222,19 @@
         SELECT COUNT(1)
         FROM work_knowledge_base_point_detail d
         LEFT JOIN work_knowledge_base_share_info s ON s.id = d.share_id
+        LEFT JOIN work_knowledge_point_category c ON c.id = d.category_id AND c.del_flag = '0'
+        LEFT JOIN work_knowledge_base_point_rule r ON r.id = d.rule_id AND r.del_flag = '0'
         <where>
             d.del_flag = '0'
             AND d.user_id = #{userId}
             <if test="shareName != null and shareName != ''">
                 AND s.name LIKE CONCAT('%', #{shareName}, '%')
             </if>
-            <if test="changeType != null">
-                AND d.change_type = #{changeType}
+            <if test="categoryName != null and categoryName != ''">
+                AND c.category_name LIKE CONCAT('%', #{categoryName}, '%')
+            </if>
+            <if test="ruleType != null">
+                AND r.rule_type = #{ruleType}
             </if>
             <!-- 正确日期查询:使用 DATE() 函数 + 直接传 Date 类型 -->
             <if test="beginDate != null">

+ 28 - 0
src/main/resources/mysqlDateBase/alter_work_knowledge_base_point_detail_add_source_fields.sql

@@ -0,0 +1,28 @@
+-- ============================================
+-- 知识库积分明细表添加来源和获取方式字段
+-- 作者:徐滕
+-- 日期:2026-06-17
+-- 说明:解决因文档删除或树节点变化导致无法展示积分来源和获取方式的问题
+-- ============================================
+
+-- 1. 添加 category_id 字段(积分来源,对应 work_knowledge_point_category.id)
+ALTER TABLE work_knowledge_base_point_detail 
+ADD COLUMN category_id VARCHAR(64) DEFAULT NULL COMMENT '积分来源分类ID(关联 work_knowledge_point_category.id)' AFTER change_type;
+
+-- 2. 添加 rule_id 字段(获取方式,对应 work_knowledge_base_point_rule.id)
+ALTER TABLE work_knowledge_base_point_detail 
+ADD COLUMN rule_id VARCHAR(64) DEFAULT NULL COMMENT '获取方式规则ID(关联 work_knowledge_base_point_rule.id)' AFTER category_id;
+
+-- 3. 为现有数据填充历史数据(可选,根据实际需求执行)
+-- 注意:此步骤需要谨慎执行,建议在测试环境先验证
+UPDATE work_knowledge_base_point_detail d
+LEFT JOIN work_knowledge_base_share_info s ON s.id = d.share_id
+LEFT JOIN work_knowledge_base_tree_info t ON t.id = s.tree_node_id
+LEFT JOIN work_knowledge_point_category c ON c.category_name = t.tree_name AND c.del_flag = '0'
+LEFT JOIN work_knowledge_base_point_rule r ON r.category_id = c.id AND r.rule_type = d.change_type AND r.del_flag = '0'
+SET d.category_id = c.id, d.rule_id = r.id
+WHERE d.del_flag = '0';
+
+-- 4. 添加索引优化查询性能
+CREATE INDEX idx_point_detail_category_id ON work_knowledge_base_point_detail(category_id);
+CREATE INDEX idx_point_detail_rule_id ON work_knowledge_base_point_detail(rule_id);

+ 28 - 11
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBasePointUserDetail.jsp

@@ -15,19 +15,28 @@
                     <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
                     <div class="commonQuery lw7">
                         <div class="layui-item query athird" style="width: 25%">
-                            <label class="layui-form-label">积分来源:</label>
+                            <label class="layui-form-label">文档名称:</label>
                             <div class="layui-input-block with-icon">
                                 <input type="text" name="shareName" value="${userPointDetail.shareName}"
                                        placeholder="文档名模糊查询" class="form-control layui-input"/>
                             </div>
                         </div>
+                        <%--<div class="layui-item query athird" style="width: 25%">
+                            <label class="layui-form-label">积分来源:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="categoryName" value="${userPointDetail.categoryName}"
+                                       placeholder="分类名称模糊查询" class="form-control layui-input"/>
+                            </div>
+                        </div>--%>
                         <div class="layui-item query athird" style="width: 25%">
                             <label class="layui-form-label">获取方式:</label>
                             <div class="layui-input-block">
-                                <select name="changeType" class="form-control layui-input">
+                                <select name="ruleType" class="form-control layui-input">
                                     <option value="">全部</option>
-                                    <option value="1" ${userPointDetail.changeType == 1 ? 'selected' : ''}>创建</option>
-                                    <option value="2" ${userPointDetail.changeType == 2 ? 'selected' : ''}>审核</option>
+                                    <option value="1" ${userPointDetail.ruleType == 1 ? 'selected' : ''}>创建</option>
+                                    <option value="2" ${userPointDetail.ruleType == 2 ? 'selected' : ''}>审核</option>
+                                    <option value="10" ${userPointDetail.ruleType == 10 ? 'selected' : ''}>阅读</option>
+                                    <option value="20" ${userPointDetail.ruleType == 20 ? 'selected' : ''}>点赞</option>
                                 </select>
                             </div>
                         </div>
@@ -93,7 +102,7 @@
                     page: false,
                     cols: [[
                         {field: 'index', align: 'center', width: 60, title: '序号'},
-                        {field: 'shareName', align: 'center', title: '积分来源(文档名称', minWidth: 240, templet: function(d) {
+                        {field: 'shareName', align: 'center', title: '文档名称', minWidth: 240, templet: function(d) {
                             var nm = d.shareName || '';
                             var sid = d.shareId || '';
                             // 文档已被删除(物理或逻辑)
@@ -105,11 +114,16 @@
                             }
                             return '<a href="javascript:void(0)" class="attention-info" onclick="openShareDetail(\'' + sid + '\',\'' + (d.treeNodeId || '') + '\')">' + nm + '</a>';
                         }},
-                        {field: 'changeType', align: 'center', title: '获取方式', width: 110, templet: function(d) {
-                            var ct = parseInt(d.changeType);
-                            if (ct === 1) return '<span class="layui-badge layui-bg-blue">创建</span>';
-                            if (ct === 2) return '<span class="layui-badge layui-bg-green">审核</span>';
-                            return '';
+                        {field: 'categoryName', align: 'center', title: '来源', width: 140, templet: function(d) {
+                            return d.categoryName || '-';
+                        }},
+                        {field: 'ruleType', align: 'center', title: '获取方式', width: 110, templet: function(d) {
+                            var rt = parseInt(d.ruleType);
+                            if (rt === 1) return '<span class="layui-badge layui-bg-blue">创建</span>';
+                            if (rt === 2) return '<span class="layui-badge layui-bg-green">审核</span>';
+                            if (rt === 10) return '<span class="layui-badge layui-bg-orange">阅读</span>';
+                            if (rt === 20) return '<span class="layui-badge layui-bg-red">点赞</span>';
+                            return '-';
                         }},
                         {field: 'point', align: 'center', title: '积分额度', width: 100, templet: function(d) {
                             return '<span style="color:#1aa094;font-weight:bold;">+' + (d.point || 0) + '</span>';
@@ -128,7 +142,10 @@
                                         ,"shareName": "<c:out value='${row.shareName}'/>"
                                         ,"treeNodeId": "${row.treeNodeId}"
                                         ,"shareDelFlag": "${row.shareDelFlag}"
-                                        ,"changeType": "${row.changeType}"
+                                        ,"categoryId": "${row.categoryId}"
+                                        ,"ruleId": "${row.ruleId}"
+                                        ,"categoryName": "<c:out value='${row.categoryName}'/>"
+                                        ,"ruleType": "${row.ruleType}"
                                         ,"point": "${row.point}"
                                         ,"createDate": "<fmt:formatDate value="${row.createDate}" pattern="yyyy-MM-dd"/>"
                                     }