fix get-location-warehouse

This commit is contained in:
phuanbui 2022-09-07 14:01:29 +07:00
parent af6e0843b9
commit 9b40f5f9ba
4 changed files with 106 additions and 2 deletions

View File

@ -17,6 +17,7 @@ func GetLocation() Location {
return Location{}
}
// GetLocationByCode ...
func (l Location) GetLocationByCode(payload model.LocationRequestPayload) (*model.ResponseLocationAddress, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetLocationByCode, toBytes(payload))
if err != nil {
@ -36,3 +37,70 @@ func (l Location) GetLocationByCode(payload model.LocationRequestPayload) (*mode
}
return r.Data, nil
}
// GetProvincesByCodes ... ...
func (l Location) GetProvincesByCodes(p model.ProvinceRequestPayload) (*model.LocationProvinceResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetProvincesByCodes, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.LocationProvinceResponse `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
}
// GetDistrictsByCodes ...
func (l Location) GetDistrictsByCodes(p model.DistrictRequestPayload) (*model.LocationDistrictResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetDistrictsByCodes, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.LocationDistrictResponse `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
}
// GetWardsByCodes ...
func (l Location) GetWardsByCodes(p model.WardRequestPayload) (*model.LocationWardResponse, error) {
msg, err := natsio.GetServer().Request(subject.Location.GetWardsByCodes, toBytes(p))
if err != nil {
return nil, err
}
var r struct {
Data *model.LocationWardResponse `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

@ -6,3 +6,18 @@ type LocationRequestPayload struct {
District int `json:"district"`
Ward int `json:"ward"`
}
// ProvinceRequestPayload ...
type ProvinceRequestPayload struct {
Codes []int `json:"Codes"`
}
// DistrictRequestPayload ...
type DistrictRequestPayload struct {
Codes []int `json:"Codes"`
}
// WardRequestPayload ...
type WardRequestPayload struct {
Codes []int `json:"Codes"`
}

View File

@ -26,3 +26,18 @@ type LocationWard struct {
Name string `json:"name"`
Code int `json:"code"`
}
// LocationProvinceResponse ...
type LocationProvinceResponse struct {
Province []LocationProvince `json:"province"`
}
// LocationDistrictResponse ...
type LocationDistrictResponse struct {
District []LocationDistrict `json:"district"`
}
// LocationWardResponse ...
type LocationWardResponse struct {
Ward []LocationWard `json:"ward"`
}

View File

@ -7,7 +7,13 @@ func getLocationValue(val string) string {
}
var Location = struct {
GetLocationByCode string
GetLocationByCode string
GetProvincesByCodes string
GetDistrictsByCodes string
GetWardsByCodes string
}{
GetLocationByCode: getLocationValue("get_location_warehouse"),
GetLocationByCode: getLocationValue("get_location_warehouse"),
GetProvincesByCodes: getLocationValue("get_provinces_warehouse"),
GetDistrictsByCodes: getLocationValue("get_districts_warehouse"),
GetWardsByCodes: getLocationValue("get_wards_warehouse"),
}