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)
|
||||
|
||||
@@ -61,7 +61,7 @@ func TestAlertRecordHTTPCompleteWorkflowAndVisibility(t *testing.T) {
|
||||
c.Next()
|
||||
})
|
||||
router.RegisterAlertRecord(engine.Group(""), handler.NewAlertRecord(service))
|
||||
router.RegisterAlertGovernance(engine.Group(""), handler.NewAlertGovernance(businessservice.NewAlertGovernanceService(businessbiz.NewAlertGovernanceUsecase(businessdata.NewAlertGovernanceRepo(provider), accounts))))
|
||||
router.RegisterAlertGovernance(engine.Group(""), handler.NewAlertGovernance(businessservice.NewAlertGovernanceService(businessbiz.NewAlertGovernanceUsecase(businessdata.NewAlertGovernanceRepo(provider, &activationHTTPDatabases{}), accounts))))
|
||||
server := httptest.NewServer(engine)
|
||||
defer server.Close()
|
||||
call := func(user int, method, path, body string, expected int) map[string]any {
|
||||
|
||||
@@ -71,7 +71,7 @@ func TestBusinessManagementHTTPGroupsGoalsAndEffectivenessAgree(t *testing.T) {
|
||||
goalRepo := data.NewGoalRepo(provider)
|
||||
performance := biz.NewPerformanceUsecase(data.NewPerformanceRepo(provider), teams, effective, goalRepo)
|
||||
goals := biz.NewGoalUsecase(goalRepo, performance)
|
||||
dashboard := biz.NewDashboardUsecase(data.NewDashboardRepo(provider), biz.NewWorkbenchUsecase(data.NewWorkbenchRepo(provider), accounts, preferences), effective)
|
||||
dashboard := biz.NewDashboardUsecase(data.NewDashboardRepo(provider, &activationHTTPDatabases{}), biz.NewWorkbenchUsecase(data.NewWorkbenchRepo(provider), accounts, preferences), effective)
|
||||
engine := gin.New()
|
||||
engine.Use(func(c *gin.Context) {
|
||||
id, _ := strconv.ParseUint(c.GetHeader("X-Test-User"), 10, 64)
|
||||
|
||||
Generated
+8
-4
@@ -26,6 +26,7 @@ import (
|
||||
"kra/internal/integration/email"
|
||||
"kra/internal/integration/gameplatform"
|
||||
"kra/internal/integration/mq"
|
||||
"kra/internal/integration/oa"
|
||||
"kra/internal/integration/payment"
|
||||
"kra/internal/integration/sms"
|
||||
"kra/internal/integration/storage"
|
||||
@@ -82,7 +83,7 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
auditRecorderUsecase := system2.NewAuditRecorderUsecase(auditRecordRepo)
|
||||
auditRecorder := system3.NewAuditRecorder(auditRecorderUsecase)
|
||||
registry := taskRegistry()
|
||||
alertGovernanceRepo := business.NewAlertGovernanceRepo(dataData)
|
||||
alertGovernanceRepo := business.NewAlertGovernanceRepo(dataData, dataData)
|
||||
accountRepo := business.NewAccountRepo(dataData)
|
||||
accountUsecase := business2.NewAccountUsecase(accountRepo)
|
||||
alertGovernanceUsecase := business2.NewAlertGovernanceUsecase(alertGovernanceRepo, accountUsecase)
|
||||
@@ -97,7 +98,7 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
goalRepo := business.NewGoalRepo(dataData)
|
||||
performanceUsecase := business2.NewPerformanceUsecase(performanceRepo, teamUsecase, effectivenessUsecase, goalRepo)
|
||||
goalUsecase := business2.NewGoalUsecase(goalRepo, performanceUsecase)
|
||||
dashboardRepo := business.NewDashboardRepo(dataData)
|
||||
dashboardRepo := business.NewDashboardRepo(dataData, dataData)
|
||||
workbenchRepo := business.NewWorkbenchRepo(dataData)
|
||||
userPreferenceRepo := business.NewUserPreferenceRepo(dataData)
|
||||
userPreferenceUsecase := business2.NewUserPreferenceUsecase(userPreferenceRepo)
|
||||
@@ -141,8 +142,11 @@ func wireApp(configServer *config.Server, store *config.Store, logger *slog.Logg
|
||||
channelService := business3.NewChannelService(channelUsecase)
|
||||
channel := handler.NewChannel(channelService)
|
||||
activationRepo := business.NewActivationRepo(dataData, dataData)
|
||||
activationUsecase := business2.NewActivationUsecase(activationRepo, accountUsecase)
|
||||
activationService := business3.NewActivationService(activationUsecase)
|
||||
activationUsecase := business2.NewActivationUsecase(activationRepo, accountUsecase, userPreferenceUsecase)
|
||||
activationPoolRepo := business.NewActivationPoolRepo(dataData, dataData)
|
||||
activationGateway := oa.NewActivationGateway(store)
|
||||
activationPoolUsecase := business2.NewActivationPoolUsecase(activationPoolRepo, activationGateway, accountUsecase)
|
||||
activationService := business3.NewActivationService(activationUsecase, activationPoolUsecase)
|
||||
activation := handler.NewActivation(activationService)
|
||||
alertRecordRepo := business.NewAlertRecordRepo(dataData)
|
||||
alertRecordUsecase := business2.NewAlertRecordUsecase(alertRecordRepo, accountUsecase)
|
||||
|
||||
Reference in New Issue
Block a user