export-data-affiliate-transaction #103
|
@ -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,16 @@
|
|||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
// GetTransactionsRequest ...
|
||||
type GetTransactionsRequest struct {
|
||||
Page int64 `json:"page"`
|
||||
Limit int64 `json:"limit"`
|
||||
Keyword string `json:"keyword"`
|
||||
Status string `json:"status"`
|
||||
Source string `json:"source"`
|
||||
Campaign string `json:"campaign"`
|
||||
Seller string `json:"seller"`
|
||||
FromAt time.Time `json:"fromAt"`
|
||||
ToAt time.Time `json:"toAt"`
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package model
|
||||
|
||||
// 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 string `json:"transactionTime"`
|
||||
Status string `json:"status"`
|
||||
RejectedReason string `json:"rejectedReason"`
|
||||
EstimateCashbackAt string `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"`
|
||||
}
|
|
@ -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"),
|
||||
}
|
|
@ -15,6 +15,7 @@ var prefixes = struct {
|
|||
Staff string
|
||||
Segment string
|
||||
Campaign string
|
||||
Affiliate string
|
||||
}{
|
||||
Communication: "communication",
|
||||
Order: "order",
|
||||
|
@ -30,4 +31,5 @@ var prefixes = struct {
|
|||
Staff: "staff",
|
||||
Segment: "segment",
|
||||
Campaign: "campaign",
|
||||
Affiliate: "affiliate",
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue