From 7a8773d25d150539fad7a79e1f9961da6907ce01 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Fri, 4 Sep 2026 20:41:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B5=84=E9=87=91=E5=87=BA?= =?UTF-8?q?=E6=AC=BE=E8=A1=A8=E6=8E=92=E5=BA=8F=E8=A7=84=E5=88=99=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adminfinance/disbursement_mysql_test.go | 35 +++++++++++++++++++ .../000062_fix_admin_pickup_collation.sql | 18 ++++++++++ 2 files changed, 53 insertions(+) create mode 100644 backend/internal/modules/adminfinance/disbursement_mysql_test.go create mode 100644 backend/migrations/000062_fix_admin_pickup_collation.sql diff --git a/backend/internal/modules/adminfinance/disbursement_mysql_test.go b/backend/internal/modules/adminfinance/disbursement_mysql_test.go new file mode 100644 index 0000000..096e4f4 --- /dev/null +++ b/backend/internal/modules/adminfinance/disbursement_mysql_test.go @@ -0,0 +1,35 @@ +package adminfinance + +import ( + "os" + "testing" + "time" + + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +func TestDisbursementQueryOnMySQL(t *testing.T) { + dsn := os.Getenv("HFB_ADMIN_FINANCE_TEST_DSN") + if dsn == "" { + t.Skip("设置 HFB_ADMIN_FINANCE_TEST_DSN 后运行 MySQL 资金出款查询测试") + } + db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) + if err != nil { + t.Fatalf("连接 MySQL 失败: %v", err) + } + + result, err := NewRepository(db).Disbursements(t.Context(), DisbursementQuery{ + DateType: "created", + StartDate: time.Now().AddDate(-1, 0, 0), + EndDate: time.Now().AddDate(0, 0, 1), + Page: 1, + PageSize: 20, + }) + if err != nil { + t.Fatalf("MySQL 资金出款查询失败: %v", err) + } + if result == nil || result.Items == nil { + t.Fatalf("MySQL 资金出款查询返回异常: %+v", result) + } +} diff --git a/backend/migrations/000062_fix_admin_pickup_collation.sql b/backend/migrations/000062_fix_admin_pickup_collation.sql new file mode 100644 index 0000000..2917fe7 --- /dev/null +++ b/backend/migrations/000062_fix_admin_pickup_collation.sql @@ -0,0 +1,18 @@ +-- +goose Up + +-- 000021/000049 创建表时未显式指定排序规则,在 MySQL 8 中会继承 +-- utf8mb4_0900_ai_ci。财务出款查询会与 utf8mb4_unicode_ci 的订单、 +-- 提现和手工出款表做 UNION,混用排序规则会触发 Error 1271。 +ALTER TABLE admin_pickups + CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +ALTER TABLE admin_pickup_financial_adjustments + CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- +goose Down + +ALTER TABLE admin_pickup_financial_adjustments + CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; + +ALTER TABLE admin_pickups + CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;