Global care car insurance #39
|
@ -0,0 +1,88 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"github.com/Selly-Modules/natsio"
|
||||||
|
"github.com/Selly-Modules/natsio/model"
|
||||||
|
"github.com/Selly-Modules/natsio/subject"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Seller ...
|
||||||
|
type Seller struct{}
|
||||||
|
|
||||||
|
// GetSeller ...
|
||||||
|
func GetSeller() Seller {
|
||||||
|
return Seller{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSellerInfoByID ...
|
||||||
|
func (s Seller) GetSellerInfoByID(p model.GetSellerByIDRequest) (*model.ResponseSellerInfo, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Seller.GetSellerInfoByID, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseSellerInfo `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
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetListSellerInfoByIDs ...
|
||||||
|
func (s Seller) GetListSellerInfoByIDs(p model.GetListSellerByIDsRequest) (*model.ResponseListSellerInfo, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Seller.GetListSellerInfoByIDs, toBytes(p))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseListSellerInfo `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
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetListSellerInfoSupportChatByIDs ...
|
||||||
|
func (s Seller) GetListSellerInfoSupportChatByIDs(p model.GetListSellerSupportChatByIDsRequest) (*model.ResponseListSellerInfoSupportChat, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.SupportChat.GetListSellerInfoSupportChatByIDs, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var r struct {
|
||||||
|
Data *model.ResponseListSellerInfoSupportChat `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
|
||||||
|
}
|
|
@ -144,3 +144,22 @@ func (w Warehouse) GetConfigByWarehouseID(warehouseID string) (*model.WarehouseC
|
||||||
}
|
}
|
||||||
return r.Data, nil
|
return r.Data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetWarehouses ...
|
||||||
|
func (w Warehouse) GetWarehouses(p model.GetWarehousesRequest) (*model.GetWarehousesResponse, error) {
|
||||||
|
msg, err := natsio.GetServer().Request(subject.Warehouse.GetWarehouses, toBytes(p))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r struct {
|
||||||
|
Data *model.GetWarehousesResponse `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,4 @@
|
||||||
|
package natsio
|
||||||
|
|
||||||
|
// StreamNameSelly ...
|
||||||
|
const StreamNameSelly = "selly"
|
|
@ -0,0 +1,12 @@
|
||||||
|
package jsconsumer
|
||||||
|
|
||||||
|
// Selly ...
|
||||||
|
var Selly = struct {
|
||||||
|
PushNotification string
|
||||||
|
UpdateSellerAffiliateStatistic string
|
||||||
|
CheckAnDInsertCashflowBySeller string
|
||||||
|
}{
|
||||||
|
PushNotification: "PULL_PUSH_NOTIFICATION",
|
||||||
|
UpdateSellerAffiliateStatistic: "PULL_UPDATE_SELLER_AFFILIATE_STATISTIC",
|
||||||
|
CheckAnDInsertCashflowBySeller: "PULL_CHECK_AND_INSERT_CASHFLOW_BY_SELLER",
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package jsmodel
|
||||||
|
|
||||||
|
// PushNotification ...
|
||||||
|
type PushNotification struct {
|
||||||
|
User string `json:"user"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
TargetID string `json:"targetId"`
|
||||||
|
IsFromAdmin bool `json:"isFromAdmin"`
|
||||||
|
Category string `json:"category"`
|
||||||
|
Options NotificationOptions `json:"options"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NotificationOptions ...
|
||||||
|
type NotificationOptions struct {
|
||||||
|
Title string `json:"title"`
|
||||||
|
Content string `json:"content"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PayloadUpdateSellerAffiliateStatistic ...
|
||||||
|
type PayloadUpdateSellerAffiliateStatistic struct {
|
||||||
|
SellerID string `json:"sellerId"`
|
||||||
|
Statistic SellerAffiliateStatistic `json:"statistic"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SellerAffiliateStatistic ...
|
||||||
|
type SellerAffiliateStatistic struct {
|
||||||
|
TransactionTotal int `json:"transactionTotal"`
|
||||||
|
TransactionCashback int `json:"transactionCashback"`
|
||||||
|
TransactionPending int `json:"transactionPending"`
|
||||||
|
TransactionApproved int `json:"transactionApproved"`
|
||||||
|
TransactionRejected int `json:"transactionRejected"`
|
||||||
|
CommissionTransactionTotal float64 `json:"commissionTransactionTotal"`
|
||||||
|
CommissionTransactionCashback float64 `json:"commissionTransactionCashback"`
|
||||||
|
CommissionTransactionApproved float64 `json:"commissionTransactionApproved"`
|
||||||
|
CommissionTransactionPending float64 `json:"commissionTransactionPending"`
|
||||||
|
CommissionTransactionRejected float64 `json:"commissionTransactionRejected"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PayloadCashflowsBySeller ...
|
||||||
|
type PayloadCashflowsBySeller struct {
|
||||||
|
SellerID string `json:"sellerId"`
|
||||||
|
List []CashflowSeller `json:"list"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CashflowSeller ...
|
||||||
|
type CashflowSeller struct {
|
||||||
|
Value float64 `json:"value"`
|
||||||
|
Action string `json:"action"`
|
||||||
|
Category string `json:"category"`
|
||||||
|
TargetID string `json:"targetId"`
|
||||||
|
TargetType string `json:"targetType"`
|
||||||
|
Options *CashFlowOptions `json:"options"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CashFlowOptions ...
|
||||||
|
type CashFlowOptions struct {
|
||||||
|
AffiliateTransactionCode string `json:"affiliateTransactionCode,omitempty"`
|
||||||
|
AffiliateCampaignID string `json:"affiliateCampaignId,omitempty"`
|
||||||
|
AffiliateCampaignName string `json:"affiliateCampaignName,omitempty"`
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package jssubject
|
||||||
|
|
||||||
|
var root = "js"
|
||||||
|
|
||||||
|
// prefixes ...
|
||||||
|
var prefixes = struct {
|
||||||
|
Selly string
|
||||||
|
}{
|
||||||
|
Selly: "selly",
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package jssubject
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// getSellyValue ...
|
||||||
|
func getSellyValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s.%s", root, prefixes.Selly, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Selly ...
|
||||||
|
var Selly = struct {
|
||||||
|
PushNotification string
|
||||||
|
UpdateSellerAffiliateStatistic string
|
||||||
|
CheckAnDInsertCashflowBySeller string
|
||||||
|
}{
|
||||||
|
PushNotification: getSellyValue("push_notifications"),
|
||||||
|
UpdateSellerAffiliateStatistic: getSellyValue("update_seller_affiliate_statistic"),
|
||||||
|
CheckAnDInsertCashflowBySeller: getSellyValue("check_and_insert_cashflow_statistic"),
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
|
||||||
|
// GetSellerByIDRequest ...
|
||||||
|
type GetSellerByIDRequest struct {
|
||||||
|
SellerID primitive.ObjectID `json:"sellerId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetListSellerByIDsRequest ...
|
||||||
|
type GetListSellerByIDsRequest struct {
|
||||||
|
SellerIDs []primitive.ObjectID `json:"sellerIds"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetListSellerSupportChatByIDsRequest ...
|
||||||
|
type GetListSellerSupportChatByIDsRequest struct {
|
||||||
|
SellerIDs []primitive.ObjectID `json:"sellerIds"`
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// ResponseSellerInfo ...
|
||||||
|
type ResponseSellerInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseListSellerInfo ...
|
||||||
|
type ResponseListSellerInfo struct {
|
||||||
|
Sellers []ResponseSellerInfo `json:"sellers"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseListSellerInfoSupportChat ...
|
||||||
|
type ResponseListSellerInfoSupportChat struct {
|
||||||
|
Sellers []ResponseSellerInfoSupportChat `json:"sellers"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResponseSellerInfoSupportChat ...
|
||||||
|
type ResponseSellerInfoSupportChat struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Code string `json:"code"`
|
||||||
|
Membership SellerMembershipInfo `json:"membership"`
|
||||||
|
Info SellerContactInfo `json:"info"`
|
||||||
|
Team *TeamInfo `json:"team,omitempty"`
|
||||||
|
Statistic SellerStatistic `json:"statistic"`
|
||||||
|
TrackingTime *SellerTrackingTime `json:"trackingTime"`
|
||||||
|
Invitee *InviteeInfo `json:"invitee"`
|
||||||
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SellerTrackingTime ...
|
||||||
|
type SellerTrackingTime struct {
|
||||||
|
FirstOrderDeliveredAt time.Time `json:"firstOrderDeliveredAt,omitempty"`
|
||||||
|
ThirdOrderDeliveredAt time.Time `json:"thirdOrderDeliveredAt,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SellerStatistic ...
|
||||||
|
type SellerStatistic struct {
|
||||||
|
ThisMonthSale float64 `bson:"thisMonthSale" json:"thisMonthSale"`
|
||||||
|
LastMonthSale float64 `bson:"lastMonthSale" json:"lastMonthSale"`
|
||||||
|
Sale float64 `bson:"sale" json:"sale"`
|
||||||
|
TransactionTotal int `json:"transactionTotal"`
|
||||||
|
TransactionPaymentProcessing int `json:"transactionPaymentProcessing"`
|
||||||
|
TransactionWaitingApprove int `json:"transactionWaitingApprove"`
|
||||||
|
TransactionPending int `json:"transactionPending"`
|
||||||
|
TransactionSuccess int `json:"transactionSuccess"`
|
||||||
|
TransactionRejected int `json:"transactionRejected"`
|
||||||
|
TransactionDelivering int `json:"transactionDelivering"`
|
||||||
|
TransactionDelivered int `json:"transactionDelivered"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TeamInfo ...
|
||||||
|
type TeamInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Role string `json:"role"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// InviteeInfo ...
|
||||||
|
type InviteeInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SellerContactInfo ...
|
||||||
|
type SellerContactInfo struct {
|
||||||
|
City int `json:"cityCode"`
|
||||||
|
CityName string `json:"cityName"`
|
||||||
|
Gender string `json:"gender"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SellerMembershipInfo ...
|
||||||
|
type SellerMembershipInfo struct {
|
||||||
|
Level int `json:"level"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
|
@ -87,3 +87,14 @@ type SupplierIsClosed struct {
|
||||||
Supplier string `json:"supplier"`
|
Supplier string `json:"supplier"`
|
||||||
IsClosed bool `json:"isClosed"`
|
IsClosed bool `json:"isClosed"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetWarehousesRequest ...
|
||||||
|
type GetWarehousesRequest struct {
|
||||||
|
Keyword string `json:"keyword"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Supplier string `json:"supplier"`
|
||||||
|
BusinessType string `json:"businessType"`
|
||||||
|
|
||||||
|
Page int64 `json:"page"`
|
||||||
|
Limit int64 `json:"limit"`
|
||||||
|
}
|
||||||
|
|
|
@ -135,3 +135,30 @@ type WarehouseNatsResponse struct {
|
||||||
CreatedAt time.Time `json:"createdAt"`
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
UpdatedAt time.Time `json:"updatedAt"`
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WarehouseInfo ...
|
||||||
|
type WarehouseInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
BusinessType string `json:"businessType"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Slug string `json:"slug"`
|
||||||
|
Supplier WarehouseSupplierInfo `json:"supplier"`
|
||||||
|
Location ResponseWarehouseLocation `json:"location"`
|
||||||
|
Contact ResponseWarehouseContact `json:"contact"`
|
||||||
|
CreatedAt string `json:"createdAt"`
|
||||||
|
UpdatedAt string `json:"updatedAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WarehouseSupplierInfo ...
|
||||||
|
type WarehouseSupplierInfo struct {
|
||||||
|
ID string `json:"_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetWarehousesResponse ...
|
||||||
|
type GetWarehousesResponse struct {
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
Limit int64 `json:"limit"`
|
||||||
|
List []WarehouseInfo `json:"list"`
|
||||||
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ var prefixes = struct {
|
||||||
Warehouse string
|
Warehouse string
|
||||||
Location string
|
Location string
|
||||||
Supplier string
|
Supplier string
|
||||||
|
Seller string
|
||||||
}{
|
}{
|
||||||
Communication: "communication",
|
Communication: "communication",
|
||||||
Order: "order",
|
Order: "order",
|
||||||
|
@ -14,4 +15,5 @@ var prefixes = struct {
|
||||||
Warehouse: "warehouse",
|
Warehouse: "warehouse",
|
||||||
Location: "location",
|
Location: "location",
|
||||||
Supplier: "supplier",
|
Supplier: "supplier",
|
||||||
|
Seller: "seller",
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package subject
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func getSellerValue(val string) string {
|
||||||
|
return fmt.Sprintf("%s.%s", prefixes.Seller, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Seller ...
|
||||||
|
var Seller = struct {
|
||||||
|
GetSellerInfoByID string
|
||||||
|
GetListSellerInfoByIDs string
|
||||||
|
}{
|
||||||
|
GetSellerInfoByID: getSellerValue("get_seller_info_by_id"),
|
||||||
|
GetListSellerInfoByIDs: getSellerValue("get_list_seller_info_by_ids"),
|
||||||
|
}
|
||||||
|
|
||||||
|
// SupportChat ...
|
||||||
|
var SupportChat = struct {
|
||||||
|
GetListSellerInfoSupportChatByIDs string
|
||||||
|
}{
|
||||||
|
GetListSellerInfoSupportChatByIDs: "SELLY_CHAT.REQUEST.SELLER_INFO",
|
||||||
|
}
|
|
@ -21,6 +21,7 @@ var Warehouse = struct {
|
||||||
AfterUpdateWarehouse string
|
AfterUpdateWarehouse string
|
||||||
AfterCreateWarehouse string
|
AfterCreateWarehouse string
|
||||||
UpdateIsClosedSupplier string
|
UpdateIsClosedSupplier string
|
||||||
|
GetWarehouses string
|
||||||
}{
|
}{
|
||||||
AfterCreateWarehouse: getWarehouseValue("after_create_warehouse"),
|
AfterCreateWarehouse: getWarehouseValue("after_create_warehouse"),
|
||||||
AfterUpdateWarehouse: getWarehouseValue("after_update_warehouse"),
|
AfterUpdateWarehouse: getWarehouseValue("after_update_warehouse"),
|
||||||
|
@ -36,4 +37,5 @@ var Warehouse = struct {
|
||||||
Distinct: getWarehouseValue("distinct"),
|
Distinct: getWarehouseValue("distinct"),
|
||||||
Count: getWarehouseValue("count"),
|
Count: getWarehouseValue("count"),
|
||||||
UpdateIsClosedSupplier: getWarehouseValue("update_is_closed_supplier"),
|
UpdateIsClosedSupplier: getWarehouseValue("update_is_closed_supplier"),
|
||||||
|
GetWarehouses: getWarehouseValue("get_warehouses"),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue