diff --git a/client/seller.go b/client/seller.go index 30987bd..da0fc23 100644 --- a/client/seller.go +++ b/client/seller.go @@ -79,7 +79,6 @@ func (s Seller) GetListSellerInfoSupportChatByIDs(p model.GetListSellerSupportCh if err := json.Unmarshal(msg.Data, &r); err != nil { return nil, err } - if r.Error != "" { return nil, errors.New(r.Error) diff --git a/client/supplier_role.go b/client/supplier_role.go new file mode 100644 index 0000000..3bf068d --- /dev/null +++ b/client/supplier_role.go @@ -0,0 +1,58 @@ +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" +) + +// SupplierRole ... +type SupplierRole struct{} + +// GetSupplierRole ... +func GetSupplierRole() SupplierRole { + return SupplierRole{} +} + +func (s SupplierRole) CreateRole(p model.CreateRoleRequest) (*model.CreateRoleResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierUser.CreateOwner, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.CreateRoleResponse `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 +} + +func (s SupplierRole) UpdateRole(p model.UpdateRoleRequest) error { + msg, err := natsio.GetServer().Request(subject.SupplierRole.Update, toBytes(p)) + if err != nil { + return err + } + + var r struct { + Error string `json:"error"` + } + + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + + return nil +} diff --git a/client/supplier_user.go b/client/supplier_user.go new file mode 100644 index 0000000..fb6a2db --- /dev/null +++ b/client/supplier_user.go @@ -0,0 +1,140 @@ +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" +) + +// SupplierUser ... +type SupplierUser struct{} + +// GetSupplierUser ... +func GetSupplierUser() SupplierUser { + return SupplierUser{} +} + +func (s SupplierUser) CreateSupplierOwnerUsers(p model.CreateOwnerRequest) (*model.CreateOwnerResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierUser.CreateOwner, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.CreateOwnerResponse `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 +} + +func (s SupplierUser) UpdateSupplierOwnerUsers(p model.UpdateOwnerRequest) error { + msg, err := natsio.GetServer().Request(subject.SupplierUser.UpdateOwner, toBytes(p)) + if err != nil { + return err + } + + var r struct { + Error string `json:"error"` + } + + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + + return nil +} + +func (s SupplierUser) CreateSupplierStaffUsers(p model.CreateStaffRequest) (*model.CreateStaffResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierUser.CreateStaff, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.CreateStaffResponse `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 +} + +func (s SupplierUser) UpdateSupplierStaffUsers(p model.UpdateStaffRequest) error { + msg, err := natsio.GetServer().Request(subject.SupplierUser.UpdateStaff, toBytes(p)) + if err != nil { + return err + } + + var r struct { + Error string `json:"error"` + } + + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + + return nil +} + +func (s SupplierUser) UpdateStatus(p model.UpdateStatusRequest) error { + msg, err := natsio.GetServer().Request(subject.SupplierUser.UpdateStaff, toBytes(p)) + if err != nil { + return err + } + + var r struct { + Error string `json:"error"` + } + + if err = json.Unmarshal(msg.Data, &r); err != nil { + return err + } + if r.Error != "" { + return errors.New(r.Error) + } + + return nil +} + +func (s SupplierUser) ResetPassword(p model.ResetPasswordRequest) (*model.ResetPasswordResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierUser.ResetPassword, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.ResetPasswordResponse `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/model/seller_response.go b/model/seller_response.go index aec57b9..01c80e5 100644 --- a/model/seller_response.go +++ b/model/seller_response.go @@ -21,16 +21,25 @@ type ResponseListSellerInfoSupportChat struct { // 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"` + 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 ... diff --git a/model/supplier_role_request.go b/model/supplier_role_request.go new file mode 100644 index 0000000..6402622 --- /dev/null +++ b/model/supplier_role_request.go @@ -0,0 +1,14 @@ +package model + +type CreateRoleRequest struct { + Name string `json:"name"` + Code string `json:"code"` + Type string `json:"type"` +} + +type UpdateRoleRequest struct { + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Type string `json:"type"` +} diff --git a/model/supplier_role_response.go b/model/supplier_role_response.go new file mode 100644 index 0000000..d7b68fc --- /dev/null +++ b/model/supplier_role_response.go @@ -0,0 +1,5 @@ +package model + +type CreateRoleResponse struct { + ID string `json:"_id"` +} diff --git a/model/supplier_user_request.go b/model/supplier_user_request.go new file mode 100644 index 0000000..66ccb17 --- /dev/null +++ b/model/supplier_user_request.go @@ -0,0 +1,51 @@ +package model + +type CreateOwnerRequest struct { + Name string `json:"name"` + Phone string `json:"phone"` + Email string `json:"email"` + SupplierID string `json:"supplierId"` + RoleID string `json:"roleId"` + Password string `json:"password"` +} + +type UpdateOwnerRequest struct { + ID string `json:"_id"` + SupplierID string `json:"supplierId"` + Name string `json:"name"` + Phone string `json:"phone"` + Email string `json:"email"` + RoleID string `json:"roleId"` +} + +type CreateStaffRequest struct { + Name string `json:"name"` + Phone string `json:"phone"` + Email string `json:"email"` + SupplierID string `json:"supplierId"` + RoleID string `json:"roleId"` + Password string `json:"password"` + Warehouses []string `json:"warehouses"` +} + +type UpdateStaffRequest struct { + ID string `json:"_id"` + Name string `json:"name"` + Phone string `json:"phone"` + Email string `json:"email"` + SupplierID string `json:"supplierId"` + RoleID string `json:"roleId"` + Password string `json:"password"` + SupplierUserWarehouseID string `json:"supplierUserWarehouseId"` + Warehouses []string `json:"warehouses"` +} + +type UpdateStatusRequest struct { + ID string `json:"_id"` + Status string `json:"status"` +} + +type ResetPasswordRequest struct { + ID string `json:"_id"` + Password string `json:"password"` +} diff --git a/model/supplier_user_response.go b/model/supplier_user_response.go new file mode 100644 index 0000000..38a1d0c --- /dev/null +++ b/model/supplier_user_response.go @@ -0,0 +1,13 @@ +package model + +type CreateOwnerResponse struct { + ID string `json:"_id"` +} + +type CreateStaffResponse struct { + ID string `json:"_id"` +} + +type ResetPasswordResponse struct { + Password string `json:"password"` +} diff --git a/model/warehouse_response.go b/model/warehouse_response.go index 07969dc..c667290 100644 --- a/model/warehouse_response.go +++ b/model/warehouse_response.go @@ -18,14 +18,21 @@ type OutboundRequestResponse struct { // WarehouseConfiguration ... type WarehouseConfiguration struct { - Warehouse string `json:"warehouse"` - DoesSupportSellyExpress bool `json:"doesSupportSellyExpress"` - Supplier WarehouseSupplier `json:"supplier"` - Order WarehouseOrder `json:"order"` - Partner WarehousePartner `json:"partner"` - Delivery WarehouseDelivery `json:"delivery"` - Other WarehouseOther `json:"other"` - Food WarehouseFood `json:"food"` + Warehouse string `json:"warehouse"` + DoesSupportSellyExpress bool `json:"doesSupportSellyExpress"` + Supplier WarehouseSupplier `json:"supplier"` + Order WarehouseOrder `json:"order"` + Partner WarehousePartner `json:"partner"` + Delivery WarehouseDelivery `json:"delivery"` + Other WarehouseOther `json:"other"` + Food WarehouseFood `json:"food"` + AutoConfirmOrder WarehouseOrderConfirm `json:"autoConfirmOrder"` +} + +// WarehouseOrderConfirm ... +type WarehouseOrderConfirm struct { + IsEnable bool `json:"isEnable"` + ConfirmDelayInSeconds int64 `json:"confirmDelayInSeconds"` } // WarehouseFood ... diff --git a/subject/config.go b/subject/config.go index 4a2f9f3..90a014f 100644 --- a/subject/config.go +++ b/subject/config.go @@ -9,6 +9,8 @@ var prefixes = struct { Bank string Supplier string Seller string + SupplierUser string + SupplierRole string }{ Communication: "communication", Order: "order", @@ -18,4 +20,6 @@ var prefixes = struct { Supplier: "supplier", Bank: "bank", Seller: "seller", + SupplierUser: "supplier_user", + SupplierRole: "supplier_role", } diff --git a/subject/supplier_role.go b/subject/supplier_role.go new file mode 100644 index 0000000..8915759 --- /dev/null +++ b/subject/supplier_role.go @@ -0,0 +1,15 @@ +package subject + +import "fmt" + +func getRoleValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.SupplierRole, val) +} + +var SupplierRole = struct { + Create string + Update string +}{ + Create: getRoleValue("create"), + Update: getRoleValue("update"), +} diff --git a/subject/supplier_user.go b/subject/supplier_user.go new file mode 100644 index 0000000..adc2f1f --- /dev/null +++ b/subject/supplier_user.go @@ -0,0 +1,25 @@ +package subject + +import "fmt" + +func getSupplierUserValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.SupplierUser, val) +} + +var SupplierUser = struct { + // Users + CreateOwner string + UpdateOwner string + CreateStaff string + UpdateStaff string + UpdateStatus string + ResetPassword string +}{ + // Users + CreateOwner: getSupplierUserValue("create_owner"), + UpdateOwner: getSupplierUserValue("update_owner"), + CreateStaff: getSupplierUserValue("create_staff"), + UpdateStaff: getSupplierUserValue("update_staff"), + UpdateStatus: getSupplierUserValue("update_status"), + ResetPassword: getSupplierUserValue("reset_password"), +}