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;