diff --git a/example/biz/sale/application/event_handler/order_created.go b/example/biz/sale/application/event_handler/order_created.go index 22a6b169f503675e8c38f7fed7bf4506e61d509c..eaef126b3b873615750aa08cd129590f0bd700ec 100644 --- a/example/biz/sale/application/event_handler/order_created.go +++ b/example/biz/sale/application/event_handler/order_created.go @@ -16,16 +16,24 @@ package event_handler import ( + "context" + ddd "github.com/bytedance/dddfirework" "github.com/bytedance/dddfirework/example/common/domain_event/sale" ) +// OnOrderCreatedHandler 实现了 ICommandMain çš„æŽ¥å£ type OnOrderCreatedHandler struct { - ddd.Command - event *sale.OrderCreatedEvent } +func (h *OnOrderCreatedHandler) Main(ctx context.Context, repo *ddd.Repository) (err error) { + // handle order created event here + logger.Info("order created") + + return nil +} + func NewOnOrderCreatedHandler(evt *sale.OrderCreatedEvent) *OnOrderCreatedHandler { return &OnOrderCreatedHandler{ event: evt, diff --git a/example/biz/sale/application/event_handler/sale_item_added.go b/example/biz/sale/application/event_handler/sale_item_added.go index 29bb2032b6df2e14624bbd077c93cf7bc769b99a..625a449f2967fd3604fa4d05fbf5790fb0b23516 100644 --- a/example/biz/sale/application/event_handler/sale_item_added.go +++ b/example/biz/sale/application/event_handler/sale_item_added.go @@ -16,18 +16,23 @@ package event_handler import ( + "context" + ddd "github.com/bytedance/dddfirework" "github.com/bytedance/dddfirework/example/common/domain_event/sale" + "github.com/bytedance/dddfirework/logger/stdr" ) -type OnSaleItemAddedHandler struct { - ddd.Command +var logger = stdr.NewStdr("handler") + +// OnSaleItemAddedHandler 是 MainFunc 类型 +func OnSaleItemAddedHandler(ctx context.Context, repo *ddd.Repository) (err error) { + // handle sale item added event here + logger.Info("sale item added") - event *sale.OrderSaleItemAddedEvent + return nil } -func NewOnSaleItemAddedHandler(evt *sale.OrderSaleItemAddedEvent) *OnSaleItemAddedHandler { - return &OnSaleItemAddedHandler{ - event: evt, - } +func NewOnSaleItemAddedHandler(evt *sale.OrderSaleItemAddedEvent) ddd.MainFunc { + return OnSaleItemAddedHandler } diff --git a/example/biz/sale/domain/order.go b/example/biz/sale/domain/order.go index d92512a340241881769facd01a8ce59e4cfd130d..5d812781bac3a07bbb80811f25dcec1c81978e76 100644 --- a/example/biz/sale/domain/order.go +++ b/example/biz/sale/domain/order.go @@ -28,7 +28,15 @@ type RuleEngine interface { Validate(order *Order, rule string) error } -var ruler RuleEngine +var ruler OrderRuleEngine + +type OrderRuleEngine struct { +} + +func (o *OrderRuleEngine) Validate(order *Order, rule string) error { + // validate here + return nil +} type UpdateOrderOpt struct { Remark *string @@ -147,6 +155,8 @@ func (o *Order) AddCoupon(couponID, rule string, discount int64) error { CouponID: couponID, Rule: rule, Discount: discount, + + order: o, }) if invalid := o.fixCoupons(); len(invalid) > 0 { return fmt.Errorf("coupon invalid") diff --git a/example/main.go b/example/main.go index adc491bac30067d04f706a027f9f7df2ec40ffaa..f8b8a3e60f48faaf1d2d275c841f55b762d674a3 100644 --- a/example/main.go +++ b/example/main.go @@ -36,6 +36,11 @@ import ( ) func initPO(db *gorm.DB) { + // å¯é€‰ï¼Œå¦‚果使用 mysql 实现 eventbus,需è¦æå‰å»ºè¡¨ã€‚ + if err := db.AutoMigrate(&db_eventbus.EventPO{}, &db_eventbus.Transaction{}, &db_eventbus.ServicePO{}); err != nil { + panic(err) + } + if err := db.AutoMigrate(&po.OrderPO{}, &po.CouponPO{}, &po.SaleItemPO{}); err != nil { panic(err) }