common.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package common
  2. import (
  3. "mtp2_if/global/app"
  4. "mtp2_if/global/e"
  5. "mtp2_if/logger"
  6. "mtp2_if/models"
  7. "net/http"
  8. "github.com/gin-gonic/gin"
  9. )
  10. // QueryProvincesAndCitiesReq 查询省市信息请求参数
  11. type QueryProvincesAndCitiesReq struct {
  12. ProvinceID int `form:"provinceID"` // 省ID
  13. }
  14. // QueryProvincesAndCitiesRsp 查询省市信息返回模型
  15. type QueryProvincesAndCitiesRsp struct {
  16. Province models.Division // 省
  17. Cities []models.Division // 市
  18. }
  19. // QueryProvincesAndCities 查询省市信息(不包括区)
  20. // @Summary 查询省市信息(不包括区)
  21. // @Produce json
  22. // @Param provinceID query int false "省ID"
  23. // @Success 200 {object} QueryProvincesAndCitiesRsp
  24. // @Failure 500 {object} app.Response
  25. // @Router /Common/QueryProvincesAndCities [get]
  26. // @Tags 通用服务
  27. func QueryProvincesAndCities(c *gin.Context) {
  28. appG := app.Gin{C: c}
  29. // 获取请求参数
  30. var req QueryProvincesAndCitiesReq
  31. if err := appG.C.ShouldBindQuery(&req); err != nil {
  32. logger.GetLogger().Errorf("QueryProvincesAndCities failed: %s", err.Error())
  33. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  34. return
  35. }
  36. // 获取省市信息
  37. provinces, err := models.GetProvincesAndCities(req.ProvinceID)
  38. if err != nil {
  39. // 查询失败
  40. logger.GetLogger().Errorf("QueryProvincesAndCities failed: %s", err.Error())
  41. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  42. return
  43. }
  44. // 分解省市数据
  45. // Golang Map元素取址问题: cannot assign to struct field XXXX in map
  46. // https://blog.csdn.net/makenothing/article/details/105037977
  47. pMap := make(map[string]*QueryProvincesAndCitiesRsp)
  48. // 构建省节点
  49. for _, v := range provinces {
  50. if v.Divisionlevel == "province" {
  51. pMap[v.Divisioncode] = &QueryProvincesAndCitiesRsp{Province: v, Cities: make([]models.Division, 0)}
  52. }
  53. }
  54. // 为省节点增加市信息
  55. for _, v := range provinces {
  56. if v.Divisionlevel == "city" {
  57. pMap[v.Parentcode].Cities = append(pMap[v.Parentcode].Cities, v)
  58. }
  59. }
  60. // map to slice
  61. rst := make([]QueryProvincesAndCitiesRsp, 0)
  62. for _, v := range pMap {
  63. rst = append(rst, *v)
  64. }
  65. // 查询成功
  66. logger.GetLogger().Debugln("QueryProvincesAndCities successed: %v", rst)
  67. appG.Response(http.StatusOK, e.SUCCESS, rst)
  68. }
  69. // QueryImageConfigsReq 查询轮播图配置信息请求参数
  70. type QueryImageConfigsReq struct {
  71. ImageType int `form:"imageType"`
  72. }
  73. // QueryImageConfigs 查询轮播图配置信息
  74. // @Summary 查询轮播图配置信息
  75. // @Produce json
  76. // @Param imageType query int false "类型 - 1:App首页轮播 2:我的"
  77. // @Success 200 {object} models.Szdz2imageconfig
  78. // @Failure 500 {object} app.Response
  79. // @Router /Common/QueryImageConfigs [get]
  80. // @Tags 通用服务
  81. func QueryImageConfigs(c *gin.Context) {
  82. appG := app.Gin{C: c}
  83. // 获取请求参数
  84. var req QueryImageConfigsReq
  85. if err := appG.C.ShouldBindQuery(&req); err != nil {
  86. logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error())
  87. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  88. return
  89. }
  90. imageConfigs, err := models.GetImageConfigs(req.ImageType)
  91. if err != nil {
  92. // 查询失败
  93. logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error())
  94. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  95. return
  96. }
  97. // 查询成功
  98. logger.GetLogger().Debugln("QueryImageConfigs successed: %v", imageConfigs)
  99. appG.Response(http.StatusOK, e.SUCCESS, imageConfigs)
  100. }