From 56ccb30a944306ca63a79f5e6c8a7dee4f2f641f Mon Sep 17 00:00:00 2001 From: CalciumIon <1808837298@qq.com> Date: Mon, 9 Dec 2024 20:38:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B8=A0=E9=81=93=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E4=B8=8B=E4=BD=BF=E7=94=A8ID=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/channel.go | 4 ++-- main.go | 2 +- model/channel.go | 19 +++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/controller/channel.go b/controller/channel.go index 83755333..d272d7b3 100644 --- a/controller/channel.go +++ b/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...) } diff --git a/main.go b/main.go index 2a62309a..763a953e 100644 --- a/main.go +++ b/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() diff --git a/model/channel.go b/model/channel.go index 48408f1d..09094611 100644 --- a/model/channel.go +++ b/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 {