weather.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package models
  2. import (
  3. "encoding/json"
  4. "github.com/aiscrm/redisgo"
  5. "strconv"
  6. )
  7. type ConditionResp struct {
  8. Code int `json:"code"`
  9. Data struct {
  10. Condition struct {
  11. Condition string `json:"condition"` // 实时天气
  12. Humidity string `json:"humidity"` // 湿度
  13. Temp string `json:"temp"` // 温度
  14. Tips string `json:"tips"` // 提示
  15. WindDir string `json:"windDir"` // 风向
  16. WindLevel string `json:"windLevel"` // 风级
  17. WindSpeed string `json:"windSpeed"` // 风速
  18. } `json:"condition"`
  19. } `json:"data"`
  20. }
  21. type AqiResp struct {
  22. Code int `json:"code"`
  23. Data struct {
  24. Aqi struct {
  25. Value string `json:"value"` // 空气质量指数值
  26. PM25 string `json:"pm25"` // PM2.5指数
  27. Rank string `json:"rank"` // 全国排名
  28. } `json:"aqi"`
  29. } `json:"data"`
  30. }
  31. type Weather struct {
  32. CityId int64 `json:"cityId" gorm:"column:cityId"` // 城市ID
  33. Temp string `json:"temp" gorm:"column:temp"` // 温度
  34. Humidity string `json:"humidity" gorm:"column:humidity"` // 湿度
  35. Condition string `json:"condition" gorm:"-"` // 天气
  36. Aqi string `json:"aqi" gorm:"-"` // 空气指数
  37. AqiLevel string `json:"aqiLevel" gorm:"-"` // 空气指数等级
  38. PM25 string `json:"pm25" gorm:"column:pm25"` // PM2.5
  39. Province string `json:"province" gorm:"-"` // 省
  40. City string `json:"city" gorm:"-"` // 市
  41. Area string `json:"area" gorm:"-"` // 区
  42. Icon string `json:"icon" gorm:"-"` // 天气图标
  43. Created string `json:"created" gorm:"-"` // 创建日期
  44. }
  45. func (w *Weather) SaveToRedis(rds *redisgo.Cacher) error {
  46. jsonBytes, err := json.Marshal(w)
  47. if err != nil {
  48. return err
  49. }
  50. key := "CITY:" + strconv.FormatInt(w.CityId, 10)
  51. err = rds.Set(key, string(jsonBytes), 900)
  52. return err
  53. }