| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- 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)
- }
- // 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)
- }
|