diff --git a/client/order.go b/client/order.go index adae205..949bb51 100644 --- a/client/order.go +++ b/client/order.go @@ -18,7 +18,7 @@ func GetOrder() Order { } // UpdateORStatus ... -func (w Order) UpdateORStatus(p model.OrderUpdateORStatus) error { +func (o Order) UpdateORStatus(p model.OrderUpdateORStatus) error { msg, err := natsio.GetServer().Request(subject.OrderUpdateORStatus, toBytes(p)) if err != nil { return err @@ -34,3 +34,19 @@ func (w Order) UpdateORStatus(p model.OrderUpdateORStatus) error { } return nil } + +// CancelDelivery ... +func (o Order) CancelDelivery(p model.OrderCancelDelivery) error { + msg, err := natsio.GetServer().Request(subject.OrderUpdateORStatus, toBytes(p)) + if err != nil { + return err + } + var r model.CommonResponseData + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + return nil +} diff --git a/model/common_response.go b/model/common_response.go new file mode 100644 index 0000000..2d2aba8 --- /dev/null +++ b/model/common_response.go @@ -0,0 +1,18 @@ +package model + +import "encoding/json" + +// CommonResponseData ... +type CommonResponseData struct { + Data interface{} `json:"data"` + Error string `json:"error"` +} + +// ParseData ... +func (c CommonResponseData) ParseData(resultPointer interface{}) error { + b, err := json.Marshal(c.Data) + if err != nil { + return err + } + return json.Unmarshal(b, resultPointer) +} diff --git a/model/order_request.go b/model/order_request.go index e664b1a..da9d4fe 100644 --- a/model/order_request.go +++ b/model/order_request.go @@ -7,3 +7,8 @@ type OrderUpdateORStatus struct { Status string `json:"status"` Reason string `json:"reason"` } + +// OrderCancelDelivery ... +type OrderCancelDelivery struct { + OrderID string `json:"orderId"` +} diff --git a/subject/order.go b/subject/order.go index f13be90..e3c6f32 100644 --- a/subject/order.go +++ b/subject/order.go @@ -4,4 +4,5 @@ const orderPrefix = "order_" const ( OrderUpdateORStatus = orderPrefix + "update_outbound_request_status" + OrderCancelDelivery = orderPrefix + "cancel_delivery" )