From 5a7e20efec17dcefab4b146a23b2ced9e12bdccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Wed, 15 Apr 2026 03:46:55 +0800 Subject: [PATCH] 1 --- modules/player/model/info.go | 2 +- modules/player/service/done.go | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/player/model/info.go b/modules/player/model/info.go index b12b558f9..cb5fe8e73 100644 --- a/modules/player/model/info.go +++ b/modules/player/model/info.go @@ -110,7 +110,7 @@ func (m *PlayerInfo) SetTask(i int, status TaskStatus) error { // GetTask 获取第 i 个任务的状态 func (m *PlayerInfo) GetTask(i int) TaskStatus { i-- //下标减1 - if i < 0 || i >= 2000 { + if i < 0 || i >= 4000 { return Reserved } diff --git a/modules/player/service/done.go b/modules/player/service/done.go index 013d65619..ee5ae4789 100644 --- a/modules/player/service/done.go +++ b/modules/player/service/done.go @@ -110,11 +110,19 @@ func buildJSONBArrayAnyCondition(column string, values []uint32) (string, []any) clauses := make([]string, 0, len(values)+1) params := make([]any, 0, len(values)+1) for _, value := range values { - clauses = append(clauses, fmt.Sprintf(`CAST(? AS text) = ANY(ARRAY(SELECT jsonb_array_elements_text(%s)))`, column)) + clauses = append(clauses, fmt.Sprintf( + `EXISTS (SELECT 1 FROM jsonb_array_elements_text(CASE WHEN jsonb_typeof(%s) = 'array' THEN %s ELSE '[]'::jsonb END) AS elem WHERE elem = CAST(? AS text))`, + column, + column, + )) params = append(params, value) } - clauses = append(clauses, fmt.Sprintf(`jsonb_array_length(%s) = ?`, column)) + clauses = append(clauses, fmt.Sprintf( + `CASE WHEN jsonb_typeof(%s) = 'array' THEN jsonb_array_length(%s) ELSE -1 END = ?`, + column, + column, + )) params = append(params, len(values)) return strings.Join(clauses, " AND "), params