Просмотр исходного кода

fix: 渠道标签开启下使用ID排序出错

CalciumIon 1 год назад
Родитель
Сommit
56ccb30a94
3 измененных файлов с 16 добавлено и 9 удалено
  1. 2 2
      controller/channel.go
  2. 1 1
      main.go
  3. 13 6
      model/channel.go

+ 2 - 2
controller/channel.go

@@ -63,7 +63,7 @@ func GetAllChannels(c *gin.Context) {
 		}
 		for _, tag := range tags {
 			if tag != nil && *tag != "" {
-				tagChannel, err := model.GetChannelsByTag(*tag)
+				tagChannel, err := model.GetChannelsByTag(*tag, idSort)
 				if err == nil {
 					channelData = append(channelData, tagChannel...)
 				}
@@ -181,7 +181,7 @@ func SearchChannels(c *gin.Context) {
 		}
 		for _, tag := range tags {
 			if tag != nil && *tag != "" {
-				tagChannel, err := model.GetChannelsByTag(*tag)
+				tagChannel, err := model.GetChannelsByTag(*tag, idSort)
 				if err == nil {
 					channelData = append(channelData, tagChannel...)
 				}

+ 1 - 1
main.go

@@ -33,7 +33,7 @@ var indexPage []byte
 func main() {
 	err := godotenv.Load(".env")
 	if err != nil {
-		common.SysLog("Can't load .env file")
+		common.SysError("failed to load .env file: " + err.Error())
 	}
 
 	common.SetupLogger()

+ 13 - 6
model/channel.go

@@ -100,9 +100,13 @@ func GetAllChannels(startIdx int, num int, selectAll bool, idSort bool) ([]*Chan
 	return channels, err
 }
 
-func GetChannelsByTag(tag string) ([]*Channel, error) {
+func GetChannelsByTag(tag string, idSort bool) ([]*Channel, error) {
 	var channels []*Channel
-	err := DB.Where("tag = ?", tag).Find(&channels).Error
+	order := "priority desc"
+	if idSort {
+		order = "id desc"
+	}
+	err := DB.Where("tag = ?", tag).Order(order).Find(&channels).Error
 	return channels, err
 }
 
@@ -362,7 +366,7 @@ func EditChannelByTag(tag string, newTag *string, modelMapping *string, models *
 		return err
 	}
 	if shouldReCreateAbilities {
-		channels, err := GetChannelsByTag(updatedTag)
+		channels, err := GetChannelsByTag(updatedTag, false)
 		if err == nil {
 			for _, channel := range channels {
 				err = channel.UpdateAbilities()
@@ -450,10 +454,13 @@ func SearchTags(keyword string, group string, model string, idSort bool) ([]*str
 		args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%")
 	}
 
-	err := baseQuery.Where(whereClause, args...).
-		Select("DISTINCT tag").
+	subQuery := baseQuery.Where(whereClause, args...).
+		Select("tag").
 		Where("tag != ''").
-		Order(order).
+		Order(order)
+
+	err := DB.Table("(?) as sub", subQuery).
+		Select("DISTINCT tag").
 		Find(&tags).Error
 
 	if err != nil {