package common import ( "mtp2_if/global/app" "mtp2_if/global/e" "mtp2_if/logger" "mtp2_if/models" "net/http" "strconv" "time" "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"` UserId int64 `form:"userId"` } // QueryImageConfigsRsp 查询轮播图配置信息返回模型 type QueryImageConfigsRsp struct { Configid int64 `json:"configid" xorm:"'CONFIGID'" binding:"required"` // 配置ID(SEQ_SZDZ2_IMAGECONFIG) Imagetype int32 `json:"imagetype" xorm:"'IMAGETYPE'"` // 类型 - 1:首页轮播(移动) 2:我的(移动) Title string `json:"title" xorm:"'TITLE'"` // 标题 Imagepath string `json:"imagepath" xorm:"'IMAGEPATH'"` // 图片 URL string `json:"url" xorm:"'URL'"` // 链接(地址或商品ID) Sort int64 `json:"sort" xorm:"'SORT'"` // 排序 Isshow int32 `json:"isshow" xorm:"'ISSHOW'"` // 是否展示 - 0:不展示 1:展示 Createdate time.Time `json:"-" xorm:"'CREATEDATE'"` // 创建时间 Creatorid int64 `json:"-" xorm:"'CREATORID'"` // 创建人 Updatedate time.Time `json:"-" xorm:"'UPDATEDATE'"` // 修改时间 Modifierid int64 `json:"-" xorm:"'MODIFIERID'"` // 操作人 Areauserid int64 `json:"-" xorm:"'AREAUSERID'"` // 所属机构ID Urltype int32 `json:"urltype" xorm:"'URLTYPE'"` // 链接类型 - 1:直接地址 2:商品ID IMAGEDETAILPATH string `json:"imagedetailpath" xorm:"'IMAGEDETAILPATH'"` // 详情图片 [UrlType = 3时 有且必填,其它类型不需要] MarketID int `json:"marketid"` // 市场ID TradeMode int `json:"trademode"` // 交易模式 } // QueryImageConfigs 查询轮播图配置信息 // @Summary 查询轮播图配置信息 // @Produce json // @Param userId query int false "用户id" // @Param imageType query int false "类型 - 1:App首页轮播 2:我的 3:首页(PC) 4:首页推广(移动-新会)" // @Success 200 {object} QueryImageConfigsRsp // @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.UserId, req.ImageType) if err != nil { // 查询失败 logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } rst := make([]QueryImageConfigsRsp, 0) for _, v := range imageConfigs { item := QueryImageConfigsRsp{ Configid: v.Configid, Imagetype: v.Imagetype, Title: v.Title, Imagepath: v.Imagepath, URL: v.URL, Sort: v.Sort, Isshow: v.Isshow, Createdate: v.Createdate, Creatorid: v.Creatorid, Updatedate: v.Updatedate, Modifierid: v.Modifierid, Areauserid: v.Areauserid, Urltype: v.Urltype, IMAGEDETAILPATH: v.IMAGEDETAILPATH, } if item.Urltype == 2 { if i, err := strconv.Atoi(v.URL); err == nil { if market, _ := models.GetMarketByGoodsID(i); market != nil { item.MarketID = int(market.MARKETID) item.TradeMode = int(market.TRADEMODE) } } } rst = append(rst, item) } // 查询成功 logger.GetLogger().Debugln("QueryImageConfigs successed: %v", rst) appG.Response(http.StatusOK, e.SUCCESS, rst) } // 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) } // QueryMemberGoodsLimitConfig // @Summary 查询会员商品限制配置表 // @Produce json // @Param userid query int true "用户ID" // @Param roletype query int true "会员角色 - 6:自营会员 7:经纪会员" // @Success 200 {array} models.Membergoodslimitconfig // @Failure 500 {object} app.Response // @Router /Common/QueryMemberGoodsLimitConfig [get] // @Tags 通用服务 func QueryMemberGoodsLimitConfig(c *gin.Context) { a := app.GinUtils{Gin: app.Gin{C: c}} m := models.Membergoodslimitconfig{} a.DoBindReq(&m) a.DoGetDataEx(&m) } type GetWskhOpenAccountConfigsReq struct { Configs string `form:"configs" binding:"required"` // 配置ID列表,格式:1,2,3 } // GetWskhOpenAccountConfigs 获取网上开户配置信息 // @Summary 获取网上开户配置信息 // @Produce json // @Security ApiKeyAuth // @Param configs query string true "配置ID列表,格式:1,2,3" // @Success 200 {array} models.Wskhopenaccountconfig // @Failure 500 {object} app.Response // @Router /Common/GetWskhOpenAccountConfigs [get] // @Tags 通用服务 func GetWskhOpenAccountConfigs(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req GetWskhOpenAccountConfigsReq if err := appG.C.ShouldBindQuery(&req); err != nil { logger.GetLogger().Errorf("GetWskhOpenAccountConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } datas, err := models.GetWskhOpenAccountConfigs(req.Configs) if err != nil { // 查询失败 logger.GetLogger().Errorf("GetWskhOpenAccountConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 appG.Response(http.StatusOK, e.SUCCESS, datas) } // GetI18nConfigs 获取枚举项字典扩展表信息 // @Summary 获取枚举项字典扩展表信息 // @Produce json // @Success 200 {array} models.I18nConfig // @Failure 500 {object} app.Response // @Router /Common/GetI18nConfigs [get] // @Tags 通用服务 func GetI18nConfigs(c *gin.Context) { appG := app.Gin{C: c} datas, err := models.GetI18nConfigs() if err != nil { // 查询失败 logger.GetLogger().Errorf("GetI18nConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 appG.Response(http.StatusOK, e.SUCCESS, datas) } type GetGetSystemParamsReq struct { Codes string `form:"codes"` // 参数代码,格式:1,2,3 } // GetSystemParams 获取系统参数信息 // @Summary 获取系统参数信息 // @Produce json // @Param codes query string false "参数代码,格式:1,2,3" // @Success 200 {array} models.I18nConfig // @Failure 500 {object} app.Response // @Router /Common/GetSystemParams [get] // @Tags 通用服务 func GetSystemParams(c *gin.Context) { appG := app.Gin{C: c} // 获取请求参数 var req GetGetSystemParamsReq if err := appG.C.ShouldBindQuery(&req); err != nil { logger.GetLogger().Errorf("GetSystemParams failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil) return } datas, err := models.GetSystemParamsByCodes(req.Codes) if err != nil { // 查询失败 logger.GetLogger().Errorf("GetSystemParams failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 appG.Response(http.StatusOK, e.SUCCESS, datas) } // getClientDocumnetConfigs 获取终端文档配置信息 // @Summary 获取终端文档配置信息 // @Produce json // @Success 200 {array} models.ClientDocumentConfig // @Failure 500 {object} app.Response // @Router /Common/GetClientDocumnetConfigs [get] // @Tags 通用服务 func GetClientDocumnetConfigs(c *gin.Context) { appG := app.Gin{C: c} datas, err := models.GetClientDocumnetConfigs() if err != nil { // 查询失败 logger.GetLogger().Errorf("GetClientDocumnetConfigs failed: %s", err.Error()) appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil) return } // 查询成功 appG.Response(http.StatusOK, e.SUCCESS, datas) }