Merge pull request #38 from Selly-Modules/feature/seller-by-id
Feature/seller by
This commit is contained in:
		
						commit
						89f4e1a11d
					
				|  | @ -0,0 +1,88 @@ | ||||||
|  | package client | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"encoding/json" | ||||||
|  | 	"errors" | ||||||
|  | 
 | ||||||
|  | 	"github.com/Selly-Modules/natsio" | ||||||
|  | 	"github.com/Selly-Modules/natsio/model" | ||||||
|  | 	"github.com/Selly-Modules/natsio/subject" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Seller ...
 | ||||||
|  | type Seller struct{} | ||||||
|  | 
 | ||||||
|  | // GetSeller ...
 | ||||||
|  | func GetSeller() Seller { | ||||||
|  | 	return Seller{} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetSellerInfoByID ...
 | ||||||
|  | func (s Seller) GetSellerInfoByID(p model.GetSellerByIDRequest) (*model.ResponseSellerInfo, error) { | ||||||
|  | 	msg, err := natsio.GetServer().Request(subject.Seller.GetSellerInfoByID, toBytes(p)) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var r struct { | ||||||
|  | 		Data  *model.ResponseSellerInfo `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 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetListSellerInfoByIDs ...
 | ||||||
|  | func (s Seller) GetListSellerInfoByIDs(p model.GetListSellerByIDsRequest) (*model.ResponseListSellerInfo, error) { | ||||||
|  | 	msg, err := natsio.GetServer().Request(subject.Seller.GetListSellerInfoByIDs, toBytes(p)) | ||||||
|  | 
 | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var r struct { | ||||||
|  | 		Data  *model.ResponseListSellerInfo `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 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetListSellerInfoSupportChatByIDs ...
 | ||||||
|  | func (s Seller) GetListSellerInfoSupportChatByIDs(p model.GetListSellerSupportChatByIDsRequest) (*model.ResponseListSellerInfoSupportChat, error) { | ||||||
|  | 	msg, err := natsio.GetServer().Request(subject.SupportChat.GetListSellerInfoSupportChatByIDs, toBytes(p)) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var r struct { | ||||||
|  | 		Data  *model.ResponseListSellerInfoSupportChat `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,4 @@ | ||||||
|  | package natsio | ||||||
|  | 
 | ||||||
|  | // StreamNameSelly ...
 | ||||||
|  | const StreamNameSelly = "selly" | ||||||
|  | @ -0,0 +1,12 @@ | ||||||
|  | package jsconsumer | ||||||
|  | 
 | ||||||
|  | // Selly ...
 | ||||||
|  | var Selly = struct { | ||||||
|  | 	PushNotification               string | ||||||
|  | 	UpdateSellerAffiliateStatistic string | ||||||
|  | 	CheckAnDInsertCashflowBySeller string | ||||||
|  | }{ | ||||||
|  | 	PushNotification:               "PULL_PUSH_NOTIFICATION", | ||||||
|  | 	UpdateSellerAffiliateStatistic: "PULL_UPDATE_SELLER_AFFILIATE_STATISTIC", | ||||||
|  | 	CheckAnDInsertCashflowBySeller: "PULL_CHECK_AND_INSERT_CASHFLOW_BY_SELLER", | ||||||
|  | } | ||||||
|  | @ -0,0 +1,60 @@ | ||||||
|  | package jsmodel | ||||||
|  | 
 | ||||||
|  | // PushNotification ...
 | ||||||
|  | type PushNotification struct { | ||||||
|  | 	User        string              `json:"user"` | ||||||
|  | 	Type        string              `json:"type"` | ||||||
|  | 	TargetID    string              `json:"targetId"` | ||||||
|  | 	IsFromAdmin bool                `json:"isFromAdmin"` | ||||||
|  | 	Category    string              `json:"category"` | ||||||
|  | 	Options     NotificationOptions `json:"options"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // NotificationOptions ...
 | ||||||
|  | type NotificationOptions struct { | ||||||
|  | 	Title   string `json:"title"` | ||||||
|  | 	Content string `json:"content"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // PayloadUpdateSellerAffiliateStatistic ...
 | ||||||
|  | type PayloadUpdateSellerAffiliateStatistic struct { | ||||||
|  | 	SellerID  string                   `json:"sellerId"` | ||||||
|  | 	Statistic SellerAffiliateStatistic `json:"statistic"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // SellerAffiliateStatistic ...
 | ||||||
|  | type SellerAffiliateStatistic struct { | ||||||
|  | 	TransactionTotal              int     `json:"transactionTotal"` | ||||||
|  | 	TransactionCashback           int     `json:"transactionCashback"` | ||||||
|  | 	TransactionPending            int     `json:"transactionPending"` | ||||||
|  | 	TransactionApproved           int     `json:"transactionApproved"` | ||||||
|  | 	TransactionRejected           int     `json:"transactionRejected"` | ||||||
|  | 	CommissionTransactionTotal    float64 `json:"commissionTransactionTotal"` | ||||||
|  | 	CommissionTransactionCashback float64 `json:"commissionTransactionCashback"` | ||||||
|  | 	CommissionTransactionApproved float64 `json:"commissionTransactionApproved"` | ||||||
|  | 	CommissionTransactionPending  float64 `json:"commissionTransactionPending"` | ||||||
|  | 	CommissionTransactionRejected float64 `json:"commissionTransactionRejected"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // PayloadCashflowsBySeller ...
 | ||||||
|  | type PayloadCashflowsBySeller struct { | ||||||
|  | 	SellerID string           `json:"sellerId"` | ||||||
|  | 	List     []CashflowSeller `json:"list"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // CashflowSeller ...
 | ||||||
|  | type CashflowSeller struct { | ||||||
|  | 	Value      float64          `json:"value"` | ||||||
|  | 	Action     string           `json:"action"` | ||||||
|  | 	Category   string           `json:"category"` | ||||||
|  | 	TargetID   string           `json:"targetId"` | ||||||
|  | 	TargetType string           `json:"targetType"` | ||||||
|  | 	Options    *CashFlowOptions `json:"options"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // CashFlowOptions ...
 | ||||||
|  | type CashFlowOptions struct { | ||||||
|  | 	AffiliateTransactionCode string `json:"affiliateTransactionCode,omitempty"` | ||||||
|  | 	AffiliateCampaignID      string `json:"affiliateCampaignId,omitempty"` | ||||||
|  | 	AffiliateCampaignName    string `json:"affiliateCampaignName,omitempty"` | ||||||
|  | } | ||||||
|  | @ -0,0 +1,10 @@ | ||||||
|  | package jssubject | ||||||
|  | 
 | ||||||
|  | var root = "js" | ||||||
|  | 
 | ||||||
|  | // prefixes ...
 | ||||||
|  | var prefixes = struct { | ||||||
|  | 	Selly string | ||||||
|  | }{ | ||||||
|  | 	Selly: "selly", | ||||||
|  | } | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | package jssubject | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // getSellyValue ...
 | ||||||
|  | func getSellyValue(val string) string { | ||||||
|  | 	return fmt.Sprintf("%s.%s.%s", root, prefixes.Selly, val) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Selly ...
 | ||||||
|  | var Selly = struct { | ||||||
|  | 	PushNotification               string | ||||||
|  | 	UpdateSellerAffiliateStatistic string | ||||||
|  | 	CheckAnDInsertCashflowBySeller string | ||||||
|  | }{ | ||||||
|  | 	PushNotification:               getSellyValue("push_notifications"), | ||||||
|  | 	UpdateSellerAffiliateStatistic: getSellyValue("update_seller_affiliate_statistic"), | ||||||
|  | 	CheckAnDInsertCashflowBySeller: getSellyValue("check_and_insert_cashflow_statistic"), | ||||||
|  | } | ||||||
|  | @ -0,0 +1,18 @@ | ||||||
|  | package model | ||||||
|  | 
 | ||||||
|  | import "go.mongodb.org/mongo-driver/bson/primitive" | ||||||
|  | 
 | ||||||
|  | // GetSellerByIDRequest ...
 | ||||||
|  | type GetSellerByIDRequest struct { | ||||||
|  | 	SellerID primitive.ObjectID `json:"sellerId"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetListSellerByIDsRequest ...
 | ||||||
|  | type GetListSellerByIDsRequest struct { | ||||||
|  | 	SellerIDs []primitive.ObjectID `json:"sellerIds"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetListSellerSupportChatByIDsRequest ...
 | ||||||
|  | type GetListSellerSupportChatByIDsRequest struct { | ||||||
|  | 	SellerIDs []primitive.ObjectID `json:"sellerIds"` | ||||||
|  | } | ||||||
|  | @ -0,0 +1,81 @@ | ||||||
|  | package model | ||||||
|  | 
 | ||||||
|  | import "time" | ||||||
|  | 
 | ||||||
|  | // ResponseSellerInfo ...
 | ||||||
|  | type ResponseSellerInfo struct { | ||||||
|  | 	ID   string `json:"_id"` | ||||||
|  | 	Name string `json:"name"` | ||||||
|  | 	Code string `json:"code"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ResponseListSellerInfo ...
 | ||||||
|  | type ResponseListSellerInfo struct { | ||||||
|  | 	Sellers []ResponseSellerInfo `json:"sellers"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ResponseListSellerInfoSupportChat ...
 | ||||||
|  | type ResponseListSellerInfoSupportChat struct { | ||||||
|  | 	Sellers []ResponseSellerInfoSupportChat `json:"sellers"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ResponseSellerInfoSupportChat ...
 | ||||||
|  | type ResponseSellerInfoSupportChat struct { | ||||||
|  | 	ID           string               `json:"_id"` | ||||||
|  | 	Name         string               `json:"name"` | ||||||
|  | 	Code         string               `json:"code"` | ||||||
|  | 	Membership   SellerMembershipInfo `json:"membership"` | ||||||
|  | 	Info         SellerContactInfo    `json:"info"` | ||||||
|  | 	Team         *TeamInfo            `json:"team,omitempty"` | ||||||
|  | 	Statistic    SellerStatistic      `json:"statistic"` | ||||||
|  | 	TrackingTime *SellerTrackingTime  `json:"trackingTime"` | ||||||
|  | 	Invitee      *InviteeInfo         `json:"invitee"` | ||||||
|  | 	CreatedAt    time.Time            `json:"createdAt"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // SellerTrackingTime ...
 | ||||||
|  | type SellerTrackingTime struct { | ||||||
|  | 	FirstOrderDeliveredAt time.Time `json:"firstOrderDeliveredAt,omitempty"` | ||||||
|  | 	ThirdOrderDeliveredAt time.Time `json:"thirdOrderDeliveredAt,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // SellerStatistic ...
 | ||||||
|  | type SellerStatistic struct { | ||||||
|  | 	ThisMonthSale                float64 `bson:"thisMonthSale" json:"thisMonthSale"` | ||||||
|  | 	LastMonthSale                float64 `bson:"lastMonthSale" json:"lastMonthSale"` | ||||||
|  | 	Sale                         float64 `bson:"sale" json:"sale"` | ||||||
|  | 	TransactionTotal             int     `json:"transactionTotal"` | ||||||
|  | 	TransactionPaymentProcessing int     `json:"transactionPaymentProcessing"` | ||||||
|  | 	TransactionWaitingApprove    int     `json:"transactionWaitingApprove"` | ||||||
|  | 	TransactionPending           int     `json:"transactionPending"` | ||||||
|  | 	TransactionSuccess           int     `json:"transactionSuccess"` | ||||||
|  | 	TransactionRejected          int     `json:"transactionRejected"` | ||||||
|  | 	TransactionDelivering        int     `json:"transactionDelivering"` | ||||||
|  | 	TransactionDelivered         int     `json:"transactionDelivered"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // TeamInfo ...
 | ||||||
|  | type TeamInfo struct { | ||||||
|  | 	ID   string `json:"_id"` | ||||||
|  | 	Name string `json:"name"` | ||||||
|  | 	Role string `json:"role"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // InviteeInfo ...
 | ||||||
|  | type InviteeInfo struct { | ||||||
|  | 	ID   string `json:"_id"` | ||||||
|  | 	Name string `json:"name"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // SellerContactInfo ...
 | ||||||
|  | type SellerContactInfo struct { | ||||||
|  | 	City     int    `json:"cityCode"` | ||||||
|  | 	CityName string `json:"cityName"` | ||||||
|  | 	Gender   string `json:"gender"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // SellerMembershipInfo ...
 | ||||||
|  | type SellerMembershipInfo struct { | ||||||
|  | 	Level int    `json:"level"` | ||||||
|  | 	Name  string `json:"name"` | ||||||
|  | } | ||||||
|  | @ -7,6 +7,7 @@ var prefixes = struct { | ||||||
| 	Warehouse     string | 	Warehouse     string | ||||||
| 	Location      string | 	Location      string | ||||||
| 	Supplier      string | 	Supplier      string | ||||||
|  | 	Seller        string | ||||||
| }{ | }{ | ||||||
| 	Communication: "communication", | 	Communication: "communication", | ||||||
| 	Order:         "order", | 	Order:         "order", | ||||||
|  | @ -14,4 +15,5 @@ var prefixes = struct { | ||||||
| 	Warehouse:     "warehouse", | 	Warehouse:     "warehouse", | ||||||
| 	Location:      "location", | 	Location:      "location", | ||||||
| 	Supplier:      "supplier", | 	Supplier:      "supplier", | ||||||
|  | 	Seller:        "seller", | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | package subject | ||||||
|  | 
 | ||||||
|  | import "fmt" | ||||||
|  | 
 | ||||||
|  | func getSellerValue(val string) string { | ||||||
|  | 	return fmt.Sprintf("%s.%s", prefixes.Seller, val) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Seller ...
 | ||||||
|  | var Seller = struct { | ||||||
|  | 	GetSellerInfoByID      string | ||||||
|  | 	GetListSellerInfoByIDs string | ||||||
|  | }{ | ||||||
|  | 	GetSellerInfoByID:      getSellerValue("get_seller_info_by_id"), | ||||||
|  | 	GetListSellerInfoByIDs: getSellerValue("get_list_seller_info_by_ids"), | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // SupportChat ...
 | ||||||
|  | var SupportChat = struct { | ||||||
|  | 	GetListSellerInfoSupportChatByIDs string | ||||||
|  | }{ | ||||||
|  | 	GetListSellerInfoSupportChatByIDs: "SELLY_CHAT.REQUEST.SELLER_INFO", | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue