Integrate global care #2
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
package constant
 | 
			
		||||
 | 
			
		||||
const natsCommunicationPrefix = "communication_"
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	NatsCommunicationSubjectRequestHTTP  = natsCommunicationPrefix + "request_http"
 | 
			
		||||
	NatsCommunicationSubjectResponseHTTP = natsCommunicationPrefix + "response_http"
 | 
			
		||||
	NatsCommunicationSubjectWebhookTNC   = natsCommunicationPrefix + "webhook_tnc"
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										7
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										7
									
								
								go.mod
								
								
								
								
							| 
						 | 
				
			
			@ -4,7 +4,9 @@ go 1.17
 | 
			
		|||
 | 
			
		||||
require (
 | 
			
		||||
	github.com/Selly-Modules/logger v0.0.1
 | 
			
		||||
	github.com/Selly-Modules/natsio v1.0.1-0.20220818104747-572120c26a1d
 | 
			
		||||
	github.com/Selly-Modules/natsio v1.0.1
 | 
			
		||||
	github.com/nats-io/nats.go v1.13.0
 | 
			
		||||
	github.com/thoas/go-funk v0.9.1
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
| 
						 | 
				
			
			@ -14,14 +16,11 @@ require (
 | 
			
		|||
	github.com/elastic/go-windows v1.0.0 // indirect
 | 
			
		||||
	github.com/jcchavezs/porto v0.1.0 // indirect
 | 
			
		||||
	github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect
 | 
			
		||||
	github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
 | 
			
		||||
	github.com/nats-io/nats.go v1.13.0 // indirect
 | 
			
		||||
	github.com/nats-io/nkeys v0.3.0 // indirect
 | 
			
		||||
	github.com/nats-io/nuid v1.0.1 // indirect
 | 
			
		||||
	github.com/pkg/errors v0.8.1 // indirect
 | 
			
		||||
	github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0 // indirect
 | 
			
		||||
	github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect
 | 
			
		||||
	github.com/thoas/go-funk v0.9.1 // indirect
 | 
			
		||||
	go.elastic.co/apm v1.13.1 // indirect
 | 
			
		||||
	go.elastic.co/apm/module/apmzap v1.13.1 // indirect
 | 
			
		||||
	go.elastic.co/fastjson v1.1.0 // indirect
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										7
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										7
									
								
								go.sum
								
								
								
								
							| 
						 | 
				
			
			@ -1,9 +1,7 @@
 | 
			
		|||
github.com/Selly-Modules/logger v0.0.1 h1:dwLLtW53FfVBlklhdtFRB63eP0ofIh0IUQ/Gjgi0r5k=
 | 
			
		||||
github.com/Selly-Modules/logger v0.0.1/go.mod h1:RWhSQ3F01an8KD00VjzRBZOMcE5eV2Cy0/l4ZkeieyU=
 | 
			
		||||
github.com/Selly-Modules/natsio v1.0.0 h1:2GHm7upYn0CmqKPwfg2AXNmaAHuL7V9l36M4BgOmQ4M=
 | 
			
		||||
github.com/Selly-Modules/natsio v1.0.0/go.mod h1:NG55g9ip18nvN5tfP6PcSEKec10/lOeIOZC8HqBVNlQ=
 | 
			
		||||
github.com/Selly-Modules/natsio v1.0.1-0.20220818104747-572120c26a1d h1:NnRejDZPFqvtphr2rtfwi0rGx+oN8yD8RwttViVddjY=
 | 
			
		||||
github.com/Selly-Modules/natsio v1.0.1-0.20220818104747-572120c26a1d/go.mod h1:NG55g9ip18nvN5tfP6PcSEKec10/lOeIOZC8HqBVNlQ=
 | 
			
		||||
github.com/Selly-Modules/natsio v1.0.1 h1:0HoP00hP0Fz5h03p23Al3aARZwg+JSKpOrBo5Oh7pwY=
 | 
			
		||||
github.com/Selly-Modules/natsio v1.0.1/go.mod h1:NG55g9ip18nvN5tfP6PcSEKec10/lOeIOZC8HqBVNlQ=
 | 
			
		||||
github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
 | 
			
		||||
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
 | 
			
		||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +40,6 @@ github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8
 | 
			
		|||
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/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
 | 
			
		||||
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=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,10 +8,10 @@ import (
 | 
			
		|||
	"github.com/Selly-Modules/logger"
 | 
			
		||||
	"github.com/Selly-Modules/natsio"
 | 
			
		||||
	"github.com/Selly-Modules/natsio/model"
 | 
			
		||||
	"github.com/Selly-Modules/natsio/subject"
 | 
			
		||||
	"github.com/nats-io/nats.go"
 | 
			
		||||
	"github.com/thoas/go-funk"
 | 
			
		||||
 | 
			
		||||
	"github.com/Selly-Modules/3pl/constant"
 | 
			
		||||
	"github.com/Selly-Modules/3pl/util/base64"
 | 
			
		||||
	"github.com/Selly-Modules/3pl/util/pjson"
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +70,7 @@ func (c *Client) CreateOrder(p CreateOrderPayload) (*CommonResponse, error) {
 | 
			
		|||
			Data:   pjson.ToJSONString(body),
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	msg, err := c.requestNats(constant.NatsCommunicationSubjectRequestHTTP, natsPayload)
 | 
			
		||||
	msg, err := c.requestNats(subject.Communication.RequestHTTP, natsPayload)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logger.Error("globalcare.Client.CreateOrder", logger.LogData{
 | 
			
		||||
			"err":     err.Error(),
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ func (c *Client) GetOrder(orderCode string) (*CommonResponse, error) {
 | 
			
		|||
			Method: http.MethodGet,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	msg, err := c.requestNats(constant.NatsCommunicationSubjectRequestHTTP, natsPayload)
 | 
			
		||||
	msg, err := c.requestNats(subject.Communication.RequestHTTP, natsPayload)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logger.Error("globalcare.Client.GetOrder", logger.LogData{
 | 
			
		||||
			"err":     err.Error(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,10 @@ const (
 | 
			
		|||
	baseURLProd     = "https://ext-api.tnclog.vn"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	ErrCodeExistPartnerCode = "exist_partner_code"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	baseURLENVMapping = map[ENV]string{
 | 
			
		||||
		EnvProd:    baseURLProd,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
package tnc
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Error ...
 | 
			
		||||
type Error struct {
 | 
			
		||||
	Code    string `json:"code"`
 | 
			
		||||
	Message string `json:"errorMessage"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Error ...
 | 
			
		||||
func (e Error) Error() string {
 | 
			
		||||
	return fmt.Sprintf("tnc_err: code %s, messsage %s", e.Code, e.Message)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsErrExistPartnerCode ...
 | 
			
		||||
func IsErrExistPartnerCode(err error) bool {
 | 
			
		||||
	e, ok := err.(Error)
 | 
			
		||||
	return ok && e.Code == ErrCodeExistPartnerCode
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -5,13 +5,7 @@ type OutboundRequestRes struct {
 | 
			
		|||
	OrID          int    `json:"orId"`
 | 
			
		||||
	OrCode        string `json:"orCode"`
 | 
			
		||||
	PartnerORCode string `json:"partnerORCode"`
 | 
			
		||||
	Error         *ErrRes `json:"error"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ErrRes ...
 | 
			
		||||
type ErrRes struct {
 | 
			
		||||
	Code         string `json:"code"`
 | 
			
		||||
	ErrorMessage string `json:"errorMessage"`
 | 
			
		||||
	Error         *Error `json:"error"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type authRes struct {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,9 +9,9 @@ import (
 | 
			
		|||
	"github.com/Selly-Modules/logger"
 | 
			
		||||
	"github.com/Selly-Modules/natsio"
 | 
			
		||||
	"github.com/Selly-Modules/natsio/model"
 | 
			
		||||
	"github.com/Selly-Modules/natsio/subject"
 | 
			
		||||
	"github.com/nats-io/nats.go"
 | 
			
		||||
 | 
			
		||||
	"github.com/Selly-Modules/3pl/constant"
 | 
			
		||||
	"github.com/Selly-Modules/3pl/util/pjson"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ func (c *Client) CreateOutboundRequest(p OutboundRequestPayload) (*OutboundReque
 | 
			
		|||
	}
 | 
			
		||||
	var (
 | 
			
		||||
		r       model.CommunicationHttpResponse
 | 
			
		||||
		errRes  ErrRes
 | 
			
		||||
		errRes  Error
 | 
			
		||||
		dataRes []OutboundRequestRes
 | 
			
		||||
	)
 | 
			
		||||
	if err = pjson.Unmarshal(msg.Data, &r); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +80,7 @@ func (c *Client) CreateOutboundRequest(p OutboundRequestPayload) (*OutboundReque
 | 
			
		|||
		if err = r.ParseResponseData(&errRes); err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("tnc.Client.CreateOutboundRequest: parse_response_err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.CreateOutboundRequest: failed code %s, message %s", errRes.Code, errRes.ErrorMessage)
 | 
			
		||||
		return nil, errRes
 | 
			
		||||
	}
 | 
			
		||||
	if err = r.ParseResponseData(&dataRes); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.CreateOutboundRequest: parse_response_data: %v", err)
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ func (c *Client) CreateOutboundRequest(p OutboundRequestPayload) (*OutboundReque
 | 
			
		|||
	item := &dataRes[0]
 | 
			
		||||
	e := item.Error
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.CreateOutboundRequest: failed, code %s - message %s", e.Code, e.ErrorMessage)
 | 
			
		||||
		return nil, errRes
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return item, err
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +119,7 @@ func (c *Client) UpdateOutboundRequestLogisticInfo(p UpdateORLogisticInfoPayload
 | 
			
		|||
	}
 | 
			
		||||
	var (
 | 
			
		||||
		r      model.CommunicationHttpResponse
 | 
			
		||||
		errRes ErrRes
 | 
			
		||||
		errRes Error
 | 
			
		||||
	)
 | 
			
		||||
	if err = pjson.Unmarshal(msg.Data, &r); err != nil {
 | 
			
		||||
		return fmt.Errorf("tnc.Client.UpdateOutboundRequestLogisticInfo: parse_data %v", err)
 | 
			
		||||
| 
						 | 
				
			
			@ -132,7 +132,7 @@ func (c *Client) UpdateOutboundRequestLogisticInfo(p UpdateORLogisticInfoPayload
 | 
			
		|||
		if err = r.ParseResponseData(&errRes); err != nil {
 | 
			
		||||
			return fmt.Errorf("tnc.Client.UpdateOutboundRequestLogisticInfo: parse_response_err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		return fmt.Errorf("tnc.Client.UpdateOutboundRequestLogisticInfo: failed code %s, message %s", errRes.Code, errRes.ErrorMessage)
 | 
			
		||||
		return errRes
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,7 @@ func (c *Client) GetOutboundRequestByID(requestID int) (*OutboundRequestInfo, er
 | 
			
		|||
	}
 | 
			
		||||
	var (
 | 
			
		||||
		r               model.CommunicationHttpResponse
 | 
			
		||||
		errRes          ErrRes
 | 
			
		||||
		errRes          Error
 | 
			
		||||
		outboundRequest OutboundRequestInfo
 | 
			
		||||
	)
 | 
			
		||||
	if err = pjson.Unmarshal(msg.Data, &r); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +172,7 @@ func (c *Client) GetOutboundRequestByID(requestID int) (*OutboundRequestInfo, er
 | 
			
		|||
		if err = r.ParseResponseData(&errRes); err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("tnc.Client.GetOutboundRequestByID: parse_response_err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.GetOutboundRequestByID: failed code %s, message %s", errRes.Code, errRes.ErrorMessage)
 | 
			
		||||
		return nil, errRes
 | 
			
		||||
	}
 | 
			
		||||
	if err = r.ParseResponseData(&outboundRequest); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.GetOutboundRequestByID: parse_response_data: %v", err)
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +203,7 @@ func (c *Client) CancelOutboundRequest(requestID int, note string) error {
 | 
			
		|||
	}
 | 
			
		||||
	var (
 | 
			
		||||
		r      model.CommunicationHttpResponse
 | 
			
		||||
		errRes ErrRes
 | 
			
		||||
		errRes Error
 | 
			
		||||
	)
 | 
			
		||||
	if err = pjson.Unmarshal(msg.Data, &r); err != nil {
 | 
			
		||||
		return fmt.Errorf("tnc.Client.CancelOutboundRequest: parse_data %v", err)
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +216,7 @@ func (c *Client) CancelOutboundRequest(requestID int, note string) error {
 | 
			
		|||
		if err = r.ParseResponseData(&errRes); err != nil {
 | 
			
		||||
			return fmt.Errorf("tnc.Client.CancelOutboundRequest: parse_response_err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		return fmt.Errorf("tnc.Client.CancelOutboundRequest: failed code %s, message %s", errRes.Code, errRes.ErrorMessage)
 | 
			
		||||
		return errRes
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +252,7 @@ func (c *Client) auth() (*authRes, error) {
 | 
			
		|||
	}
 | 
			
		||||
	var (
 | 
			
		||||
		r      model.CommunicationHttpResponse
 | 
			
		||||
		errRes ErrRes
 | 
			
		||||
		errRes Error
 | 
			
		||||
		data   authRes
 | 
			
		||||
	)
 | 
			
		||||
	if err = pjson.Unmarshal(msg.Data, &r); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +266,7 @@ func (c *Client) auth() (*authRes, error) {
 | 
			
		|||
		if err = r.ParseResponseData(&errRes); err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("tnc.Client.auth: parse_response_err: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.auth: failed code %s, message %s", errRes.Code, errRes.ErrorMessage)
 | 
			
		||||
		return nil, errRes
 | 
			
		||||
	}
 | 
			
		||||
	if err = r.ParseResponseData(&data); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("tnc.Client.auth: parse_response_data: %v", err)
 | 
			
		||||
| 
						 | 
				
			
			@ -288,9 +288,8 @@ func (c *Client) getRequestHeader() map[string]string {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) requestHttpViaNats(data model.CommunicationRequestHttp) (*nats.Msg, error) {
 | 
			
		||||
	s := constant.NatsCommunicationSubjectRequestHTTP
 | 
			
		||||
	b := pjson.ToBytes(data)
 | 
			
		||||
	return c.natsClient.Request(s, b)
 | 
			
		||||
	return c.natsClient.Request(subject.Communication.RequestHTTP, b)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *Client) getBaseURL() string {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue