1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package inspection
- import (
- shipping "github.com/longjoy/micro-go-course/section19/cargo/model"
- )
- type EventHandler interface {
- CargoWasMisdirected(*shipping.Cargo)
- CargoHasArrived(*shipping.Cargo)
- }
- type Service interface {
-
-
-
- InspectCargo(id shipping.TrackingID)
- }
- type service struct {
- cargos shipping.CargoRepository
- events shipping.HandlingEventRepository
- handler EventHandler
- }
- func (s *service) InspectCargo(id shipping.TrackingID) {
- c, err := s.cargos.Find(id)
- if err != nil {
- return
- }
- h := s.events.QueryHandlingHistory(id)
- c.DeriveDeliveryProgress(h)
- if c.Delivery.IsMisdirected {
- s.handler.CargoWasMisdirected(c)
- }
- if c.Delivery.IsUnloadedAtDestination {
- s.handler.CargoHasArrived(c)
- }
- s.cargos.Store(c)
- }
- func NewService(cargos shipping.CargoRepository, events shipping.HandlingEventRepository, handler EventHandler) Service {
- return &service{cargos, events, handler}
- }
|