export-data-affiliate-transaction-merge-dev #96

Merged
Ghost merged 4 commits from export-data-affiliate-transaction-merge-dev into develop 2022-12-04 13:48:24 +00:00
5 changed files with 119 additions and 0 deletions
Showing only changes of commit 7c05aa7011 - Show all commits

36
client/affiliate.go Normal file
View File

@ -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
}

View File

@ -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"`
}

View File

@ -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",
}
)

13
subject/affiliate.go Normal file
View File

@ -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"),
}

View File

@ -15,6 +15,7 @@ var prefixes = struct {
Staff string Staff string
Segment string Segment string
Campaign string Campaign string
Affiliate string
}{ }{
Communication: "communication", Communication: "communication",
Order: "order", Order: "order",
@ -30,4 +31,5 @@ var prefixes = struct {
Staff: "staff", Staff: "staff",
Segment: "segment", Segment: "segment",
Campaign: "campaign", Campaign: "campaign",
Affiliate: "affiliate",
} }