refactor-location #134
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -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
 | 
			
		||||
	SupplierRole       string
 | 
			
		||||
	Campaign           string
 | 
			
		||||
	Affiliate     string
 | 
			
		||||
}{
 | 
			
		||||
	Communication:      "communication",
 | 
			
		||||
	Order:              "order",
 | 
			
		||||
| 
						 | 
				
			
			@ -40,4 +41,5 @@ var prefixes = struct {
 | 
			
		|||
	Staff:              "staff",
 | 
			
		||||
	Segment:            "segment",
 | 
			
		||||
	Campaign:           "campaign",
 | 
			
		||||
	Affiliate:     "affiliate",
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue