diff --git a/client/supplier_permission.go b/client/supplier_permission.go new file mode 100644 index 0000000..86ac1ba --- /dev/null +++ b/client/supplier_permission.go @@ -0,0 +1,79 @@ +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" +) + +// SupplierPermission ... +type SupplierPermission struct{} + +// GetSupplierPermission ... +func GetSupplierPermission() SupplierPermission { + return SupplierPermission{} +} + +func (s SupplierPermission) GetListPermission(p model.GetListPermissionRequest) (*model.GetListPermissionResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierPermission.GetList, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.GetListPermissionResponse `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 SupplierPermission) CreatePermission(p model.CreatePermissionRequest) (*model.CreatePermissionResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierPermission.Create, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.CreatePermissionResponse `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 SupplierPermission) UpdatePermission(p model.UpdatePermissionRequest) error { + msg, err := natsio.GetServer().Request(subject.SupplierPermission.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_role.go b/client/supplier_role.go index 3bf068d..095f3e9 100644 --- a/client/supplier_role.go +++ b/client/supplier_role.go @@ -16,8 +16,28 @@ func GetSupplierRole() SupplierRole { return SupplierRole{} } +func (s SupplierRole) GetListRole(p model.GetListRoleRequest) (*model.GetListRoleResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierRole.GetList, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.GetListRoleResponse `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) CreateRole(p model.CreateRoleRequest) (*model.CreateRoleResponse, error) { - msg, err := natsio.GetServer().Request(subject.SupplierUser.CreateOwner, toBytes(p)) + msg, err := natsio.GetServer().Request(subject.SupplierRole.Create, toBytes(p)) if err != nil { return nil, err } @@ -56,3 +76,24 @@ func (s SupplierRole) UpdateRole(p model.UpdateRoleRequest) error { return nil } + +func (s SupplierRole) DetailRole(p model.DetailRoleRequest) (*model.RoleBrief, error) { + msg, err := natsio.GetServer().Request(subject.SupplierRole.Detail, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.RoleBrief `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/supplier_user.go b/client/supplier_user.go index fb6a2db..2a1939a 100644 --- a/client/supplier_user.go +++ b/client/supplier_user.go @@ -16,6 +16,48 @@ func GetSupplierUser() SupplierUser { return SupplierUser{} } +func (s SupplierUser) LoginUser(p model.LoginUserRequest) (*model.LoginUserResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierUser.LoginUser, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.LoginUserResponse `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) GetListUser(p model.GetListUserRequest) (*model.GetListUserResponse, error) { + msg, err := natsio.GetServer().Request(subject.SupplierUser.GetListUser, toBytes(p)) + if err != nil { + return nil, err + } + + var r struct { + Data *model.GetListUserResponse `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) CreateSupplierOwnerUsers(p model.CreateOwnerRequest) (*model.CreateOwnerResponse, error) { msg, err := natsio.GetServer().Request(subject.SupplierUser.CreateOwner, toBytes(p)) if err != nil { @@ -99,7 +141,7 @@ func (s SupplierUser) UpdateSupplierStaffUsers(p model.UpdateStaffRequest) error } func (s SupplierUser) UpdateStatus(p model.UpdateStatusRequest) error { - msg, err := natsio.GetServer().Request(subject.SupplierUser.UpdateStaff, toBytes(p)) + msg, err := natsio.GetServer().Request(subject.SupplierUser.UpdateStatus, toBytes(p)) if err != nil { return err } diff --git a/model/supplier_device_request.go b/model/supplier_device_request.go new file mode 100644 index 0000000..8b53790 --- /dev/null +++ b/model/supplier_device_request.go @@ -0,0 +1 @@ +package model diff --git a/model/supplier_device_response.go b/model/supplier_device_response.go new file mode 100644 index 0000000..8b53790 --- /dev/null +++ b/model/supplier_device_response.go @@ -0,0 +1 @@ +package model diff --git a/model/supplier_permission_request.go b/model/supplier_permission_request.go new file mode 100644 index 0000000..e3d63c7 --- /dev/null +++ b/model/supplier_permission_request.go @@ -0,0 +1,24 @@ +package model + +type GetListPermissionRequest struct { + Page int `json:"page"` + Limit int `json:"limit"` + Group string `json:"group"` +} + +type DetailPermissionRequest struct { + ID string `json:"_id"` +} + +type CreatePermissionRequest struct { + Name string `json:"name"` + Code string `json:"code"` + Group string `json:"group"` +} + +type UpdatePermissionRequest struct { + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Group string `json:"group"` +} diff --git a/model/supplier_permission_response.go b/model/supplier_permission_response.go new file mode 100644 index 0000000..8134201 --- /dev/null +++ b/model/supplier_permission_response.go @@ -0,0 +1,26 @@ +package model + +type GetListPermissionResponse struct { + Permissions []PermissionBrief `json:"permissions"` + Total int64 `json:"total"` +} + +type PermissionBrief struct { + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Group string `json:"group"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +type CreatePermissionResponse struct { + ID string `json:"_id"` +} + +type PermissionShort struct { + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Group string `json:"group"` +} diff --git a/model/supplier_response.go b/model/supplier_response.go index 8efdb2c..ad0c0dd 100644 --- a/model/supplier_response.go +++ b/model/supplier_response.go @@ -33,3 +33,9 @@ type SupplierAll struct { type SupplierCashflowCreateResponse struct { ID string `json:"id"` } + +type SupplierShort struct { + ID string `json:"_id"` + Name string `json:"name"` + Logo interface{} `json:"logo"` +} \ No newline at end of file diff --git a/model/supplier_role_request.go b/model/supplier_role_request.go index 6402622..ee12d59 100644 --- a/model/supplier_role_request.go +++ b/model/supplier_role_request.go @@ -1,14 +1,29 @@ package model +type GetListRoleRequest struct { + Page int `json:"page"` + Limit int `json:"limit"` + Type string `json:"type"` + SupplierID string `json:"supplierId"` +} + +type DetailRoleRequest struct { + ID string `json:"_id"` +} + type CreateRoleRequest struct { - Name string `json:"name"` - Code string `json:"code"` - Type string `json:"type"` + Name string `json:"name"` + Code string `json:"code"` + Type string `json:"type"` + SupplierID string `json:"supplierId"` + Permissions []string `json:"permissions"` } type UpdateRoleRequest struct { - ID string `json:"_id"` - Name string `json:"name"` - Code string `json:"code"` - Type string `json:"type"` + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Type string `json:"type"` + SupplierID string `json:"supplierId"` + Permissions []string `json:"permissions"` } diff --git a/model/supplier_role_response.go b/model/supplier_role_response.go index d7b68fc..b67a0c6 100644 --- a/model/supplier_role_response.go +++ b/model/supplier_role_response.go @@ -1,5 +1,29 @@ package model +type GetListRoleResponse struct { + Roles []RoleBrief `json:"roles"` + Total int64 `json:"total"` +} + +type RoleBrief struct { + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Type string `json:"type"` + Permissions []PermissionShort `json:"permissions"` + SupplierId string `json:"supplierId"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + type CreateRoleResponse struct { ID string `json:"_id"` } + +type RoleShort struct { + ID string `json:"_id"` + Name string `json:"name"` + Code string `json:"code"` + Type string `json:"type"` + SupplierId string `json:"supplierId"` +} diff --git a/model/supplier_user_request.go b/model/supplier_user_request.go index 66ccb17..32c148f 100644 --- a/model/supplier_user_request.go +++ b/model/supplier_user_request.go @@ -1,5 +1,30 @@ package model +type LoginUserRequest struct { + Email string `json:"email"` + Password string `json:"password"` + DeviceID string `json:"deviceId"` + AppVersion string `json:"appVersion"` + UserAgent string `json:"userAgent"` + Model string `json:"model"` + Manufacturer string `json:"manufacturer"` + IP string `json:"ip"` + Language string `json:"language"` + FCMToken string `json:"FCMToken"` + AuthToken string `json:"authToken"` + OsName string `json:"osName"` + OsVersion string `json:"osVersion"` + IsMobile bool `json:"isMobile"` +} + +type GetListUserRequest struct { + Page int `json:"page"` + Limit int `json:"limit"` + Status string `json:"status"` + Type string `json:"type"` + SupplierID string `json:"supplierId"` +} + type CreateOwnerRequest struct { Name string `json:"name"` Phone string `json:"phone"` @@ -46,6 +71,5 @@ type UpdateStatusRequest struct { } type ResetPasswordRequest struct { - ID string `json:"_id"` - Password string `json:"password"` + ID string `json:"_id"` } diff --git a/model/supplier_user_response.go b/model/supplier_user_response.go index 38a1d0c..01826ce 100644 --- a/model/supplier_user_response.go +++ b/model/supplier_user_response.go @@ -1,5 +1,31 @@ package model +// LoginUserResponse ... +type LoginUserResponse struct { + ID string `json:"_id"` + RequireToChangePassword bool `json:"requireToChangePassword"` + SupplierID string `json:"supplierId"` +} + +type GetListUserResponse struct { + SupplierUsers []SupplierUserBrief `json:"supplierUsers"` + Total int64 `json:"total"` +} + +type SupplierUserBrief struct { + ID string `json:"_id"` + Role RoleShort `json:"role"` + SupplierID string `json:"supplierId"` + Name string `json:"name"` + Phone string `json:"phone"` + Email string `json:"email"` + Status string `json:"status"` + Avatar interface{} `json:"avatar"` + Type string `json:"type"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + type CreateOwnerResponse struct { ID string `json:"_id"` } diff --git a/subject/config.go b/subject/config.go index d428e4f..4bd7454 100644 --- a/subject/config.go +++ b/subject/config.go @@ -1,27 +1,29 @@ package subject var prefixes = struct { - Communication string - Order string - News string - Warehouse string - Location string - Bank string - Supplier string - Seller string - SupplierUser string - SupplierRole string - Withdraw string + Communication string + Order string + News string + Warehouse string + Location string + Bank string + Supplier string + Seller string + SupplierUser string + SupplierRole string + Withdraw string + SupplierPermission string }{ - Communication: "communication", - Order: "order", - News: "news", - Warehouse: "warehouse", - Location: "location", - Supplier: "supplier", - Bank: "bank", - Seller: "seller", - SupplierUser: "supplier_user", - SupplierRole: "supplier_role", - Withdraw: "withdraw", + Communication: "communication", + Order: "order", + News: "news", + Warehouse: "warehouse", + Location: "location", + Supplier: "supplier", + Bank: "bank", + Seller: "seller", + SupplierUser: "supplier_user", + SupplierRole: "supplier_role", + Withdraw: "withdraw", + SupplierPermission: "supplier_permission", } diff --git a/subject/supplier_permission.go b/subject/supplier_permission.go new file mode 100644 index 0000000..f759a0c --- /dev/null +++ b/subject/supplier_permission.go @@ -0,0 +1,17 @@ +package subject + +import "fmt" + +func getPermissionValue(val string) string { + return fmt.Sprintf("%s.%s", prefixes.SupplierPermission, val) +} + +var SupplierPermission = struct { + GetList string + Create string + Update string +}{ + GetList: getPermissionValue("get_list"), + Create: getPermissionValue("create"), + Update: getPermissionValue("update"), +} diff --git a/subject/supplier_role.go b/subject/supplier_role.go index 8915759..83389da 100644 --- a/subject/supplier_role.go +++ b/subject/supplier_role.go @@ -7,9 +7,15 @@ func getRoleValue(val string) string { } var SupplierRole = struct { - Create string - Update string + GetList string + Detail string + Create string + Update string + GetListBySupplierID string }{ - Create: getRoleValue("create"), - Update: getRoleValue("update"), + GetList: getRoleValue("get_list"), + Detail: getRoleValue("detail"), + Create: getRoleValue("create"), + Update: getRoleValue("update"), + GetListBySupplierID: getRoleValue("get_list_by_supplierId"), } diff --git a/subject/supplier_user.go b/subject/supplier_user.go index adc2f1f..2ad5b4d 100644 --- a/subject/supplier_user.go +++ b/subject/supplier_user.go @@ -8,6 +8,8 @@ func getSupplierUserValue(val string) string { var SupplierUser = struct { // Users + LoginUser string + GetListUser string CreateOwner string UpdateOwner string CreateStaff string @@ -16,6 +18,8 @@ var SupplierUser = struct { ResetPassword string }{ // Users + LoginUser: getSupplierUserValue("login_user"), + GetListUser: getSupplierUserValue("get_list_user"), CreateOwner: getSupplierUserValue("create_owner"), UpdateOwner: getSupplierUserValue("update_owner"), CreateStaff: getSupplierUserValue("create_staff"),