export-data-affiliate-transaction-merge-dev #96
			
				
			
		
		
		
	|  | @ -0,0 +1,36 @@ | ||||||
|  | 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" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Affiliate ...
 | ||||||
|  | type Affiliate struct{} | ||||||
|  | 
 | ||||||
|  | // GetAffiliate ...
 | ||||||
|  | func GetAffiliate() Affiliate { | ||||||
|  | 	return Affiliate{} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetTransactions ...
 | ||||||
|  | func (w Affiliate) GetTransactions(p model.GetTransactionsRequest) (*model.GetTransactionsResponse, error) { | ||||||
|  | 	msg, err := natsio.GetServer().Request(subject.Affiliate.GetTransactions, toBytes(p)) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	var r struct { | ||||||
|  | 		Data  *model.GetTransactionsResponse `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,12 @@ | ||||||
|  | package model | ||||||
|  | 
 | ||||||
|  | // GetTransactionsRequest ...
 | ||||||
|  | type GetTransactionsRequest struct { | ||||||
|  | 	Page     int64  `json:"page"` | ||||||
|  | 	Limit    int64  `json:"limit"` | ||||||
|  | 	Keyword  string `json:"keyword"` | ||||||
|  | 	Statuses string `json:"statuses"` | ||||||
|  | 	Source   string `json:"source"` | ||||||
|  | 	Campaign string `json:"campaign"` | ||||||
|  | 	Seller   string `json:"seller"` | ||||||
|  | } | ||||||
|  | @ -0,0 +1,56 @@ | ||||||
|  | package model | ||||||
|  | 
 | ||||||
|  | import "time" | ||||||
|  | 
 | ||||||
|  | // GetTransactionsResponse ...
 | ||||||
|  | type GetTransactionsResponse struct { | ||||||
|  | 	Total int64             `json:"total"` | ||||||
|  | 	Limit int64             `json:"limit"` | ||||||
|  | 	List  []TransactionInfo `json:"list"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // TransactionInfo ...
 | ||||||
|  | type TransactionInfo struct { | ||||||
|  | 	ID                       string                     `json:"_id"` | ||||||
|  | 	Code                     string                     `json:"code"` | ||||||
|  | 	Campaign                 ResponseCampaignShort      `json:"campaign"` | ||||||
|  | 	Seller                   ResponseSellerInfo         `json:"seller"` | ||||||
|  | 	Source                   string                     `json:"source"` | ||||||
|  | 	Commission               ResponseCampaignCommission `json:"commission"` | ||||||
|  | 	EstimateSellerCommission float64                    `json:"estimateSellerCommission"` | ||||||
|  | 	TransactionTime          time.Time                  `json:"transactionTime"` | ||||||
|  | 	Status                   string                     `json:"status"` | ||||||
|  | 	RejectedReason           string                     `json:"rejectedReason"` | ||||||
|  | 	EstimateCashbackAt       time.Time                  `json:"estimateCashbackAt"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ResponseCampaignCommission ...
 | ||||||
|  | type ResponseCampaignCommission struct { | ||||||
|  | 	Real          float64 `json:"real"` | ||||||
|  | 	SellerPercent float64 `json:"sellerPercent"` | ||||||
|  | 	Selly         float64 `json:"selly"` | ||||||
|  | 	Seller        float64 `json:"seller"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ResponseCampaignShort ...
 | ||||||
|  | type ResponseCampaignShort struct { | ||||||
|  | 	ID   string     `json:"_id"` | ||||||
|  | 	Name string     `json:"name"` | ||||||
|  | 	Logo *FilePhoto `json:"logo"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	transcationInfoTitle = []string{ | ||||||
|  | 		"ID lượt thưởng", | ||||||
|  | 		"Tên sản phẩm", | ||||||
|  | 		"ID Seller", | ||||||
|  | 		"Tên Seller", | ||||||
|  | 		"Thời gian phát sinh", | ||||||
|  | 		"Thời gian đối soát dự kiến", | ||||||
|  | 		"Trạng thái", | ||||||
|  | 		"Hoa hồng nhận từ đối tác", | ||||||
|  | 		"Phần trăm hóa hồng cho Seller", | ||||||
|  | 		"Hoa hồng cho Seller", | ||||||
|  | 		"Hoa hồng cho Selly", | ||||||
|  | 	} | ||||||
|  | ) | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | package subject | ||||||
|  | 
 | ||||||
|  | import "fmt" | ||||||
|  | 
 | ||||||
|  | func getAffiliateValue(val string) string { | ||||||
|  | 	return fmt.Sprintf("%s.%s", prefixes.Affiliate, val) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var Affiliate = struct { | ||||||
|  | 	GetTransactions string | ||||||
|  | }{ | ||||||
|  | 	GetTransactions: getAffiliateValue("get_transactions"), | ||||||
|  | } | ||||||
|  | @ -20,6 +20,7 @@ var prefixes = struct { | ||||||
| 	SupplierUser       string | 	SupplierUser       string | ||||||
| 	SupplierRole       string | 	SupplierRole       string | ||||||
| 	Campaign           string | 	Campaign           string | ||||||
|  | 	Affiliate     string | ||||||
| }{ | }{ | ||||||
| 	Communication:      "communication", | 	Communication:      "communication", | ||||||
| 	Order:              "order", | 	Order:              "order", | ||||||
|  | @ -40,4 +41,5 @@ var prefixes = struct { | ||||||
| 	Staff:              "staff", | 	Staff:              "staff", | ||||||
| 	Segment:            "segment", | 	Segment:            "segment", | ||||||
| 	Campaign:           "campaign", | 	Campaign:           "campaign", | ||||||
|  | 	Affiliate:     "affiliate", | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue