Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 38s
- 字段 outbound_at → first_purchase_at,记录表 tb_asset_outbound_record → tb_asset_first_purchase_record,接口 /outbound-records → /first-purchase-records,筛选参数与导出列同步更名 - 换货后的新资产不因换货写入,在当前世代真正支付套餐订单时才记录;记录来源只保留 order / backfill,去掉换货单字段 - 迁移 000266 重命名列、表、索引与约束;同步 Spec、设计、任务与前端接口变更说明 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
57 lines
2.7 KiB
Go
57 lines
2.7 KiB
Go
package bootstrap
|
||
|
||
import (
|
||
"github.com/redis/go-redis/v9"
|
||
"go.uber.org/zap"
|
||
"gorm.io/gorm"
|
||
|
||
approvalApp "github.com/break/junhong_cmp_fiber/internal/application/approval"
|
||
"github.com/break/junhong_cmp_fiber/internal/application/merchantpayment"
|
||
packagesilenceApp "github.com/break/junhong_cmp_fiber/internal/application/packagesilence"
|
||
refundchannelApp "github.com/break/junhong_cmp_fiber/internal/application/refundchannel"
|
||
auditInfra "github.com/break/junhong_cmp_fiber/internal/infrastructure/audit"
|
||
packageSvc "github.com/break/junhong_cmp_fiber/internal/service/package"
|
||
)
|
||
|
||
// packageSilenceBundle 是沉默期相关用例的装配结果(API 与 Worker 共用)。
|
||
type packageSilenceBundle struct {
|
||
Switch *packagesilenceApp.Switch
|
||
Resolver *packagesilenceApp.Resolver
|
||
Setter *packagesilenceApp.Setter
|
||
FirstPurchase *packagesilenceApp.FirstPurchaseRecorder
|
||
// 以下仅 API 与 Worker 中延期相关入口装配
|
||
Extensions *packagesilenceApp.ExtensionService
|
||
Policies *packagesilenceApp.PolicyService
|
||
Switches *packagesilenceApp.SwitchService
|
||
}
|
||
|
||
// newPackageSilenceBundle 装配沉默期总开关、判定、设置与首次购买套餐时间用例,并把激活闸门注入激活服务。
|
||
func newPackageSilenceBundle(db *gorm.DB, redisClient *redis.Client, logger *zap.Logger, auditWriter *auditInfra.Writer, activation *packageSvc.ActivationService) *packageSilenceBundle {
|
||
sw := packagesilenceApp.NewDefaultSwitch(db, redisClient, logger)
|
||
resolver := packagesilenceApp.NewResolver(db, sw, auditWriter, logger)
|
||
if activation != nil {
|
||
resolver.SetActivator(activation)
|
||
activation.SetSilenceGate(resolver, sw)
|
||
}
|
||
return &packageSilenceBundle{
|
||
Switch: sw, Resolver: resolver,
|
||
Setter: packagesilenceApp.NewSetter(db, auditWriter),
|
||
FirstPurchase: packagesilenceApp.NewFirstPurchaseRecorder(auditWriter),
|
||
Extensions: packagesilenceApp.NewExtensionService(db, resolver, auditWriter, logger),
|
||
Policies: packagesilenceApp.NewPolicyService(db, auditWriter),
|
||
Switches: packagesilenceApp.NewSwitchService(db, redisClient, sw, auditWriter),
|
||
}
|
||
}
|
||
|
||
// wireExtensions 注入延期用例的审批、权限、资产归属、商户池与支付渠道。
|
||
func (b *packageSilenceBundle) wireExtensions(approval approvalApp.Port, perms packagesilenceApp.PermissionChecker, ownership packagesilenceApp.OwnershipChecker,
|
||
runtime *merchantpayment.RuntimeLoader, ports packagesilenceApp.PaymentPorts, refunder refundchannelApp.Refunder) {
|
||
b.Setter.SetApprovalPort(approval)
|
||
b.Setter.SetPermissionChecker(perms)
|
||
b.Extensions.SetApprovalPort(approval)
|
||
b.Extensions.SetPermissionChecker(perms)
|
||
b.Extensions.SetOwnershipChecker(ownership)
|
||
b.Extensions.SetPayment(runtime, ports, refunder)
|
||
b.Policies.SetPermissionChecker(perms)
|
||
}
|