Roc 8 kuukautta sitten
vanhempi
commit
d322a53e85
3 muutettua tiedostoa jossa 46 lisäystä ja 5 poistoa
  1. 6 2
      controllers/classify.go
  2. 2 2
      models/classify.go
  3. 38 1
      services/classify.go

+ 6 - 2
controllers/classify.go

@@ -408,8 +408,6 @@ func (this *ClassifyController) ListClassify() {
 	if keyWord != `` {
 		idMap := make(map[int]bool)
 
-		findList := list
-		list = make([]*models.ClassifyList, 0)
 		currParentClassifyIdList := make([]int, 0)
 		for _, v := range list {
 			idMap[v.Id] = true
@@ -418,6 +416,9 @@ func (this *ClassifyController) ListClassify() {
 			}
 		}
 
+		findList := list
+		list = make([]*models.ClassifyList, 0)
+
 		tmpList, tmpErr := services.GetParentClassifyListByParentIdList(currParentClassifyIdList)
 		if tmpErr != nil {
 			br.Msg = "获取失败"
@@ -504,6 +505,9 @@ func (this *ClassifyController) ListClassify() {
 		}
 	}
 
+	// 先将分类列表排序
+	services.SortClassifyListBySortAndCreateTime(list)
+	// 接着转换结构
 	list = services.GetClassifyListTreeRecursive(list, 0)
 
 	resp := new(models.ClassifyListResp)

+ 2 - 2
models/classify.go

@@ -523,7 +523,7 @@ func GetClassifyListByKeyword(keyWord string, enabled int) (items []*ClassifyLis
 	}
 
 	if keyWord != `` {
-		sql += ` classify_name LIKE ? `
+		sql += ` AND classify_name LIKE ? `
 		pars = utils.GetLikeKeywordPars(pars, keyWord, 1)
 	}
 	sql += ` ORDER BY sort ASC, create_time ASC`
@@ -533,7 +533,7 @@ func GetClassifyListByKeyword(keyWord string, enabled int) (items []*ClassifyLis
 	return
 }
 
-// GetClassifyListByKeyword
+// GetClassifyListByParentIdList
 // @Description: 获取分类列表
 // @author: Roc
 // @datetime 2024-06-19 09:49:33

+ 38 - 1
services/classify.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_api/models"
 	"eta/eta_api/utils"
 	"fmt"
+	"sort"
 	"time"
 )
 
@@ -569,6 +570,13 @@ func GetClassifyTreeRecursive(list []*models.ClassifyItem, parentId int) []*mode
 	return res
 }
 
+// GetParentClassifyListByParentIdList
+// @Description: 递归获取父级分类信息,正常来讲只有三次
+// @author: Roc
+// @datetime 2024-06-19 13:23:33
+// @param parentClassifyIdList []int
+// @return list []*models.ClassifyList
+// @return err error
 func GetParentClassifyListByParentIdList(parentClassifyIdList []int) (list []*models.ClassifyList, err error) {
 	num := len(parentClassifyIdList)
 	if num <= 0 {
@@ -601,7 +609,13 @@ func GetParentClassifyListByParentIdList(parentClassifyIdList []int) (list []*mo
 	return
 }
 
-// GetClassifyListTreeRecursive 递归获取分类树形结构
+// GetClassifyListTreeRecursive
+// @Description: 递归获取分类树形结构
+// @author: Roc
+// @datetime 2024-06-19 13:23:28
+// @param list []*models.ClassifyList
+// @param parentId int
+// @return []*models.ClassifyList
 func GetClassifyListTreeRecursive(list []*models.ClassifyList, parentId int) []*models.ClassifyList {
 	res := make([]*models.ClassifyList, 0)
 	for _, v := range list {
@@ -613,3 +627,26 @@ func GetClassifyListTreeRecursive(list []*models.ClassifyList, parentId int) []*
 
 	return res
 }
+
+// BySortAndCreateTime 用来排序,先按Sort字段升序排序,若Sort相同,则按照CreateTime字段升序排序。
+type BySortAndCreateTime []*models.ClassifyList
+
+func (a BySortAndCreateTime) Len() int {
+	return len(a)
+}
+
+func (a BySortAndCreateTime) Swap(i, j int) {
+	a[i], a[j] = a[j], a[i]
+}
+
+func (a BySortAndCreateTime) Less(i, j int) bool {
+	if a[i].Sort == a[j].Sort {
+		return a[i].CreateTime.Before(a[j].CreateTime)
+	}
+	return a[i].Sort < a[j].Sort
+}
+
+// SortClassifyListBySortAndCreateTime sorts the ClassifyList slice by Sort and then CreateTime in ascending order.
+func SortClassifyListBySortAndCreateTime(classifyList []*models.ClassifyList) {
+	sort.Sort(BySortAndCreateTime(classifyList))
+}