diff --git a/client/social_post.go b/client/social_post.go new file mode 100644 index 0000000..72b1781 --- /dev/null +++ b/client/social_post.go @@ -0,0 +1,65 @@ +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 SocialPost) 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 +} + +// GetBriefDetailSocialPostAdminByIDsRequest ... +func (s SocialPost) GetBriefDetailSocialPostAdminByIDsRequest(p model.GetBriefInfoSocialPostAdminByIDsRequest) (*model.ResponseListSocialPostAdminInfo, error) { + msg, err := natsio.GetServer().Request(subject.SocialPost.GetBriefInfoSocialPostAdminByIDs, toBytes(p)) + + if err != nil { + return nil, err + } + + var r struct { + Data *model.ResponseListSocialPostAdminInfo `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 +} diff --git a/client/staff.go b/client/staff.go new file mode 100644 index 0000000..b175f53 --- /dev/null +++ b/client/staff.go @@ -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" +) + +// Staff ... +type Staff struct{} + +func GetStaff() Staff { + return Staff{} +} + +// GetListStaffInfoByIds ... +func (s Staff) GetListStaffInfoByIds(p model.GetListStaffRequest) (*model.ResponseListStaffInfo, error) { + msg, err := natsio.GetServer().Request(subject.Staff.GetListStaffInfo, toBytes(p)) + + if err != nil { + return nil, err + } + + var r struct { + Data *model.ResponseListStaffInfo `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 + +} diff --git a/js/model/selly.go b/js/model/selly.go index a8e0a60..856da44 100644 --- a/js/model/selly.go +++ b/js/model/selly.go @@ -12,8 +12,9 @@ type PushNotification struct { // NotificationOptions ... type NotificationOptions struct { - Title string `json:"title"` - Content string `json:"content"` + Title string `json:"title"` + Content string `json:"content"` + CampaignID string `json:"campaignId,omitempty"` } // PayloadUpdateSellerAffiliateStatistic ... diff --git a/model/file_response.go b/model/file_response.go new file mode 100644 index 0000000..6eff304 --- /dev/null +++ b/model/file_response.go @@ -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 diff --git a/model/social_post_request.go b/model/social_post_request.go new file mode 100644 index 0000000..efeb983 --- /dev/null +++ b/model/social_post_request.go @@ -0,0 +1,13 @@ +package model + +import "go.mongodb.org/mongo-driver/bson/primitive" + +// GetListSocialPostAppByIDsRequest ... +type GetListSocialPostAppByIDsRequest struct { + SocialPostIDs []primitive.ObjectID `json:"socialPostIDs"` +} + +// GetBriefInfoSocialPostAdminByIDsRequest ... +type GetBriefInfoSocialPostAdminByIDsRequest struct { + SocialPostIDs []primitive.ObjectID `json:"socialPostIDs"` +} diff --git a/model/social_post_response.go b/model/social_post_response.go new file mode 100644 index 0000000..e0765f5 --- /dev/null +++ b/model/social_post_response.go @@ -0,0 +1,61 @@ +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"` +} + +// ResponseListSocialPostAdminInfo ... +type ResponseListSocialPostAdminInfo struct { + SocialPosts []SocialPostAdminInfo `json:"socialPosts"` +} + +// SocialPostAdminInfo ... +type SocialPostAdminInfo struct { + ID primitive.ObjectID `json:"_id"` + Title string `json:"title"` + Status string `json:"status"` +} diff --git a/model/staff_request.go b/model/staff_request.go new file mode 100644 index 0000000..176b34e --- /dev/null +++ b/model/staff_request.go @@ -0,0 +1,6 @@ +package model + +// GetListStaffRequest ... +type GetListStaffRequest struct { + StaffIds []string `json:"staffIds"` +} diff --git a/model/staff_response.go b/model/staff_response.go new file mode 100644 index 0000000..5076d0c --- /dev/null +++ b/model/staff_response.go @@ -0,0 +1,12 @@ +package model + +// ResponseListStaffInfo ... +type ResponseListStaffInfo struct { + Staffs []ResponseStaffInfo `json:"staffs"` +} + +// ResponseStaffInfo ... +type ResponseStaffInfo struct { + ID string `json:"_id"` + Name string `json:"name"` +} diff --git a/subject/config.go b/subject/config.go index 90a014f..2a2f743 100644 --- a/subject/config.go +++ b/subject/config.go @@ -11,6 +11,8 @@ var prefixes = struct { Seller string SupplierUser string SupplierRole string + SocialPost string + Staff string }{ Communication: "communication", Order: "order", @@ -22,4 +24,6 @@ var prefixes = struct { Seller: "seller", SupplierUser: "supplier_user", SupplierRole: "supplier_role", + SocialPost: "social_post", + Staff: "staff", } diff --git a/subject/social_post.go b/subject/social_post.go new file mode 100644 index 0000000..029f876 --- /dev/null +++ b/subject/social_post.go @@ -0,0 +1,17 @@ +package subject + +import "fmt" + +// getSocialPostValue ... +func getSocialPostValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.SocialPost, val) +} + +// SocialPost ... +var SocialPost = struct { + GetListSocialPostAppInfoByIDs string + GetBriefInfoSocialPostAdminByIDs string +}{ + GetListSocialPostAppInfoByIDs: getSocialPostValue("get_list_social_post_app_info_by_ids"), + GetBriefInfoSocialPostAdminByIDs: getSocialPostValue("get_brief_info_social_post_admin_by_ids"), +} diff --git a/subject/staff.go b/subject/staff.go new file mode 100644 index 0000000..4777f06 --- /dev/null +++ b/subject/staff.go @@ -0,0 +1,14 @@ +package subject + +import "fmt" + +func getStaffValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.Staff, val) +} + +// Staff ... +var Staff = struct { + GetListStaffInfo string +}{ + GetListStaffInfo: getStaffValue("get_list_staff_info"), +}