Feature/get bank info #23

Closed
nguyenphamquangtue wants to merge 57 commits from feature/get-bank-info into master
26 changed files with 884 additions and 72 deletions
Showing only changes of commit d488a2c344 - Show all commits

View File

@ -28,7 +28,7 @@ func (l Location) GetLocationByCode(payload model.LocationRequestPayload) (*mode
Data *model.ResponseLocationAddress `json:"data"` Data *model.ResponseLocationAddress `json:"data"`
Error string `json:"error"` Error string `json:"error"`
} }
if err := json.Unmarshal(msg.Data, &r); err != nil { if err = json.Unmarshal(msg.Data, &r); err != nil {
return nil, err return nil, err
} }
@ -38,7 +38,7 @@ func (l Location) GetLocationByCode(payload model.LocationRequestPayload) (*mode
return r.Data, nil return r.Data, nil
} }
// GetProvincesByCodes ... ... // GetProvincesByCodes ...
func (l Location) GetProvincesByCodes(p model.ProvinceRequestPayload) (*model.LocationProvinceResponse, error) { func (l Location) GetProvincesByCodes(p model.ProvinceRequestPayload) (*model.LocationProvinceResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetProvincesByCodes, toBytes(p)) msg, err := natsio.GetServer().Request(subject.Location.GetProvincesByCodes, toBytes(p))
if err != nil { if err != nil {
@ -46,11 +46,11 @@ func (l Location) GetProvincesByCodes(p model.ProvinceRequestPayload) (*model.Lo
} }
var r struct { var r struct {
Data *model.LocationProvinceResponse `json:"data"'` Data *model.LocationProvinceResponse `json:"data"`
Error string `json:"error"` Error string `json:"error"`
} }
if err := json.Unmarshal(msg.Data, &r); err != nil { if err = json.Unmarshal(msg.Data, &r); err != nil {
return nil, err return nil, err
} }
@ -71,7 +71,7 @@ func (l Location) GetDistrictsByCodes(p model.DistrictRequestPayload) (*model.Lo
Error string `json:"error"` Error string `json:"error"`
} }
if err := json.Unmarshal(msg.Data, &r); err != nil { if err = json.Unmarshal(msg.Data, &r); err != nil {
return nil, err return nil, err
} }
@ -94,7 +94,7 @@ func (l Location) GetWardsByCodes(p model.WardRequestPayload) (*model.LocationWa
Error string `json:"error"` Error string `json:"error"`
} }
if err := json.Unmarshal(msg.Data, &r); err != nil { if err = json.Unmarshal(msg.Data, &r); err != nil {
return nil, err return nil, err
} }
@ -104,3 +104,211 @@ func (l Location) GetWardsByCodes(p model.WardRequestPayload) (*model.LocationWa
return r.Data, nil return r.Data, nil
} }
// GetProvinceByCondition ...
func (l Location) GetProvinceByCondition(p model.ProvinceRequestCondition) (*model.LocationProvinceDetailResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetProvinceByCondition, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.LocationProvinceDetailResponse `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
}
// GetProvincesByCondition ...
func (l Location) GetProvincesByCondition(p model.ProvinceRequestCondition) ([]*model.LocationProvinceDetailResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetProvincesByCondition, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data []*model.LocationProvinceDetailResponse `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
}
// GetDistrictByCondition ...
func (l Location) GetDistrictByCondition(p model.DistrictRequestCondition) (*model.LocationDistrictDetailResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetDistrictByCondition, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.LocationDistrictDetailResponse `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
}
// GetDistrictsByCondition ...
func (l Location) GetDistrictsByCondition(p model.DistrictRequestCondition) ([]*model.LocationDistrictDetailResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetDistrictsByCondition, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data []*model.LocationDistrictDetailResponse `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
}
// GetWardByCondition ...
func (l Location) GetWardByCondition(p model.WardRequestCondition) (*model.LocationWardDetailResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetWardByCondition, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.LocationWardDetailResponse `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
}
// GetWardsByCondition ...
func (l Location) GetWardsByCondition(p model.WardRequestCondition) ([]*model.LocationWardDetailResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetWardsByCondition, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data []*model.LocationWardDetailResponse `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
}
// CountProvinceByCondition ...
func (l Location) CountProvinceByCondition(p model.ProvinceRequestCondition) (int64, error) {
msg, err := natsio.GetServer().Request(subject.Location.CountProvinceByCondition, toBytes(p))
if err != nil {
return 0, err
}
var r struct {
Data int64 `json:"data"`
Error string `json:"error"`
}
if err = json.Unmarshal(msg.Data, &r); err != nil {
return 0, err
}
if r.Error != "" {
return 0, errors.New(r.Error)
}
return r.Data, nil
}
// CountDistrictByCondition ...
func (l Location) CountDistrictByCondition(p model.DistrictRequestCondition) (int64, error) {
msg, err := natsio.GetServer().Request(subject.Location.CountDistrictByCondition, toBytes(p))
if err != nil {
return 0, err
}
var r struct {
Data int64 `json:"data"`
Error string `json:"error"`
}
if err = json.Unmarshal(msg.Data, &r); err != nil {
return 0, err
}
if r.Error != "" {
return 0, errors.New(r.Error)
}
return r.Data, nil
}
// CountWardByCondition ...
func (l Location) CountWardByCondition(p model.WardRequestCondition) (int64, error) {
msg, err := natsio.GetServer().Request(subject.Location.CountWardByCondition, toBytes(p))
if err != nil {
return 0, err
}
var r struct {
Data int64 `json:"data"`
Error string `json:"error"`
}
if err = json.Unmarshal(msg.Data, &r); err != nil {
return 0, err
}
if r.Error != "" {
return 0, errors.New(r.Error)
}
return r.Data, nil
}
// DistinctWithField ...
func (l Location) DistinctWithField(p model.ProvinceDistinctWithField) ([]interface{}, error) {
msg, err := natsio.GetServer().Request(subject.Location.ProvinceDistinctWithField, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data []interface{} `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
}

36
client/news.go Normal file
View File

@ -0,0 +1,36 @@
package client
import (
"encoding/json"
"errors"
"github.com/Selly-Modules/natsio"
"github.com/Selly-Modules/natsio/model"
"github.com/Selly-Modules/natsio/subject"
)
// News ...
type News struct{}
// GetNews ...
func GetNews() News {
return News{}
}
// GetProductNoticesByInventory ...
func (n News) GetProductNoticesByInventory(p model.GetProductNoticesByInventoryRequest) (*model.GetProductNoticesByInventoryResponse, error) {
msg, err := natsio.GetServer().Request(subject.News.GetProductNoticesByInventory, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.GetProductNoticesByInventoryResponse `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

@ -98,3 +98,24 @@ func (o Order) ORNotUpdateStatus(p model.OrderORsNotUpdateStatus) error {
} }
return nil return nil
} }
// GetSupplierOrders ...
func (o Order) GetSupplierOrders(p model.OrderSupplierQuery) (*model.SupplierOrderList, error) {
msg, err := natsio.GetServer().Request(subject.Order.GetSupplierOrders, toBytes(p))
if err != nil {
return nil, err
}
var (
r struct {
Data model.SupplierOrderList `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

@ -3,6 +3,7 @@ package client
import ( import (
"encoding/json" "encoding/json"
"errors" "errors"
"github.com/Selly-Modules/natsio" "github.com/Selly-Modules/natsio"
"github.com/Selly-Modules/natsio/model" "github.com/Selly-Modules/natsio/model"
"github.com/Selly-Modules/natsio/subject" "github.com/Selly-Modules/natsio/subject"
@ -38,3 +39,50 @@ func (s Seller) GetSellerInfoByID(p model.GetSellerByIDRequest) (*model.Response
return r.Data, nil 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
}

View File

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

4
jestream_name.go Normal file
View File

@ -0,0 +1,4 @@
package natsio
// StreamNameSelly ...
const StreamNameSelly = "selly"

12
js/consumer/selly.go Normal file
View File

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

60
js/model/selly.go Normal file
View File

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

10
js/subject/config.go Normal file
View File

@ -0,0 +1,10 @@
package jssubject
var root = "js"
// prefixes ...
var prefixes = struct {
Selly string
}{
Selly: "selly",
}

21
js/subject/selly.go Normal file
View File

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

View File

@ -1,23 +1,64 @@
package model package model
// LocationRequestPayload ... // LocationRequestPayload ...
type LocationRequestPayload struct { type (
LocationRequestPayload struct {
Province int `json:"province"` Province int `json:"province"`
District int `json:"district"` District int `json:"district"`
Ward int `json:"ward"` Ward int `json:"ward"`
} }
// ProvinceRequestPayload ... // ProvinceRequestPayload ...
type ProvinceRequestPayload struct { ProvinceRequestPayload struct {
Codes []int `json:"codes"` Codes []int `json:"codes"`
} }
// DistrictRequestPayload ... // ProvinceRequestCondition ...
type DistrictRequestPayload struct { ProvinceRequestCondition struct {
Code int `json:"code"`
Codes []int `json:"codes"` Codes []int `json:"codes"`
} Slug string `json:"slug"`
Slugs []string `json:"slugs"`
Keyword string `json:"keyword"`
Region string `json:"region"`
}
// WardRequestPayload ... // DistrictRequestPayload ...
type WardRequestPayload struct { DistrictRequestPayload struct {
Codes []int `json:"codes"` Codes []int `json:"codes"`
} }
// DistrictRequestCondition ...
DistrictRequestCondition struct {
Code int `json:"code"`
Codes []int `json:"codes"`
ProvinceCode int `json:"provinceCode"`
Slug string `json:"slug"`
ProvinceSlug string `json:"provinceSlug"`
Keyword string `json:"keyword"`
}
// WardRequestPayload ...
WardRequestPayload struct {
Codes []int `json:"codes"`
}
// WardRequestCondition ...
WardRequestCondition struct {
Code int `json:"code"`
Codes []int `json:"codes"`
DistrictCode int `json:"districtCode"`
ProvinceCode int `json:"provinceCode"`
Slug string `json:"slug"`
DistrictSlug string `json:"districtSlug"`
ProvinceSlug string `json:"provinceSlug"`
}
// ProvinceDistinctWithField ...
ProvinceDistinctWithField struct {
Conditions struct {
Region string `json:"region"`
} `json:"conditions"`
Field string `json:"filed"`
}
)

View File

@ -1,43 +1,96 @@
package model package model
type ResponseLocationAddress struct { import "time"
type (
// ResponseLocationAddress ...
ResponseLocationAddress struct {
Province LocationProvince `json:"province"` Province LocationProvince `json:"province"`
District LocationDistrict `json:"district"` District LocationDistrict `json:"district"`
Ward LocationWard `json:"ward"` Ward LocationWard `json:"ward"`
} }
// LocationProvince ... // LocationProvince ...
type LocationProvince struct { LocationProvince struct {
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Code int `json:"code"` Code int `json:"code"`
} RegionCode string `json:"regionCode"`
MainRegionCode string `json:"mainRegionCode"`
}
// LocationDistrict ... // LocationDistrict ...
type LocationDistrict struct { LocationDistrict struct {
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Code int `json:"code"` Code int `json:"code"`
} }
// LocationWard ... // LocationWard ...
type LocationWard struct { LocationWard struct {
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Code int `json:"code"` Code int `json:"code"`
} }
// LocationProvinceResponse ... // LocationProvinceResponse ...
type LocationProvinceResponse struct { LocationProvinceResponse struct {
Provinces []LocationProvince `json:"provinces"` Provinces []LocationProvince `json:"provinces"`
} }
// LocationDistrictResponse ... // LocationDistrictResponse ...
type LocationDistrictResponse struct { LocationDistrictResponse struct {
Districts []LocationDistrict `json:"districts"` Districts []LocationDistrict `json:"districts"`
} }
// LocationWardResponse ... // LocationWardResponse ...
type LocationWardResponse struct { LocationWardResponse struct {
Wards []LocationWard `json:"wards"` Wards []LocationWard `json:"wards"`
} }
// LocationProvinceDetailResponse ...
LocationProvinceDetailResponse struct {
ID string `json:"_id"`
Name string `json:"name"`
SearchString string `json:"searchString"`
Slug string `json:"slug"`
OldSlug string `json:"oldSlug"`
Code int `json:"code"`
CountryCode string `json:"countryCode"`
RegionCode string `json:"regionCode"`
MainRegionCode string `json:"mainRegionCode"`
TotalDistricts int `json:"totalDistricts"`
TotalWards int `json:"totalWards"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// LocationDistrictDetailResponse ...
LocationDistrictDetailResponse struct {
ID string `json:"_id"`
Name string `json:"name"`
SearchString string `json:"searchString"`
Slug string `json:"slug"`
OldSlug string `json:"oldSlug"`
Code int `json:"code"`
ProvinceCode int `json:"provinceCode"`
Area int `json:"area"`
TotalWards int `json:"totalWards"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// LocationWardDetailResponse ...
LocationWardDetailResponse struct {
ID string `json:"_id"`
Name string `json:"name"`
SearchString string `json:"searchString"`
Slug string `json:"slug"`
OldSlugs []string `json:"oldSlugs"`
Code int `json:"code"`
DistrictCode int `json:"districtCode"`
ProvinceCode int `json:"provinceCode"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
)

6
model/news_request.go Normal file
View File

@ -0,0 +1,6 @@
package model
// GetProductNoticesByInventoryRequest ....
type GetProductNoticesByInventoryRequest struct {
InventoryIds []string `json:"inventoryIds"`
}

38
model/news_response.go Normal file
View File

@ -0,0 +1,38 @@
package model
// GetProductNoticesByInventoryResponse ....
type GetProductNoticesByInventoryResponse struct {
Notices []NewsAppResponse `json:"notices"`
}
// NewsAppResponse ...
type NewsAppResponse struct {
ID string `json:"_id"`
Title string `json:"title,omitempty"`
Target *TargetNewDoc `json:"target,omitempty"`
ActionType *ActionType `json:"action"`
ShortDesc string `json:"shortDesc,omitempty"`
Type string `json:"type"`
ShortTitle string `json:"shortTitle,omitempty"`
Color string `json:"color"`
Options *NewsOptions `json:"options,omitempty"`
DisplayStyle string `json:"displayStyle"`
}
// NewsOptions ...
type NewsOptions struct {
Category string `json:"category"`
}
// TargetNewDoc ...
type TargetNewDoc struct {
Type string `json:"type,omitempty"`
Value string `json:"value,omitempty"`
}
// ActionType ...
type ActionType struct {
Type string `json:"type"`
Value string `json:"value"`
Text string `json:"text,omitempty"`
}

View File

@ -38,3 +38,13 @@ type OrderUpdateLogisticInfoFailed struct {
type OrderORsNotUpdateStatus struct { type OrderORsNotUpdateStatus struct {
ORCodes []string `json:"orCodes"` ORCodes []string `json:"orCodes"`
} }
// OrderSupplierQuery ...
type OrderSupplierQuery struct {
Limit int64 `json:"limit"`
Page int64 `json:"page"`
FromDate string `json:"fromDate"`
ToDate string `json:"toDate"`
SupplierID string `json:"supplierId"`
WarehouseIDs []string `json:"warehouseIDs"`
}

35
model/order_response.go Normal file
View File

@ -0,0 +1,35 @@
package model
import "time"
// SupplierOrderList ...
type SupplierOrderList struct {
List []SupplierOrder `json:"list"`
Total int64 `json:"total" example:"100"`
Limit int64 `json:"limit" example:"20"`
}
// SupplierOrder ...
type SupplierOrder struct {
ID string `json:"_id"`
Code string `json:"code"`
CreatedAt time.Time `json:"createdAt"`
Status string `json:"status"`
WarehouseStatus string `json:"warehouseStatus"`
Items []SupplierOrderItem `json:"items"`
Delivery SupplierOrderDelivery `json:"delivery"`
}
// SupplierOrderItem ...
type SupplierOrderItem struct {
ID string `json:"_id" example:"1231"`
SupplierSKU string `json:"supplierSku" example:"SUPPLIER_SKU"`
Quantity int64 `json:"quantity" example:"2"`
}
// SupplierOrderDelivery ...
type SupplierOrderDelivery struct {
Code string `json:"code" example:"123187287"`
Status string `json:"status" enums:"waiting_to_confirm,waiting_to_pick,picking,picked,delay_pickup,pickup_failed,delivering,delay_delivery,delivered,cancelled,delivery_failed,waiting_to_return,returning,delay_return,compensation,returned"`
TPLCode string `json:"tplCode" enums:"SLY,GHTK,GHN,SSC,SPY,VTP,SE,NTL,BEST"`
}

View File

@ -6,3 +6,13 @@ import "go.mongodb.org/mongo-driver/bson/primitive"
type GetSellerByIDRequest struct { type GetSellerByIDRequest struct {
SellerID primitive.ObjectID `json:"sellerId"` SellerID primitive.ObjectID `json:"sellerId"`
} }
// GetListSellerByIDsRequest ...
type GetListSellerByIDsRequest struct {
SellerIDs []primitive.ObjectID `json:"sellerIds"`
}
// GetListSellerSupportChatByIDsRequest ...
type GetListSellerSupportChatByIDsRequest struct {
SellerIDs []primitive.ObjectID `json:"sellerIds"`
}

View File

@ -1,8 +1,90 @@
package model package model
import "time"
// ResponseSellerInfo ... // ResponseSellerInfo ...
type ResponseSellerInfo struct { type ResponseSellerInfo struct {
ID string `json:"id"` ID string `json:"_id"`
Name string `json:"name"` Name string `json:"name"`
Code string `json:"code"` 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"`
PlanPackage *SellerPlanPackageInfo `json:"planPackage"`
}
// SellerPlanPackageInfo ...
type SellerPlanPackageInfo struct {
ID string `json:"_id"`
Name string `json:"name"`
Level int `json:"level"`
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"`
}

View File

@ -17,6 +17,7 @@ type OutboundRequestPayload struct {
// InsuranceOpts ... // InsuranceOpts ...
type InsuranceOpts struct { type InsuranceOpts struct {
InsuranceType string `json:"insuranceType"`
VehicleTypeID string `json:"vehicleTypeId"` VehicleTypeID string `json:"vehicleTypeId"`
VehicleTypeName string `json:"vehicleTypeName"` VehicleTypeName string `json:"vehicleTypeName"`
InsuranceTypeID string `json:"insuranceTypeId"` InsuranceTypeID string `json:"insuranceTypeId"`
@ -25,6 +26,12 @@ type InsuranceOpts struct {
Chassis string `json:"chassis"` Chassis string `json:"chassis"`
Engine string `json:"engine"` Engine string `json:"engine"`
BeginDate string `json:"beginDate"` BeginDate string `json:"beginDate"`
// For car insurance
NumberOfSeatsCarOccupantAccidentInsurance int `json:"numberOfSeatsCarOccupantAccidentInsurance"`
NumberOfSeats int `json:"numberOfSeats"`
NumberOfSeatsOrTonnageId string `json:"numberOfSeatsOrTonnageId"`
NumberOfSeatsOrTonnageName string `json:"numberOfSeatsOrTonnageName"`
} }
// OutboundRequestItem ... // OutboundRequestItem ...
@ -32,6 +39,8 @@ type OutboundRequestItem struct {
SupplierSKU string `json:"supplierSKU"` SupplierSKU string `json:"supplierSKU"`
Quantity int64 `json:"quantity"` Quantity int64 `json:"quantity"`
UnitCode string `json:"unitCode"` UnitCode string `json:"unitCode"`
Price float64 `json:"price"`
Name string `json:"name"`
} }
// CustomerInfo ... // CustomerInfo ...
@ -56,6 +65,7 @@ type UpdateOutboundRequestLogisticInfoPayload struct {
ShippingLabel string `json:"shippingLabel"` ShippingLabel string `json:"shippingLabel"`
TrackingCode string `json:"trackingCode"` TrackingCode string `json:"trackingCode"`
ORCode string `json:"orCode"` ORCode string `json:"orCode"`
TPLCode string `json:"tplCode"`
} }
// CancelOutboundRequest ... // CancelOutboundRequest ...
@ -80,3 +90,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"`
}

View File

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

View File

@ -3,6 +3,7 @@ package subject
var prefixes = struct { var prefixes = struct {
Communication string Communication string
Order string Order string
News string
Warehouse string Warehouse string
Location string Location string
Bank string Bank string
@ -11,6 +12,7 @@ var prefixes = struct {
}{ }{
Communication: "communication", Communication: "communication",
Order: "order", Order: "order",
News: "news",
Warehouse: "warehouse", Warehouse: "warehouse",
Location: "location", Location: "location",
Supplier: "supplier", Supplier: "supplier",

View File

@ -11,9 +11,29 @@ var Location = struct {
GetProvincesByCodes string GetProvincesByCodes string
GetDistrictsByCodes string GetDistrictsByCodes string
GetWardsByCodes string GetWardsByCodes string
GetProvinceByCondition string
GetProvincesByCondition string
GetDistrictByCondition string
GetDistrictsByCondition string
GetWardByCondition string
GetWardsByCondition string
CountProvinceByCondition string
CountDistrictByCondition string
CountWardByCondition string
ProvinceDistinctWithField string
}{ }{
GetLocationByCode: getLocationValue("get_location_warehouse"), GetLocationByCode: getLocationValue("get_location_warehouse"),
GetProvincesByCodes: getLocationValue("get_provinces_by_codes"), GetProvincesByCodes: getLocationValue("get_provinces_by_codes"),
GetDistrictsByCodes: getLocationValue("get_districts_by_codes"), GetDistrictsByCodes: getLocationValue("get_districts_by_codes"),
GetWardsByCodes: getLocationValue("get_wards_by_codes"), GetWardsByCodes: getLocationValue("get_wards_by_codes"),
GetProvinceByCondition: getLocationValue("get_province_by_condition"),
GetProvincesByCondition: getLocationValue("get_provinces_by_condition"),
GetDistrictByCondition: getLocationValue("get_district_by_condition"),
GetDistrictsByCondition: getLocationValue("get_districts_byCondition"),
GetWardByCondition: getLocationValue("get_ward_by_condition"),
GetWardsByCondition: getLocationValue("get_wards_by_condition"),
CountProvinceByCondition: getLocationValue("count_province_by_condition"),
CountDistrictByCondition: getLocationValue("count_district_by_condition"),
CountWardByCondition: getLocationValue("count_ward_by_condition"),
ProvinceDistinctWithField: getLocationValue("province_distinct_with_field"),
} }

13
subject/news.go Normal file
View File

@ -0,0 +1,13 @@
package subject
import "fmt"
func getNewsValue(val string) string {
return fmt.Sprintf("%s.%s", prefixes.News, val)
}
var News = struct {
GetProductNoticesByInventory string
}{
GetProductNoticesByInventory: getNewsValue("get_product_notices_by_inventory"),
}

View File

@ -12,10 +12,12 @@ var Order = struct {
ChangeDeliveryStatus string ChangeDeliveryStatus string
UpdateLogisticInfoFailed string UpdateLogisticInfoFailed string
ORNotUpdateStatus string ORNotUpdateStatus string
GetSupplierOrders string
}{ }{
UpdateORStatus: getOrderValue("update_outbound_request_status"), UpdateORStatus: getOrderValue("update_outbound_request_status"),
CancelDelivery: getOrderValue("cancel_delivery"), CancelDelivery: getOrderValue("cancel_delivery"),
ChangeDeliveryStatus: getOrderValue("change_delivery_status"), ChangeDeliveryStatus: getOrderValue("change_delivery_status"),
UpdateLogisticInfoFailed: getOrderValue("update_logistic_info_failed"), UpdateLogisticInfoFailed: getOrderValue("update_logistic_info_failed"),
ORNotUpdateStatus: getOrderValue("outbound_request_not_update_status"), ORNotUpdateStatus: getOrderValue("outbound_request_not_update_status"),
GetSupplierOrders: getOrderValue("get_supplier_orders"),
} }

View File

@ -9,6 +9,15 @@ func getSellerValue(val string) string {
// Seller ... // Seller ...
var Seller = struct { var Seller = struct {
GetSellerInfoByID string GetSellerInfoByID string
GetListSellerInfoByIDs string
}{ }{
GetSellerInfoByID: getSellerValue("get_seller_info_by_id"), 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",
} }

View File

@ -14,6 +14,7 @@ var Warehouse = struct {
SyncORStatus string SyncORStatus string
WebhookTNC string WebhookTNC string
WebhookGlobalCare string WebhookGlobalCare string
WebhookOnPoint string
FindOne string FindOne string
FindByCondition string FindByCondition string
Distinct string Distinct string
@ -23,6 +24,7 @@ var Warehouse = struct {
UpdateIsClosedSupplier string UpdateIsClosedSupplier string
CreateWarehouseIntoServiceSupplier string CreateWarehouseIntoServiceSupplier string
UpdateWarehouseIntoServiceSupplier string UpdateWarehouseIntoServiceSupplier string
GetWarehouses string
}{ }{
AfterCreateWarehouse: getWarehouseValue("after_create_warehouse"), AfterCreateWarehouse: getWarehouseValue("after_create_warehouse"),
AfterUpdateWarehouse: getWarehouseValue("after_update_warehouse"), AfterUpdateWarehouse: getWarehouseValue("after_update_warehouse"),
@ -33,6 +35,7 @@ var Warehouse = struct {
SyncORStatus: getWarehouseValue("sync_or_status"), SyncORStatus: getWarehouseValue("sync_or_status"),
WebhookTNC: getWarehouseValue("webhook_tnc"), WebhookTNC: getWarehouseValue("webhook_tnc"),
WebhookGlobalCare: getWarehouseValue("webhook_global_care"), WebhookGlobalCare: getWarehouseValue("webhook_global_care"),
WebhookOnPoint: getWarehouseValue("webhook_on_point"),
FindOne: getWarehouseValue("find_one"), FindOne: getWarehouseValue("find_one"),
FindByCondition: getWarehouseValue("find_all_by_condition"), FindByCondition: getWarehouseValue("find_all_by_condition"),
Distinct: getWarehouseValue("distinct"), Distinct: getWarehouseValue("distinct"),
@ -40,4 +43,5 @@ var Warehouse = struct {
UpdateIsClosedSupplier: getWarehouseValue("update_is_closed_supplier"), UpdateIsClosedSupplier: getWarehouseValue("update_is_closed_supplier"),
CreateWarehouseIntoServiceSupplier: getWarehouseValue("create_warehouse_into_service_supplier"), CreateWarehouseIntoServiceSupplier: getWarehouseValue("create_warehouse_into_service_supplier"),
UpdateWarehouseIntoServiceSupplier: getWarehouseValue("update_warehouse_into_service_supplier"), UpdateWarehouseIntoServiceSupplier: getWarehouseValue("update_warehouse_into_service_supplier"),
GetWarehouses: getWarehouseValue("get_warehouses"),
} }