Merge pull request 'export-data-affiliate-transaction-merge-dev' (#96) from export-data-affiliate-transaction-merge-dev into develop

Reviewed-on: #96
This commit is contained in:
phuanbui 2022-12-04 13:48:24 +00:00
commit 39c6ec26b4
5 changed files with 119 additions and 0 deletions

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

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