package common import ( "mtp2_if/global/app" "mtp2_if/global/e" "mtp2_if/logger" "mtp2_if/models" "net/http" "github.com/gin-gonic/gin" ) // QueryProvincesAndCitiesReq 查询省市信息请求参数 type QueryProvincesAndCitiesReq struct { ProvinceID int `form:"provinceID"` // 省ID } // QueryProvincesAndCitiesRsp 查询省市信息返回模型 type QueryProvincesAndCitiesRsp struct { Province models.Division // 省 Cities []models.Division // 市 } // QueryProvincesAndCities 查询省市信息(不包括区) // @Summary 查询省市信息(不包括区) // @Produce json // @Param provinceID query int false "省ID" // @Success 200 {object} QueryProvincesAndCitiesRsp // @Failure 500 {object} app.Response // @Router /Common/QueryProvincesAndCities [get] // @Tags 通用服务 func QueryProvincesAndCities(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req QueryProvincesAndCitiesReq if err := appG.C.ShouldBindQuery(&req); err != nil { logger.GetLogger().Errorf("QueryProvincesAndCities failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } // 获取省市信息 provinces, err := models.GetProvincesAndCities(req.ProvinceID) if err != nil { // 查询失败 logger.GetLogger().Errorf("QueryProvincesAndCities failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 分解省市数据 // Golang Map元素取址问题: cannot assign to struct field XXXX in map // https://blog.csdn.net/makenothing/article/details/105037977 pMap := make(map[string]*QueryProvincesAndCitiesRsp) // 构建省节点 for _, v := range provinces { if v.Divisionlevel == "province" { pMap[v.Divisioncode] = &QueryProvincesAndCitiesRsp{Province: v, Cities: make([]models.Division, 0)} } } // 为省节点增加市信息 for _, v := range provinces { if v.Divisionlevel == "city" { pMap[v.Parentcode].Cities = append(pMap[v.Parentcode].Cities, v) } } // map to slice rst := make([]QueryProvincesAndCitiesRsp, 0) for _, v := range pMap { rst = append(rst, *v) } // 查询成功 logger.GetLogger().Debugln("QueryProvincesAndCities successed: %v", rst) appG.Response(http.StatusOK, e.SUCCESS, rst) } // GetDivisions 查询区域信息 // @Summary 查询区域信息 // @Produce json // @Success 200 {object} models.Division // @Failure 500 {object} app.Response // @Router /Common/GetDivisions [get] // @Tags 通用服务 func GetDivisions(c *gin.Context) { appG := app.Gin{C: c} divisions, err := models.GetDivisions() if err != nil { // 查询失败 logger.GetLogger().Errorf("GetDivisions failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 logger.GetLogger().Debugln("GetDivisions successed: %v", divisions) appG.Response(http.StatusOK, e.SUCCESS, divisions) } // QueryImageConfigsReq 查询轮播图配置信息请求参数 type QueryImageConfigsReq struct { ImageType int `form:"imageType"` } // QueryImageConfigs 查询轮播图配置信息 // @Summary 查询轮播图配置信息 // @Produce json // @Param imageType query int false "类型 - 1:App首页轮播 2:我的" // @Success 200 {object} models.Szdz2imageconfig // @Failure 500 {object} app.Response // @Router /Common/QueryImageConfigs [get] // @Tags 通用服务 func QueryImageConfigs(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req QueryImageConfigsReq if err := appG.C.ShouldBindQuery(&req); err != nil { logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } imageConfigs, err := models.GetImageConfigs(req.ImageType) if err != nil { // 查询失败 logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 logger.GetLogger().Debugln("QueryImageConfigs successed: %v", imageConfigs) appG.Response(http.StatusOK, e.SUCCESS, imageConfigs) } // GetAllEnumsReq 获取所有枚举信息请求参数 type GetAllEnumsReq struct { Autoid int `form:"autoid"` } // GetAllEnums 获取所有枚举信息 // @Summary 获取所有枚举信息 // @Description autoid传入后则返回这个ID之后的数据;如不传则返回所有 // @Produce json // @Param autoid query int false "起始自增ID" // @Success 200 {object} models.Enumdicitem // @Failure 500 {object} app.Response // @Router /Common/GetAllEnums [get] // @Tags 通用服务 func GetAllEnums(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req GetAllEnumsReq if err := appG.C.ShouldBindQuery(&req); err != nil { logger.GetLogger().Errorf("GetAllEnums failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } enums, err := models.GetEnums(req.Autoid) if err != nil { // 查询失败 logger.GetLogger().Errorf("GetAllEnums failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 // logger.GetLogger().Debugln("GetAllEnums successed: %v", imageConfigs) appG.Response(http.StatusOK, e.SUCCESS, enums) } // GetServerTime 获取服务器时间 // @Summary 获取服务器时间 // @Produce json // @Success 200 {object} app.Response // @Failure 500 {object} app.Response // @Router /Common/GetServerTime [get] // @Tags 通用服务 func GetServerTime(c *gin.Context) { appG := app.Gin{C: c} rst, err := models.GetServerTime() if err != nil { // 查询失败 logger.GetLogger().Errorf("GetServerTime failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 logger.GetLogger().Debugln("GetServerTime successed: %v", rst) appG.Response(http.StatusOK, e.SUCCESS, rst) }