Develop #22
|
@ -0,0 +1,27 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
|
"github.com/Selly-Modules/natsio"
|
||||||
|
"github.com/Selly-Modules/natsio/model"
|
||||||
|
"github.com/Selly-Modules/natsio/subject"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Communication ...
|
||||||
|
type Communication struct{}
|
||||||
|
|
||||||
|
// GetCommunication ...
|
||||||
|
func GetCommunication() Communication {
|
||||||
|
return Communication{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RequestHttp ...
|
||||||
|
func (c Communication) RequestHttp(p model.CommunicationRequestHttp) (r *model.CommunicationHttpResponse, err error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Communication.RequestHTTP, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(msg.Data, &r)
|
||||||
|
return r, err
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/Selly-Modules/natsio"
|
||||||
|
"github.com/Selly-Modules/natsio/model"
|
||||||
|
"github.com/Selly-Modules/natsio/subject"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Location ...
|
||||||
|
type Location struct{}
|
||||||
|
|
||||||
|
// GetLocation ...
|
||||||
|
func GetLocation() Location {
|
||||||
|
return Location{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l Location) GetLocationByCode(payload model.LocationRequestPayload) (*model.ResponseLocationAddress, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Location.GetLocationByCode, toBytes(payload))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseLocationAddress `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/Selly-Modules/natsio"
|
||||||
|
"github.com/Selly-Modules/natsio/model"
|
||||||
|
"github.com/Selly-Modules/natsio/subject"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Order ...
|
||||||
|
type Order struct{}
|
||||||
|
|
||||||
|
// GetOrder ...
|
||||||
|
func GetOrder() Order {
|
||||||
|
return Order{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateORStatus ...
|
||||||
|
func (o Order) UpdateORStatus(p model.OrderUpdateORStatus) error {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Order.UpdateORStatus, 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelDelivery ...
|
||||||
|
func (o Order) CancelDelivery(p model.OrderCancelDelivery) error {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Order.CancelDelivery, 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
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/Selly-Modules/natsio"
|
||||||
|
"github.com/Selly-Modules/natsio/model"
|
||||||
|
"github.com/Selly-Modules/natsio/subject"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Supplier ...
|
||||||
|
type Supplier struct{}
|
||||||
|
|
||||||
|
// GetSupplier ...
|
||||||
|
func GetSupplier() Supplier {
|
||||||
|
return Supplier{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s Supplier) GetListSupplierInfo(p model.GetSupplierRequest) ([]*model.ResponseSupplierInfo, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Supplier.GetListSupplierInfo, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data []*model.ResponseSupplierInfo `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s Supplier) GetSupplierContractBySupplierID(p model.GetSupplierContractRequest) (*model.ResponseSupplierContract, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Supplier.GetSupplierContractBySupplierID, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseSupplierContract `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func toBytes(data interface{}) []byte {
|
||||||
|
b, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("natsio/client.toBytes: marshal_json %v", err)
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
// bsonToBytes ...
|
||||||
|
func bsonToBytes(data interface{}) []byte {
|
||||||
|
b, _ := bson.Marshal(data)
|
||||||
|
return b
|
||||||
|
}
|
|
@ -0,0 +1,168 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/Selly-Modules/natsio"
|
||||||
|
"github.com/Selly-Modules/natsio/model"
|
||||||
|
"github.com/Selly-Modules/natsio/subject"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Warehouse ...
|
||||||
|
type Warehouse struct{}
|
||||||
|
|
||||||
|
// GetWarehouse ...
|
||||||
|
func GetWarehouse() Warehouse {
|
||||||
|
return Warehouse{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DistinctWithField ...
|
||||||
|
func (w Warehouse) DistinctWithField(p model.FindWithCondition) ([]interface{}, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.Distinct, bsonToBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data []interface{} `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err = json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindOneByCondition ...
|
||||||
|
func (w Warehouse) FindOneByCondition(p model.FindWithCondition) (*model.WarehouseNatsResponse, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.FindOne, bsonToBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data *model.WarehouseNatsResponse `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err = json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CountByCondition ...
|
||||||
|
func (w Warehouse) CountByCondition(p model.FindWithCondition) (int64, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.Count, bsonToBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data int64 `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err = json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return 0, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindByCondition ...
|
||||||
|
func (w Warehouse) FindByCondition(p model.FindWithCondition) ([]*model.WarehouseNatsResponse, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.FindByCondition, bsonToBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data []*model.WarehouseNatsResponse `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err = json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOutboundRequest ...
|
||||||
|
func (w Warehouse) CreateOutboundRequest(p model.OutboundRequestPayload) (*model.OutboundRequestResponse, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.CreateOutboundRequest, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data *model.OutboundRequestResponse `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err = json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateOutboundRequestLogisticInfo ...
|
||||||
|
func (w Warehouse) UpdateOutboundRequestLogisticInfo(p model.UpdateOutboundRequestLogisticInfoPayload) error {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.UpdateOutboundRequestLogistic, 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelOutboundRequest ...
|
||||||
|
func (w Warehouse) CancelOutboundRequest(p model.CancelOutboundRequest) error {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.CancelOutboundRequest, 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetConfigByWarehouseID ...
|
||||||
|
func (w Warehouse) GetConfigByWarehouseID(warehouseID string) (*model.WarehouseConfiguration, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.GetConfiguration, toBytes(warehouseID))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data *model.WarehouseConfiguration `json:"data"`
|
||||||
|
Error string `json:"error"`
|
||||||
|
}
|
||||||
|
if err = json.Unmarshal(msg.Data, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if r.Error != "" {
|
||||||
|
return nil, errors.New(r.Error)
|
||||||
|
}
|
||||||
|
return r.Data, nil
|
||||||
|
}
|
1
go.mod
1
go.mod
|
@ -8,5 +8,6 @@ require (
|
||||||
github.com/nats-io/nats-server/v2 v2.6.1 // indirect
|
github.com/nats-io/nats-server/v2 v2.6.1 // indirect
|
||||||
github.com/nats-io/nats.go v1.13.0
|
github.com/nats-io/nats.go v1.13.0
|
||||||
github.com/thoas/go-funk v0.9.1
|
github.com/thoas/go-funk v0.9.1
|
||||||
|
go.mongodb.org/mongo-driver v1.10.1
|
||||||
google.golang.org/protobuf v1.27.1 // indirect
|
google.golang.org/protobuf v1.27.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
37
go.sum
37
go.sum
|
@ -1,5 +1,6 @@
|
||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
|
@ -9,17 +10,25 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
|
||||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/klauspost/compress v1.13.4 h1:0zhec2I8zGnjWcKyLl6i3gPqKANCCn5e9xmviEEeX6s=
|
|
||||||
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
|
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
|
||||||
|
github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
|
||||||
|
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
|
github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
|
||||||
github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
|
github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
|
||||||
github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0=
|
github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0=
|
||||||
github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
|
github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
|
||||||
|
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||||
github.com/nats-io/jwt v1.2.2 h1:w3GMTO969dFg+UOKTmmyuu7IGdusK+7Ytlt//OYH/uU=
|
github.com/nats-io/jwt v1.2.2 h1:w3GMTO969dFg+UOKTmmyuu7IGdusK+7Ytlt//OYH/uU=
|
||||||
github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q=
|
github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q=
|
||||||
github.com/nats-io/jwt/v2 v2.0.3 h1:i/O6cmIsjpcQyWDYNcq2JyZ3/VTF8SJ4JWluI5OhpvI=
|
github.com/nats-io/jwt/v2 v2.0.3 h1:i/O6cmIsjpcQyWDYNcq2JyZ3/VTF8SJ4JWluI5OhpvI=
|
||||||
|
@ -34,29 +43,44 @@ github.com/nats-io/nkeys v0.3.0 h1:cgM5tL53EvYRU+2YLXIK0G2mJtK12Ft9oeooSZMA2G8=
|
||||||
github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
|
github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
|
||||||
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
|
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
|
||||||
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
|
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
|
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
|
github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M=
|
||||||
github.com/thoas/go-funk v0.9.1/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
|
github.com/thoas/go-funk v0.9.1/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
|
||||||
|
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||||
|
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||||
|
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
|
||||||
|
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
|
||||||
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||||
|
go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4=
|
||||||
|
go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e h1:gsTQYXdTw2Gq7RBsWvlQ91b+aEQ6bXFUngBGuR8sPpI=
|
|
||||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
|
||||||
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
|
||||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI=
|
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 h1:NusfzzA6yGQ+ua51ck7E3omNUX/JuqbFSaRGqU8CcLI=
|
||||||
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
@ -72,5 +96,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
|
||||||
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
||||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
package natsio
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/nats-io/nats.go"
|
||||||
|
)
|
||||||
|
|
||||||
|
// JSONEncoder ...
|
||||||
|
type JSONEncoder struct {
|
||||||
|
encConn *nats.EncodedConn
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subscribe ...
|
||||||
|
func (e JSONEncoder) Subscribe(subject string, cb nats.Handler) (*nats.Subscription, error) {
|
||||||
|
sub, err := e.encConn.Subscribe(subject, cb)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("natsio.JSONEncoder.Subscribe err: %v\n", err)
|
||||||
|
} else {
|
||||||
|
log.Printf("natsio.JSONEncoder - subscribed to subject %s successfully\n", subject)
|
||||||
|
}
|
||||||
|
return sub, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Publish ...
|
||||||
|
func (e JSONEncoder) Publish(reply string, data interface{}) error {
|
||||||
|
return e.encConn.Publish(reply, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request ...
|
||||||
|
func (e JSONEncoder) Request(subject string, data interface{}, res interface{}) error {
|
||||||
|
return e.encConn.Request(subject, data, res, requestTimeout)
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
|
||||||
|
type FindWithCondition struct {
|
||||||
|
Conditions interface{} `json:"conditions"`
|
||||||
|
Opts []*options.FindOptions `json:"opts"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FindOneCondition struct {
|
||||||
|
Conditions interface{} `json:"conditions"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DistinctWithField struct {
|
||||||
|
Conditions interface{} `json:"conditions"`
|
||||||
|
Filed string `json:"filed"`
|
||||||
|
}
|
|
@ -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)
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
// CommunicationRequestHttp ...
|
||||||
|
type CommunicationRequestHttp struct {
|
||||||
|
ResponseImmediately bool `json:"responseImmediately"`
|
||||||
|
Authentication string `json:"authentication"`
|
||||||
|
Payload HttpRequest `json:"payload"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HttpRequest ...
|
||||||
|
type HttpRequest struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Data string `json:"data"`
|
||||||
|
Header map[string]string `json:"header"`
|
||||||
|
Query map[string]string `json:"query"`
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "encoding/json"
|
||||||
|
|
||||||
|
// CommunicationHttpResponse ...
|
||||||
|
type CommunicationHttpResponse struct {
|
||||||
|
Response *HttpResponse `json:"response"`
|
||||||
|
Error bool `json:"error"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
RequestID string `json:"requestId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseResponseData ...
|
||||||
|
func (r *CommunicationHttpResponse) ParseResponseData(result interface{}) error {
|
||||||
|
if r.Response == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return json.Unmarshal([]byte(r.Response.Body), result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// HttpResponse ...
|
||||||
|
type HttpResponse struct {
|
||||||
|
Body string `json:"body"`
|
||||||
|
StatusCode int `json:"statusCode"`
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
// LocationRequestPayload ...
|
||||||
|
type LocationRequestPayload struct {
|
||||||
|
Province int `json:"province"`
|
||||||
|
District int `json:"district"`
|
||||||
|
Ward int `json:"ward"`
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
type ResponseLocationAddress struct {
|
||||||
|
Province LocationProvince `json:"province"`
|
||||||
|
District LocationDistrict `json:"district"`
|
||||||
|
Ward LocationWard `json:"ward"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// LocationProvince ...
|
||||||
|
type LocationProvince struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code int `json:"code"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// LocationDistrict ...
|
||||||
|
type LocationDistrict struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code int `json:"code"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// LocationWard ...
|
||||||
|
type LocationWard struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code int `json:"code"`
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
// OrderUpdateORStatus ...
|
||||||
|
type OrderUpdateORStatus struct {
|
||||||
|
OrderCode string `json:"orderCode"`
|
||||||
|
ORCode string `json:"orCode"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Reason string `json:"reason"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderCancelDelivery ...
|
||||||
|
type OrderCancelDelivery struct {
|
||||||
|
OrderID string `json:"orderId"`
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetSupplierRequest ...
|
||||||
|
type GetSupplierRequest struct {
|
||||||
|
ListID []primitive.ObjectID `json:"listID"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetSupplierContractRequest struct {
|
||||||
|
SupplierID primitive.ObjectID `json:"supplierID"`
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
// ResponseSupplierInfo ...
|
||||||
|
type ResponseSupplierInfo struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseSupplierContract ...
|
||||||
|
type ResponseSupplierContract struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Supplier string `json:"supplier"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
// OutboundRequestPayload ...
|
||||||
|
type OutboundRequestPayload struct {
|
||||||
|
OrderID string `json:"orderId"`
|
||||||
|
OrderCode string `json:"orderCode"`
|
||||||
|
TrackingCode string `json:"trackingCode"`
|
||||||
|
WarehouseID string `json:"warehouseId"`
|
||||||
|
SupplierID string `json:"supplierId"`
|
||||||
|
Note string `json:"note"`
|
||||||
|
CODAmount float64 `json:"codAmount"`
|
||||||
|
TPLCode string `json:"tplCode"`
|
||||||
|
Customer CustomerInfo `json:"customer"`
|
||||||
|
Items []OutboundRequestItem `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// OutboundRequestItem ...
|
||||||
|
type OutboundRequestItem struct {
|
||||||
|
SupplierSKU string `json:"supplierSKU"`
|
||||||
|
Quantity int64 `json:"quantity"`
|
||||||
|
UnitCode string `json:"unitCode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CustomerInfo ...
|
||||||
|
type CustomerInfo struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
PhoneNumber string `json:"phoneNumber"`
|
||||||
|
Address AddressDetail `json:"address"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddressDetail ...
|
||||||
|
type AddressDetail struct {
|
||||||
|
Address string `json:"address"`
|
||||||
|
FullAddress string `json:"fullAddress"`
|
||||||
|
ProvinceCode int `json:"provinceCode"`
|
||||||
|
DistrictCode int `json:"districtCode"`
|
||||||
|
WardCode int `json:"wardCode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateOutboundRequestLogisticInfoPayload ...
|
||||||
|
type UpdateOutboundRequestLogisticInfoPayload struct {
|
||||||
|
ShippingLabel string `json:"shippingLabel"`
|
||||||
|
TrackingCode string `json:"trackingCode"`
|
||||||
|
ORCode string `json:"orCode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelOutboundRequest ...
|
||||||
|
type CancelOutboundRequest struct {
|
||||||
|
ORCode string `json:"orCode"`
|
||||||
|
Note string `json:"note"`
|
||||||
|
}
|
|
@ -0,0 +1,107 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// OutboundRequestResponse ...
|
||||||
|
type OutboundRequestResponse struct {
|
||||||
|
// System code
|
||||||
|
OrderCode string `json:"orderCode"`
|
||||||
|
TrackingCode string `json:"trackingCode"`
|
||||||
|
ID string `json:"id"` // OR id
|
||||||
|
|
||||||
|
// Partner response
|
||||||
|
ORCode string `json:"orCode"`
|
||||||
|
RequestID string `json:"requestId"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Reason string `json:"reason"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehouseConfiguration ...
|
||||||
|
type WarehouseConfiguration struct {
|
||||||
|
Warehouse string `json:"warehouse"`
|
||||||
|
DoesSupportSellyExpress bool `json:"doesSupportSellyExpress"`
|
||||||
|
Supplier WarehouseSupplier `json:"supplier"`
|
||||||
|
Order WarehouseOrder `json:"order"`
|
||||||
|
Partner WarehousePartner `json:"partner"`
|
||||||
|
Delivery WarehouseDelivery `json:"delivery"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehouseSupplier ...
|
||||||
|
type WarehouseSupplier struct {
|
||||||
|
CanAutoSendMail bool `json:"canAutoSendMail"`
|
||||||
|
InvoiceDeliveryMethod string `json:"invoiceDeliveryMethod"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehouseOrder ...
|
||||||
|
type WarehouseOrder struct {
|
||||||
|
MinimumValue float64 `json:"minimumValue"`
|
||||||
|
PaymentMethod WarehousePaymentMethod `json:"paymentMethod"`
|
||||||
|
IsLimitNumberOfPurchases bool `json:"isLimitNumberOfPurchases"`
|
||||||
|
LimitNumberOfPurchases int64 `json:"limitNumberOfPurchases"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehousePaymentMethod ...
|
||||||
|
type WarehousePaymentMethod struct {
|
||||||
|
Cod bool `json:"cod"`
|
||||||
|
BankTransfer bool `json:"bankTransfer"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehouseDelivery ...
|
||||||
|
type WarehouseDelivery struct {
|
||||||
|
DeliveryMethods []string `json:"deliveryMethods"`
|
||||||
|
PriorityServiceCodes []string `json:"priorityServiceCodes"`
|
||||||
|
EnabledSources []int `json:"enabledSources"`
|
||||||
|
Types []string `json:"types"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehousePartner ...
|
||||||
|
type WarehousePartner struct {
|
||||||
|
IdentityCode string `json:"identityCode"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Enabled bool `json:"enabled"`
|
||||||
|
Authentication string `json:"authentication"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseWarehouseContact ...
|
||||||
|
type ResponseWarehouseContact struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Phone string `json:"phone"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseWarehouseLocation ...
|
||||||
|
type ResponseWarehouseLocation struct {
|
||||||
|
Province CommonLocation `json:"province"`
|
||||||
|
District CommonLocation `json:"district"`
|
||||||
|
Ward CommonLocation `json:"ward"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
LocationCoordinates ResponseLatLng `json:"locationCoordinates"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CommonLocation struct {
|
||||||
|
ID string `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code int `json:"code"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseLatLng ...
|
||||||
|
type ResponseLatLng struct {
|
||||||
|
Latitude float64 `json:"latitude"`
|
||||||
|
Longitude float64 `json:"longitude"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehouseNatsResponse ...
|
||||||
|
type WarehouseNatsResponse struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
SearchString string `json:"searchString"`
|
||||||
|
Slug string `json:"slug"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Supplier WarehouseSupplier `json:"supplier"`
|
||||||
|
Contact ResponseWarehouseContact `json:"contact"`
|
||||||
|
Location ResponseWarehouseLocation `json:"location"`
|
||||||
|
Configurations WarehouseConfiguration `json:"configurations"`
|
||||||
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
|
}
|
|
@ -3,7 +3,6 @@ package natsio
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/logrusorgru/aurora"
|
|
||||||
"github.com/nats-io/nats.go"
|
"github.com/nats-io/nats.go"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -49,7 +48,7 @@ func Connect(cfg Config) error {
|
||||||
return errors.New(msg)
|
return errors.New(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(aurora.Green("*** CONNECTED TO NATS: " + cfg.URL))
|
fmt.Printf("⚡️[natsio]: connected to %s \n", cfg.URL)
|
||||||
|
|
||||||
// Set client
|
// Set client
|
||||||
natsServer.instance = nc
|
natsServer.instance = nc
|
||||||
|
|
|
@ -3,6 +3,7 @@ package natsio
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/nats-io/nats.go"
|
"github.com/nats-io/nats.go"
|
||||||
|
@ -34,3 +35,13 @@ func (sv Server) Subscribe(subject string, cb nats.MsgHandler) (*nats.Subscripti
|
||||||
}
|
}
|
||||||
return sub, nil
|
return sub, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewJSONEncodedConn ...
|
||||||
|
func (sv Server) NewJSONEncodedConn() (*JSONEncoder, error) {
|
||||||
|
enc, err := nats.NewEncodedConn(sv.instance, nats.JSON_ENCODER)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("natsio.NewJSONEncodedConn: err %v\n", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &JSONEncoder{encConn: enc}, nil
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func getCommunicationValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Communication, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
var Communication = struct {
|
||||||
|
RequestHTTP string
|
||||||
|
ResponseHTTP string
|
||||||
|
WebhookTNC string
|
||||||
|
WebhookGlobalCare string
|
||||||
|
}{
|
||||||
|
RequestHTTP: getCommunicationValue("request_http"),
|
||||||
|
ResponseHTTP: getCommunicationValue("response_http"),
|
||||||
|
WebhookTNC: getCommunicationValue("webhook_tnc"),
|
||||||
|
WebhookGlobalCare: getCommunicationValue("webhook_global_care"),
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
var prefixes = struct {
|
||||||
|
Communication string
|
||||||
|
Order string
|
||||||
|
Warehouse string
|
||||||
|
Location string
|
||||||
|
Supplier string
|
||||||
|
}{
|
||||||
|
Communication: "communication",
|
||||||
|
Order: "order",
|
||||||
|
Warehouse: "warehouse",
|
||||||
|
Location: "location",
|
||||||
|
Supplier: "supplier",
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func getLocationValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Location, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
var Location = struct {
|
||||||
|
GetLocationByCode string
|
||||||
|
}{
|
||||||
|
GetLocationByCode: getLocationValue("get_location_warehouse"),
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func getOrderValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Order, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
var Order = struct {
|
||||||
|
UpdateORStatus string
|
||||||
|
CancelDelivery string
|
||||||
|
WebhookTNC string
|
||||||
|
WebhookGlobalCare string
|
||||||
|
}{
|
||||||
|
UpdateORStatus: getOrderValue("update_outbound_request_status"),
|
||||||
|
CancelDelivery: getOrderValue("cancel_delivery"),
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func getSupplierValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Supplier, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
var Supplier = struct {
|
||||||
|
GetListSupplierInfo string
|
||||||
|
GetSupplierContractBySupplierID string
|
||||||
|
}{
|
||||||
|
GetListSupplierInfo: getSupplierValue("get_list_supplier_info"),
|
||||||
|
GetSupplierContractBySupplierID: getSupplierValue("get_supplier_contract_by_supplier_id"),
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func getWarehouseValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Warehouse, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
var Warehouse = struct {
|
||||||
|
CreateOutboundRequest string
|
||||||
|
UpdateOutboundRequestLogistic string
|
||||||
|
CancelOutboundRequest string
|
||||||
|
GetConfiguration string
|
||||||
|
FindOne string
|
||||||
|
FindByCondition string
|
||||||
|
Distinct string
|
||||||
|
Count string
|
||||||
|
}{
|
||||||
|
CreateOutboundRequest: getWarehouseValue("create_outbound_request"),
|
||||||
|
UpdateOutboundRequestLogistic: getWarehouseValue("update_outbound_request_logistic_info"),
|
||||||
|
CancelOutboundRequest: getWarehouseValue("cancel_outbound_request"),
|
||||||
|
GetConfiguration: getWarehouseValue("get_configuration"),
|
||||||
|
FindOne: getWarehouseValue("find_one"),
|
||||||
|
FindByCondition: getWarehouseValue("find_all_by_condition"),
|
||||||
|
Distinct: getWarehouseValue("distinct"),
|
||||||
|
Count: getWarehouseValue("count"),
|
||||||
|
}
|
Loading…
Reference in New Issue