From ddf740600faed49adbbe81b800150af4c35d2e35 Mon Sep 17 00:00:00 2001 From: Chang lue Tsen Date: Sat, 31 May 2025 09:30:13 -0400 Subject: [PATCH] fix(subscribe): improve logging and update query logic for server filtering --- internal/logic/subscribe/subscribeLogic.go | 5 ++++- internal/model/server/model.go | 15 +++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/internal/logic/subscribe/subscribeLogic.go b/internal/logic/subscribe/subscribeLogic.go index 5e59d0c..f0a3f1d 100644 --- a/internal/logic/subscribe/subscribeLogic.go +++ b/internal/logic/subscribe/subscribeLogic.go @@ -117,9 +117,12 @@ func (l *SubscribeLogic) getServers(userSub *user.Subscribe) ([]*server.Server, serverIds := tool.StringToInt64Slice(subDetails.Server) groupIds := tool.StringToInt64Slice(subDetails.ServerGroup) - logger.Debugf("[Generate Subscribe]serverIds: %v, groupIds: %v", serverIds, groupIds) + l.Debugf("[Generate Subscribe]serverIds: %v, groupIds: %v", serverIds, groupIds) servers, err := l.svc.ServerModel.FindServerDetailByGroupIdsAndIds(l.ctx.Request.Context(), groupIds, serverIds) + + l.Debugf("[Query Subscribe]found servers: %v", len(servers)) + if err != nil { l.Errorw("[Generate Subscribe]find server details error: %v", logger.Field("error", err.Error())) return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "find server details error: %v", err.Error()) diff --git a/internal/model/server/model.go b/internal/model/server/model.go index f842ec4..1af139a 100644 --- a/internal/model/server/model.go +++ b/internal/model/server/model.go @@ -117,13 +117,16 @@ func (m *customServerModel) FindServerDetailByGroupIdsAndIds(ctx context.Context err := m.QueryNoCacheCtx(ctx, &list, func(conn *gorm.DB, v interface{}) error { conn = conn. Model(&Server{}). - Where("enable = ?", true) - if len(groupId) > 0 { - conn = conn.Or("group_id IN ?", groupId) - } - if len(ids) > 0 { - conn = conn.Where("id IN ?", ids) + Where("`enable` = ?", true) + if len(groupId) > 0 && len(ids) > 0 { + // OR is used to connect group_id and id conditions + conn = conn.Where("(`group_id` IN ? OR `id` IN ?)", groupId, ids) + } else if len(groupId) > 0 { + conn = conn.Where("`group_id` IN ?", groupId) + } else if len(ids) > 0 { + conn = conn.Where("`id` IN ?", ids) } + return conn.Order("sort ASC").Find(v).Error }) return list, err