feature/campaign-completed #94
|
@ -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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Campaign ...
|
||||||
|
type Campaign struct{}
|
||||||
|
|
||||||
|
// GetCampaign ...
|
||||||
|
func GetCampaign() Campaign {
|
||||||
|
return Campaign{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCampaignTransaction ...
|
||||||
|
func (c Campaign) GetCampaignTransaction(p model.GetCampaignTransactionsRequest) (*model.ResponseCampaignTransactionAll, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Campaign.GetListCampaignTransactionAdminInfoByIDs, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseCampaignTransactionAll `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
|
||||||
|
}
|
|
@ -58,4 +58,8 @@ type CashFlowOptions struct {
|
||||||
AffiliateTransactionCode string `json:"affiliateTransactionCode,omitempty"`
|
AffiliateTransactionCode string `json:"affiliateTransactionCode,omitempty"`
|
||||||
AffiliateCampaignID string `json:"affiliateCampaignId,omitempty"`
|
AffiliateCampaignID string `json:"affiliateCampaignId,omitempty"`
|
||||||
AffiliateCampaignName string `json:"affiliateCampaignName,omitempty"`
|
AffiliateCampaignName string `json:"affiliateCampaignName,omitempty"`
|
||||||
|
|
||||||
|
// Campaign
|
||||||
|
CampaignID string `json:"campaignId,omitempty"`
|
||||||
|
CampaignName string `json:"campaignName,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// GetCampaignTransactionsRequest ...
|
||||||
|
type GetCampaignTransactionsRequest struct {
|
||||||
|
Campaign string `json:"campaign"`
|
||||||
|
Keyword string `json:"keyword"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
FromAt time.Time `json:"fromAt"`
|
||||||
|
ToAt time.Time `json:"toAt"`
|
||||||
|
Page int64 `json:"page"`
|
||||||
|
Limit int64 `json:"limit"`
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|
||||||
|
// ResponseCampaignTransactionAll ...
|
||||||
|
type ResponseCampaignTransactionAll struct {
|
||||||
|
List []ResponseNatsCampaignTransaction `json:"list"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
Limit int64 `json:"limit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseNatsCampaignTransaction ...
|
||||||
|
type ResponseNatsCampaignTransaction struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Cash float64 `json:"cash"`
|
||||||
|
Campaign ResponseCampaignShortInfo `json:"campaign"`
|
||||||
|
Options ResponseCampaignTransactionOptions `json:"options"`
|
||||||
|
Seller primitive.ObjectID `json:"seller"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
RejectedReason string `json:"rejectedReason"`
|
||||||
|
CreatedAt string `json:"createdAt"`
|
||||||
|
UpdatedAt string `json:"updatedAt"`
|
||||||
|
Item *ResponseCampaignItemShortInfo `json:"item"`
|
||||||
|
ApprovedBy primitive.ObjectID `json:"approvedBy,omitempty"`
|
||||||
|
RejectedBy primitive.ObjectID `json:"rejectedBy,omitempty"`
|
||||||
|
ApprovedAt string `json:"approvedAt,omitempty"`
|
||||||
|
RejectedAt string `json:"rejectedAt,omitempty"`
|
||||||
|
CompletedAt string `json:"completedAt,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseCampaignShortInfo ...
|
||||||
|
type ResponseCampaignShortInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseCampaignItemShortInfo ...
|
||||||
|
type ResponseCampaignItemShortInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseCampaignTransactionOptions ...
|
||||||
|
type ResponseCampaignTransactionOptions struct {
|
||||||
|
Link string `json:"link"`
|
||||||
|
SocialChannel string `json:"socialChannel"`
|
||||||
|
Milestone int64 `json:"milestone"`
|
||||||
|
MilestoneTitle string `json:"milestoneTitle"`
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// getCampaignValue ...
|
||||||
|
func getCampaignValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Campaign, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Campaign ...
|
||||||
|
var Campaign = struct {
|
||||||
|
GetListCampaignTransactionAdminInfoByIDs string
|
||||||
|
}{
|
||||||
|
GetListCampaignTransactionAdminInfoByIDs: getCampaignValue("get_list_campaign_transaction_admin_info_by_ids"),
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ var prefixes = struct {
|
||||||
SocialPost string
|
SocialPost string
|
||||||
Staff string
|
Staff string
|
||||||
Segment string
|
Segment string
|
||||||
|
Campaign string
|
||||||
}{
|
}{
|
||||||
Communication: "communication",
|
Communication: "communication",
|
||||||
Order: "order",
|
Order: "order",
|
||||||
|
@ -28,4 +29,5 @@ var prefixes = struct {
|
||||||
SocialPost: "social_post",
|
SocialPost: "social_post",
|
||||||
Staff: "staff",
|
Staff: "staff",
|
||||||
Segment: "segment",
|
Segment: "segment",
|
||||||
|
Campaign: "campaign",
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue