feat: integrate OA activation workflows and business migration
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user