feat: integrate OA activation workflows and business migration

This commit is contained in:
Yvan
2026-11-07 00:09:19 +08:00
parent 64aca495f2
commit 9caf5b1abc
47 changed files with 1831 additions and 152 deletions
+31 -7
View File
@@ -20,9 +20,15 @@ import (
businessservice "kra/internal/service/business"
)
type activationHTTPDatabases struct{ oa *gorm.DB }
type activationHTTPDatabases struct {
oa *gorm.DB
sdk *gorm.DB
}
func (p *activationHTTPDatabases) Database(name string) (*gorm.DB, error) {
if name == "lx" && p.sdk != nil {
return p.sdk, nil
}
if name == "oa" && p.oa != nil {
return p.oa, nil
}
@@ -66,9 +72,27 @@ func TestActivationHTTPNamedDatabaseAndSpend(t *testing.T) {
}
}
provider := businessHTTPData{db}
databases := &activationHTTPDatabases{oa: oa}
uc := businessbiz.NewActivationUsecase(businessdata.NewActivationRepo(provider, databases), businessbiz.NewAccountUsecase(businessdata.NewAccountRepo(provider)))
h := handler.NewActivation(businessservice.NewActivationService(uc))
sdk := open("sdk.db")
pool, _ := sdk.DB()
pool.SetMaxOpenConns(1)
var files []struct{ Name, File string }
db.Raw("PRAGMA database_list").Scan(&files)
for _, file := range files {
if file.Name == "main" {
if err := sdk.Exec("ATTACH DATABASE ? AS sample", file.File).Error; err != nil {
t.Fatal(err)
}
}
}
for _, table := range []string{"tab_promote", "tab_spend"} {
if err := sdk.Exec("CREATE TABLE " + table + " AS SELECT * FROM sample." + table + " WHERE source_db='lx'").Error; err != nil {
t.Fatal(err)
}
}
sdk.Exec("DETACH DATABASE sample")
databases := &activationHTTPDatabases{oa: oa, sdk: sdk}
uc := businessbiz.NewActivationUsecase(businessdata.NewActivationRepo(provider, databases), businessbiz.NewAccountUsecase(businessdata.NewAccountRepo(provider)), businessbiz.NewUserPreferenceUsecase(businessdata.NewUserPreferenceRepo(provider)))
h := handler.NewActivation(businessservice.NewActivationService(uc, nil))
engine := gin.New()
engine.Use(func(c *gin.Context) {
id, _ := strconv.ParseUint(c.GetHeader("X-Test-User"), 10, 64)
@@ -113,14 +137,14 @@ func TestActivationHTTPNamedDatabaseAndSpend(t *testing.T) {
}
const detail = "/sw/promoteActivePool/bindSpendDetail?id=9007199254740993"
data := call(8, detail, 0)
if data["totalAmount"] != "30.30" || len(data["list"].([]any)) != 2 || data["endAt"] != "1970-01-01 00:33:20" {
t.Fatalf("流水金额、树范围或达标优先截止错误: %+v", data)
if data["totalAmount"] != "1029.30" || len(data["list"].([]any)) != 2 || data["endAt"] != "1970-01-01 01:00:00" {
t.Fatalf("流水金额、树范围或实际解绑截止错误: %+v", data)
}
call(7, detail, 7)
call(8, "/sw/promoteActivePool/bindSpendDetail?id=2", 7)
call(8, "/sw/promoteActivePool/bindSpendDetail?id=3", 7)
call(1, "/sw/promoteActivePool/bindSpendDetail?id=0", 7)
if err := db.Exec("DROP TABLE tab_spend").Error; err != nil {
if err := sdk.Exec("DROP TABLE tab_spend").Error; err != nil {
t.Fatal(err)
}
call(8, detail, 7)