Browse Source

fix:获取引用知识资源列表

zqbao 4 tháng trước cách đây
mục cha
commit
5c4b56c189

+ 1 - 2
controllers/knowledge/resource.go

@@ -1244,9 +1244,8 @@ func (this *ResourceController) BiDashboardResourceList() {
 // @Description 获取bi看报中的知识资源列表
 // @Success 200 {object} models.EdbdataClassifyResp
 // @Param   ResourceType   query   int  true       "资源库类型:0:事件库 1:政策库 2:观点库;3:知识库"
-// @Param   BiDashboardDetailId   query   int  true       "bi看板详情ID"
 // @router /resource/bi_dashboard/cache/list [get]
-func (this *ResourceController) BiDashboardTmpResourceList() {
+func (this *ResourceController) BiDashboardCacheResourceList() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br

+ 15 - 5
models/knowledge/knowledge_resource.go

@@ -115,6 +115,16 @@ func GetKnowledgeResourcePageByIds(ids []int, startSize, pageSize int) (items []
 	return
 }
 
+func GetKnowledgeResourceByIds(ids []int) (items []*KnowledgeResource, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	sql := `SELECT * FROM knowledge_resource WHERE knowledge_resource_id in (?) ORDER BY modify_time`
+
+	err = global.DmSQL["rddp"].Raw(sql, ids).Find(&items).Error
+	return
+}
+
 // Delete逻辑删除
 func (m *KnowledgeResource) Delete(knowledgeResourceIds int) (err error) {
 
@@ -292,15 +302,15 @@ func (m *KnowledgeResource) UpdateClassifyIdByIds(ids []int, classifyId int, res
 }
 
 type BiDashboardResourceAddReq struct {
-	BiDashboardDetailId   int                     `description:"Bi看板详情"`
-	KnowledgeResourceList []KnowledgeResourceItem `description:"知识资源id"`
+	BiDashboardDetailId   int                        `description:"Bi看板详情"`
+	KnowledgeResourceList []KnowledgeResourceMapItem `description:"知识资源id"`
 }
 type BiDashboardResourceAddResp struct {
-	BiDashboardDetailId   int                     `description:"Bi看板详情"`
-	KnowledgeResourceList []KnowledgeResourceItem `description:"知识资源id"`
+	BiDashboardDetailId   int                      `description:"Bi看板详情"`
+	KnowledgeResourceList []*KnowledgeResourceList `description:"知识资源列表"`
 }
 
-type KnowledgeResourceItem struct {
+type KnowledgeResourceMapItem struct {
 	KnowledgeResourceId int
 	ResourceType        int
 }

+ 1 - 1
routers/commentsRouter.go

@@ -5022,7 +5022,7 @@ func init() {
 
     beego.GlobalControllerRouter["eta_gn/eta_api/controllers/knowledge:ResourceController"] = append(beego.GlobalControllerRouter["eta_gn/eta_api/controllers/knowledge:ResourceController"],
         beego.ControllerComments{
-            Method: "BiDashboardTmpResourceList",
+            Method: "BiDashboardCacheResourceList",
             Router: `/resource/bi_dashboard/cache/list`,
             AllowHTTPMethods: []string{"get"},
             MethodParams: param.Make(),

+ 46 - 12
services/knowledge/resource.go

@@ -1059,23 +1059,57 @@ func addExcelResource(req *knowledge.AddReq, sysUser *system.Admin) (err error,
 }
 
 func GetKnowledgeResourceTmpList(dashboardDetailId, resourceType, adminId int) (resp *knowledge.BiDashboardResourceAddResp, msg string, err error) {
-	data, err := utils.Rc.RedisBytes(utils.CACHE_KEY_BI_DASHBOARD_PREPARE_RESOURCE + strconv.Itoa(adminId))
-	resp = new(knowledge.BiDashboardResourceAddResp)
-	if err != nil {
-		if err == redis.Nil {
+	if dashboardDetailId <= 0 {
+		data, er := utils.Rc.RedisBytes(utils.CACHE_KEY_BI_DASHBOARD_PREPARE_RESOURCE + strconv.Itoa(adminId))
+		req := new(knowledge.BiDashboardResourceAddReq)
+		if er != nil {
+			if er == redis.Nil {
+				msg = "暂无知识库"
+				err = nil
+				return
+			}
+			msg = "获取知识库模板列表失败"
+			return
+		}
+		if err = json.Unmarshal(data, &req); err != nil {
+			msg = "获取知识库模板列表失败"
+		}
+
+		selectedIds := make([]int, 0)
+		for _, item := range req.KnowledgeResourceList {
+			if item.ResourceType == resourceType {
+				selectedIds = append(selectedIds, item.KnowledgeResourceId)
+			}
+		}
+		knowledgeList, er := knowledge.GetKnowledgeResourceByIds(selectedIds)
+		if er != nil {
+			msg = "获取知识库模板列表失败"
+			return
+		}
+		resp = new(knowledge.BiDashboardResourceAddResp)
+		resp.KnowledgeResourceList = toKnowledgeResourceList(knowledgeList)
+	} else {
+		condition := ` AND bi_dashboard_detail_id = ? AND knowledge_resource_type = ? `
+		pars := []interface{}{dashboardDetailId, resourceType}
+		resourceIds, er := knowledge.GetKnowledgeResourceIdsByCondition(condition, pars)
+		if er != nil {
+			msg = "获取知识库模板列表失败"
+			return
+		}
+		if len(resourceIds) == 0 {
 			msg = "暂无知识库"
-			err = nil
 			return
 		}
-		msg = "获取知识库模板列表失败"
-		return
-	}
-	if err = json.Unmarshal(data, &resp); err != nil {
-		msg = "获取知识库模板列表失败"
+		resp = new(knowledge.BiDashboardResourceAddResp)
+		knowledgeList, er := knowledge.GetKnowledgeResourceByIds(resourceIds)
+		if er != nil {
+			msg = "获取知识库模板列表失败"
+			return
+		}
+		resp.BiDashboardDetailId = dashboardDetailId
+		resp.KnowledgeResourceList = toKnowledgeResourceList(knowledgeList)
 	}
-
 	return
-
 }
 
 func GetKnowledgeResourceList(dashboardDetailId, resourceType, currentIndex, pageSize int) (resp *knowledge.KnowledgeResourceListResp, msg string, err error) {