mergeDev/campaign #73
|
@ -0,0 +1,41 @@
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SocialPost ...
|
||||||
|
type SocialPost struct{}
|
||||||
|
|
||||||
|
// GetSocialPost ...
|
||||||
|
func GetSocialPost() SocialPost {
|
||||||
|
return SocialPost{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetListSocialPostAppInfoByIDs ...
|
||||||
|
func (s Seller) GetListSocialPostAppInfoByIDs(p model.GetListSocialPostAppByIDsRequest) (*model.ResponseListSocialPostAppInfo, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.SocialPost.GetListSocialPostAppInfoByIDs, toBytes(p))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseListSocialPostAppInfo `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,56 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|
||||||
|
// FilePhoto ...
|
||||||
|
type FilePhoto struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
Dimensions *FileDimensions `json:"dimensions"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileSize ...
|
||||||
|
type FileSize struct {
|
||||||
|
Width int `json:"width"`
|
||||||
|
Height int `json:"height"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileDimensions ...
|
||||||
|
type FileDimensions struct {
|
||||||
|
Small *FileSize `json:"sm"`
|
||||||
|
Medium *FileSize `json:"md"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListPhoto ...
|
||||||
|
type ListPhoto []*FilePhoto
|
||||||
|
|
||||||
|
// Video ...
|
||||||
|
type Video struct {
|
||||||
|
ID primitive.ObjectID `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Dimensions *FileVideoDimensions `json:"dimensions"`
|
||||||
|
VideoExtension string `json:"ext"`
|
||||||
|
Thumbnail *FilePhoto `json:"thumbnail"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileVideoDimensions ...
|
||||||
|
type FileVideoDimensions struct {
|
||||||
|
Dimension480p *FileVideoSize `json:"size480p"`
|
||||||
|
Dimension720p *FileVideoSize `json:"size720p"`
|
||||||
|
Dimension1080p *FileVideoSize `json:"size1080p"`
|
||||||
|
DimensionOriginal *FileVideoSize `json:"original"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileVideoSize ...
|
||||||
|
type FileVideoSize struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Width int `json:"width"`
|
||||||
|
Height int `json:"height"`
|
||||||
|
Size string `json:"size"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListVideo ...
|
||||||
|
type ListVideo []Video
|
|
@ -0,0 +1,8 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|
||||||
|
// GetListSocialPostAppByIDsRequest ...
|
||||||
|
type GetListSocialPostAppByIDsRequest struct {
|
||||||
|
SocialPostIDs []primitive.ObjectID `json:"socialPostIDs"`
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ResponseListSocialPostAppInfo ...
|
||||||
|
type ResponseListSocialPostAppInfo struct {
|
||||||
|
SocialPosts []SocialPostAppInfo `json:"socialPosts"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SocialPostAppInfo ...
|
||||||
|
type SocialPostAppInfo struct {
|
||||||
|
ID primitive.ObjectID `json:"_id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Content string `json:"content"`
|
||||||
|
Statistic SocialPostStatistic `json:"statistic"`
|
||||||
|
Author *SocialPostSellerInfo `json:"author"`
|
||||||
|
Photos ListPhoto `json:"photos"`
|
||||||
|
PublishedAt time.Time `json:"publishedAt"`
|
||||||
|
IsLiked bool `json:"isLiked"`
|
||||||
|
IsPin bool `json:"isPin"`
|
||||||
|
Contributor *SocialPostSellerInfo `json:"contributor"`
|
||||||
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
HasUpdate bool `json:"hasUpdate"`
|
||||||
|
Order int `json:"order"`
|
||||||
|
Videos ListVideo `json:"videos"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SocialPostStatistic ...
|
||||||
|
type SocialPostStatistic struct {
|
||||||
|
Views int `json:"views"`
|
||||||
|
UniqueViews int `json:"uniqueViews"`
|
||||||
|
Likes int `json:"likes"`
|
||||||
|
Shares int `json:"shares"`
|
||||||
|
UniqueShares int `json:"uniqueShares"`
|
||||||
|
Comments int `json:"comments"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SocialPostSellerInfo ...
|
||||||
|
type SocialPostSellerInfo struct {
|
||||||
|
ID primitive.ObjectID `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Membership SellerMembershipInfo `json:"membership"`
|
||||||
|
Logo *FilePhoto `json:"logo"`
|
||||||
|
IsMine bool `json:"isMine"`
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ var prefixes = struct {
|
||||||
SupplierPermission string
|
SupplierPermission string
|
||||||
Withdraw string
|
Withdraw string
|
||||||
Notification string
|
Notification string
|
||||||
|
SocialPost string
|
||||||
}{
|
}{
|
||||||
Communication: "communication",
|
Communication: "communication",
|
||||||
Order: "order",
|
Order: "order",
|
||||||
|
@ -32,4 +33,5 @@ var prefixes = struct {
|
||||||
SupplierPermission: "supplier_permission",
|
SupplierPermission: "supplier_permission",
|
||||||
Withdraw: "withdraw",
|
Withdraw: "withdraw",
|
||||||
Notification: "notification",
|
Notification: "notification",
|
||||||
|
SocialPost: "social_post",
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// getSocialPostValue ...
|
||||||
|
func getSocialPostValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.SocialPost, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SocialPost ...
|
||||||
|
var SocialPost = struct {
|
||||||
|
GetListSocialPostAppInfoByIDs string
|
||||||
|
}{
|
||||||
|
GetListSocialPostAppInfoByIDs: getSocialPostValue("get_list_social_post_app_info_by_ids"),
|
||||||
|
}
|
Loading…
Reference in New Issue