12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package region
- import (
- "strings"
- "zhiyuan/models"
- "zhiyuan/pkg/app"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/redis"
- "zhiyuan/pkg/utils"
- )
- const cacheKey = "region_list_cache"
- var Region models.Region
- func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.Region, error) {
- if page.PageNum > 0 && page.PageSize > 0 {
- where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
- }
- return Region.GetMulti(where, fields, retVal)
- }
- func GetListByCache() ([]*models.Region, error) {
- res, err := redis.Get(cacheKey)
- var regionList []*models.Region
- if err != nil {
- regionList, err = GetList(nil, nil, app.Page{}, nil)
- if err != nil {
- return nil, err
- }
- redis.Set(cacheKey, regionList, 86400)
- } else {
- utils.JsonDecode(res).To(®ionList)
- }
- return regionList, nil
- }
- func GetNameByCodes(codes []int) (map[int]string, error) {
- var regionList []*models.Region
- if len(codes) <= 0 {
- return nil, nil
- }
- regionMap := make(map[int]string, 0)
- _, err := GetList(map[string]interface{}{"code in": codes}, []string{"code, name"}, app.Page{}, ®ionList)
- if err != nil {
- return nil, err
- }
- for _, v := range regionList {
- regionMap[v.Code] = v.Name
- }
- return regionMap, nil
- }
- func GetFullAddressByCodes(province int, city int, region int, address string, split string, regionMap map[int]string) string {
- if regionMap == nil {
- var err error
- regionMap, err = GetNameByCodes([]int{province, city, region})
- if err != nil {
- return ""
- }
- }
- addressList := make([]string, 0)
- if _, ok := regionMap[province]; ok {
- addressList = append(addressList, regionMap[province])
- }
- if _, ok := regionMap[city]; ok {
- addressList = append(addressList, regionMap[city])
- }
- if _, ok := regionMap[region]; ok {
- addressList = append(addressList, regionMap[region])
- }
- if address != "" {
- addressList = append(addressList, address)
- }
- return strings.Join(addressList, split)
- }
|