diff --git a/client/product.go b/client/product.go new file mode 100644 index 0000000..340ba21 --- /dev/null +++ b/client/product.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" +) + +// 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 +} 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 b6cecb1..56adb1b 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 b203e30..fcbea7d 100644 --- a/subject/config.go +++ b/subject/config.go @@ -20,7 +20,9 @@ var prefixes = struct { SupplierUser string SupplierRole string Campaign string - Affiliate string + Affiliate string + Product string + Queue string }{ Communication: "communication", Order: "order", @@ -41,5 +43,7 @@ var prefixes = struct { Staff: "staff", Segment: "segment", Campaign: "campaign", - Affiliate: "affiliate", + Affiliate: "affiliate", + Product: "product", + Queue: "queue", } diff --git a/subject/product.go b/subject/product.go new file mode 100644 index 0000000..3911ecb --- /dev/null +++ b/subject/product.go @@ -0,0 +1,14 @@ +package subject + +import "fmt" + +// getSegmentValue ... +func getProductValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.Product, val) +} + +var Product = struct { + ApplyRequest string +}{ + ApplyRequest: getProductValue("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"), +}