diff --git a/client/product.go b/client/product.go new file mode 100644 index 0000000..a581b9d --- /dev/null +++ b/client/product.go @@ -0,0 +1,52 @@ +package client + +import ( + "encoding/json" + "errors" + + "git.selly.red/Selly-Modules/natsio" + "git.selly.red/Selly-Modules/natsio/model" + "git.selly.red/Selly-Modules/natsio/subject" +) + +// Product ... +type Product struct{} + +// GetProduct ... +func GetProduct() Product { + return Product{} +} + +func (c Product) ApplyRequest(p model.ProductApplyRequestPayload) error { + msg, err := natsio.GetServer().Request(subject.Product.ApplyRequest, toBytes(p)) + if err != nil { + return err + } + var r struct { + Error string `json:"error"` + } + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + return nil +} + +func (c Product) ProcessApplyRequest(p model.ProductApplyRequestPayload) error { + msg, err := natsio.GetServer().Request(subject.Product.ProcessApplyRequest, toBytes(p)) + if err != nil { + return err + } + var r struct { + Error string `json:"error"` + } + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + return nil +} diff --git a/client/queue.go b/client/queue.go new file mode 100644 index 0000000..8cb048d --- /dev/null +++ b/client/queue.go @@ -0,0 +1,35 @@ +package client + +import ( + "encoding/json" + "errors" + + "git.selly.red/Selly-Modules/natsio" + "git.selly.red/Selly-Modules/natsio/model" + "git.selly.red/Selly-Modules/natsio/subject" +) + +// Queue ... +type Queue struct{} + +// GetQueue ... +func GetQueue() Queue { + return Queue{} +} + +func (c Queue) ScheduleTask(p model.QueueScheduleTaskRequest) error { + msg, err := natsio.GetServer().Request(subject.Queue.ScheduleTask, toBytes(p)) + if err != nil { + return err + } + var r struct { + Error string `json:"error"` + } + 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/product_request.go b/model/product_request.go new file mode 100644 index 0000000..1adbec5 --- /dev/null +++ b/model/product_request.go @@ -0,0 +1,5 @@ +package model + +type ProductApplyRequestPayload struct { + RequestID string `json:"requestId"` +} diff --git a/model/queue_request.go b/model/queue_request.go new file mode 100644 index 0000000..87b7410 --- /dev/null +++ b/model/queue_request.go @@ -0,0 +1,8 @@ +package model + +type QueueScheduleTaskRequest struct { + ID string `json:"id"` + NatsSubject string `json:"natsSubject"` + Data string `json:"data"` + StartAt int64 `json:"startAt"` // unix +} diff --git a/model/warehouse_request.go b/model/warehouse_request.go index e813d99..c1dac9c 100644 --- a/model/warehouse_request.go +++ b/model/warehouse_request.go @@ -97,10 +97,11 @@ type SupplierIsClosed struct { // GetWarehousesRequest ... type GetWarehousesRequest struct { - Keyword string `json:"keyword"` - Status string `json:"status"` - Supplier string `json:"supplier"` - BusinessType string `json:"businessType"` + Keyword string `json:"keyword"` + Status string `json:"status"` + Supplier string `json:"supplier"` + BusinessType string `json:"businessType"` + IDs []string `json:"ids"` Page int64 `json:"page"` Limit int64 `json:"limit"` diff --git a/subject/config.go b/subject/config.go index 1954121..0ba5952 100644 --- a/subject/config.go +++ b/subject/config.go @@ -14,6 +14,8 @@ var prefixes = struct { SocialPost string Staff string Segment string + Product string + Queue string Campaign string Affiliate string }{ @@ -30,6 +32,8 @@ var prefixes = struct { SocialPost: "social_post", Staff: "staff", Segment: "segment", + Product: "product", + Queue: "queue", Campaign: "campaign", Affiliate: "affiliate", } diff --git a/subject/product.go b/subject/product.go new file mode 100644 index 0000000..348aca9 --- /dev/null +++ b/subject/product.go @@ -0,0 +1,16 @@ +package subject + +import "fmt" + +// getSegmentValue ... +func getProductValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.Product, val) +} + +var Product = struct { + ApplyRequest string + ProcessApplyRequest string +}{ + ApplyRequest: getProductValue("apply_request"), + ProcessApplyRequest: getProductValue("process_apply_request"), +} diff --git a/subject/queue.go b/subject/queue.go new file mode 100644 index 0000000..87a84ef --- /dev/null +++ b/subject/queue.go @@ -0,0 +1,13 @@ +package subject + +import "fmt" + +func getQueueValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.Queue, val) +} + +var Queue = struct { + ScheduleTask string +}{ + ScheduleTask: getQueueValue("schedule_task"), +}