Browse Source

fix:知识资源es的搜索

zqbao 4 months ago
parent
commit
86ca7275cc
2 changed files with 123 additions and 22 deletions
  1. 109 22
      controllers/knowledge/resource.go
  2. 14 0
      services/knowledge/es.go

+ 109 - 22
controllers/knowledge/resource.go

@@ -371,38 +371,125 @@ func (this *ResourceController) Search() {
 			tagIdsInt = append(tagIdsInt, tagId)
 		}
 	}
-	knowledges, total, err := knowledgeServ.SearchKnowledgeResourceByEs(resourceType, keyWord, searchUserIds, classifyIdsInt, sourceFromArr, tagIdsInt, isIncludeFile, startSize, pageSize)
+	listTmp, total, err := knowledgeServ.SearchKnowledgeResourceByEs(resourceType, keyWord, searchUserIds, classifyIdsInt, sourceFromArr, tagIdsInt, isIncludeFile, startSize, pageSize)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
 
-	list := make([]*knowledge.KnowledgeResourceList, 0, len(knowledges))
-	for _, v := range knowledges {
-		item := new(knowledge.KnowledgeResourceList)
-		item.KnowledgeResourceId = v.KnowledgeResourceId
-		item.ResourceType = v.ResourceType
-		item.ClassifyId = v.ClassifyId
-		item.Title = v.Title
-		item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
-		item.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime)
-		item.State = v.State
-		item.Content = v.Content
-		item.ResourceCode = v.ResourceCode
-		item.AdminId = v.AdminId
-		item.AdminRealName = v.AdminRealName
-		item.SourceFrom = v.SourceFrom
-		item.TagId = v.TagId
-		if v.StartTime != nil {
-			item.StartTime = v.StartTime.Format(utils.FormatDateTime)
+	var list []*knowledge.KnowledgeResourceList
+	// 整理分类ID
+	classifyFullNameMap := make(map[int]string)
+	classifyIdsArr := make([]int, 0)
+	for _, v := range listTmp {
+		classifyIdsArr = append(classifyIdsArr, v.ClassifyId)
+	}
+	// 获取分类列表
+	classifyList, err := knowledge.GetFullClassifyListByIdList(classifyIdsArr, resourceType)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range classifyList {
+		name := v.ClassifyName
+		if v.ParentName != "" {
+			name = v.ParentName + "/" + name
 		}
-		if v.EndTime != nil {
-			item.EndTime = v.EndTime.Format(utils.FormatDateTime)
+		if v.RootName != "" {
+			name = v.RootName + "/" + name
 		}
-		list = append(list, item)
+		classifyFullNameMap[v.ClassifyId] = name
 	}
 
+	// 整理标签ID
+	tagNameMap := make(map[int]string)
+	tagIdsArr := make([]int, 0)
+	for _, v := range listTmp {
+		tagIdsArr = append(tagIdsArr, v.TagId)
+	}
+	// 获取标签列表
+	tagObj := new(knowledge.KnowledgeTag)
+	tagList, err := tagObj.GetListByIdList(tagIdsArr, resourceType)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+	}
+	for _, v := range tagList {
+		tagNameMap[v.TagId] = v.TagName
+	}
+
+	for _, v := range listTmp {
+		var startTime, endTime string
+		if v.StartTime != nil && !v.StartTime.IsZero() {
+			startTime = v.StartTime.In(time.Local).Format(utils.FormatDateTime)
+			if resourceType == knowledge.KnowledgeResourceTypeOpinion || resourceType == knowledge.KnowledgeResourceTypeKnow {
+				startTime = v.StartTime.In(time.Local).Format(utils.FormatDate)
+			}
+		}
+		if v.EndTime != nil && !v.EndTime.IsZero() {
+			endTime = v.EndTime.In(time.Local).Format(utils.FormatDateTime)
+			if resourceType == knowledge.KnowledgeResourceTypeOpinion || resourceType == knowledge.KnowledgeResourceTypeKnow {
+				endTime = v.EndTime.In(time.Local).Format(utils.FormatDate)
+			}
+		}
+		modifyTime := v.ModifyTime.In(time.Local).Format(utils.FormatDateTime)
+		createTime := v.CreateTime.In(time.Local).Format(utils.FormatDateTime)
+		tmp := &knowledge.KnowledgeResourceList{
+			KnowledgeResourceId: v.KnowledgeResourceId,
+			ResourceType:        v.ResourceType,
+			ClassifyId:          v.ClassifyId,
+			Title:               v.Title,
+			Content:             v.Content,
+			CreateTime:          createTime,
+			ModifyTime:          modifyTime,
+			State:               v.State,
+			ResourceCode:        v.ResourceCode,
+			AdminId:             v.AdminId,
+			AdminRealName:       v.AdminRealName,
+			SourceFrom:          v.SourceFrom,
+			TagId:               v.TagId,
+			StartTime:           startTime,
+			EndTime:             endTime,
+		}
+
+		classifyName, ok := classifyFullNameMap[tmp.ClassifyId]
+		if ok {
+			tmp.ClassifyFullName = classifyName
+		}
+		tagName, ok := tagNameMap[v.TagId]
+		if ok {
+			tmp.TagName = tagName
+		}
+		list = append(list, tmp)
+	}
+
+	// list := make([]*knowledge.KnowledgeResourceList, 0, len(knowledges))
+	// for _, v := range knowledges {
+	// 	item := new(knowledge.KnowledgeResourceList)
+	// 	item.KnowledgeResourceId = v.KnowledgeResourceId
+	// 	item.ResourceType = v.ResourceType
+	// 	item.ClassifyId = v.ClassifyId
+	// 	item.Title = v.Title
+	// 	item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
+	// 	item.ModifyTime = v.ModifyTime.Format(utils.FormatDateTime)
+	// 	item.State = v.State
+	// 	item.Content = v.Content
+	// 	item.ResourceCode = v.ResourceCode
+	// 	item.AdminId = v.AdminId
+	// 	item.AdminRealName = v.AdminRealName
+	// 	item.SourceFrom = v.SourceFrom
+	// 	item.TagId = v.TagId
+	// 	if v.StartTime != nil {
+	// 		item.StartTime = v.StartTime.Format(utils.FormatDateTime)
+	// 	}
+	// 	if v.EndTime != nil {
+	// 		item.EndTime = v.EndTime.Format(utils.FormatDateTime)
+	// 	}
+	// 	list = append(list, item)
+	// }
+
 	page := paging.GetPaging(currentIndex, pageSize, int(total))
 	resp := new(knowledge.KnowledgeResourceListResp)
 	resp.Paging = page

+ 14 - 0
services/knowledge/es.go

@@ -6,6 +6,7 @@ import (
 	"eta_gn/eta_api/models/knowledge"
 	"eta_gn/eta_api/utils"
 	"fmt"
+	"html"
 	"strconv"
 	"strings"
 
@@ -117,6 +118,18 @@ func SearchKnowledgeResourceByEs(resourceType int, keywordStr string, showSysIds
 	// 分页查询
 	queryMap["from"] = from
 	queryMap["size"] = size
+
+	if keywordStr == "" {
+		sortMap := []map[string]interface{}{
+			{
+				"StartTime.keyword": map[string]interface{}{
+					"order": "desc", // 按照开始时间倒序排列
+				},
+			},
+		}
+		queryMap["sort"] = sortMap
+
+	}
 	jsonBytes, _ := json.Marshal(queryMap)
 	fmt.Println(string(jsonBytes))
 
@@ -158,6 +171,7 @@ func SearchKnowledgeResourceByEs(resourceType int, keywordStr string, showSysIds
 }
 
 func ExtractTextFromResourceContent(content string) (text string) {
+	content = html.UnescapeString(content)
 	doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
 	if err != nil {
 		return