common.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  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. "strconv"
  9. "time"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // QueryProvincesAndCitiesReq 查询省市信息请求参数
  13. type QueryProvincesAndCitiesReq struct {
  14. ProvinceID int `form:"provinceID"` // 省ID
  15. }
  16. // QueryProvincesAndCitiesRsp 查询省市信息返回模型
  17. type QueryProvincesAndCitiesRsp struct {
  18. Province models.Division // 省
  19. Cities []models.Division // 市
  20. }
  21. // QueryProvincesAndCities 查询省市信息(不包括区)
  22. // @Summary 查询省市信息(不包括区)
  23. // @Produce json
  24. // @Param provinceID query int false "省ID"
  25. // @Success 200 {object} QueryProvincesAndCitiesRsp
  26. // @Failure 500 {object} app.Response
  27. // @Router /Common/QueryProvincesAndCities [get]
  28. // @Tags 通用服务
  29. func QueryProvincesAndCities(c *gin.Context) {
  30. appG := app.Gin{C: c}
  31. // 获取请求参数
  32. var req QueryProvincesAndCitiesReq
  33. if err := appG.C.ShouldBindQuery(&req); err != nil {
  34. logger.GetLogger().Errorf("QueryProvincesAndCities failed: %s", err.Error())
  35. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  36. return
  37. }
  38. // 获取省市信息
  39. provinces, err := models.GetProvincesAndCities(req.ProvinceID)
  40. if err != nil {
  41. // 查询失败
  42. logger.GetLogger().Errorf("QueryProvincesAndCities failed: %s", err.Error())
  43. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  44. return
  45. }
  46. // 分解省市数据
  47. // Golang Map元素取址问题: cannot assign to struct field XXXX in map
  48. // https://blog.csdn.net/makenothing/article/details/105037977
  49. pMap := make(map[string]*QueryProvincesAndCitiesRsp)
  50. // 构建省节点
  51. for _, v := range provinces {
  52. if v.Divisionlevel == "province" {
  53. pMap[v.Divisioncode] = &QueryProvincesAndCitiesRsp{Province: v, Cities: make([]models.Division, 0)}
  54. }
  55. }
  56. // 为省节点增加市信息
  57. for _, v := range provinces {
  58. if v.Divisionlevel == "city" {
  59. pMap[v.Parentcode].Cities = append(pMap[v.Parentcode].Cities, v)
  60. }
  61. }
  62. // map to slice
  63. rst := make([]QueryProvincesAndCitiesRsp, 0)
  64. for _, v := range pMap {
  65. rst = append(rst, *v)
  66. }
  67. // 查询成功
  68. logger.GetLogger().Debugln("QueryProvincesAndCities successed: %v", rst)
  69. appG.Response(http.StatusOK, e.SUCCESS, rst)
  70. }
  71. // GetDivisions 查询区域信息
  72. // @Summary 查询区域信息
  73. // @Produce json
  74. // @Success 200 {object} models.Division
  75. // @Failure 500 {object} app.Response
  76. // @Router /Common/GetDivisions [get]
  77. // @Tags 通用服务
  78. func GetDivisions(c *gin.Context) {
  79. appG := app.Gin{C: c}
  80. divisions, err := models.GetDivisions()
  81. if err != nil {
  82. // 查询失败
  83. logger.GetLogger().Errorf("GetDivisions failed: %s", err.Error())
  84. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  85. return
  86. }
  87. // 查询成功
  88. logger.GetLogger().Debugln("GetDivisions successed: %v", divisions)
  89. appG.Response(http.StatusOK, e.SUCCESS, divisions)
  90. }
  91. // QueryImageConfigsReq 查询轮播图配置信息请求参数
  92. type QueryImageConfigsReq struct {
  93. ImageType int `form:"imageType"`
  94. }
  95. // QueryImageConfigsRsp 查询轮播图配置信息返回模型
  96. type QueryImageConfigsRsp struct {
  97. Configid int64 `json:"configid" xorm:"'CONFIGID'" binding:"required"` // 配置ID(SEQ_SZDZ2_IMAGECONFIG)
  98. Imagetype int32 `json:"imagetype" xorm:"'IMAGETYPE'"` // 类型 - 1:首页轮播(移动) 2:我的(移动)
  99. Title string `json:"title" xorm:"'TITLE'"` // 标题
  100. Imagepath string `json:"imagepath" xorm:"'IMAGEPATH'"` // 图片
  101. URL string `json:"url" xorm:"'URL'"` // 链接(地址或商品ID)
  102. Sort int64 `json:"sort" xorm:"'SORT'"` // 排序
  103. Isshow int32 `json:"isshow" xorm:"'ISSHOW'"` // 是否展示 - 0:不展示 1:展示
  104. Createdate time.Time `json:"createdate" xorm:"'CREATEDATE'"` // 创建时间
  105. Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
  106. Updatedate time.Time `json:"updatedate" xorm:"'UPDATEDATE'"` // 修改时间
  107. Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 操作人
  108. Areauserid int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构ID
  109. Urltype int32 `json:"urltype" xorm:"'URLTYPE'"` // 链接类型 - 1:直接地址 2:商品ID
  110. MarketID int `json:"marketid"` // 市场ID
  111. TradeMode int `json:"trademode"` // 交易模式
  112. }
  113. // QueryImageConfigs 查询轮播图配置信息
  114. // @Summary 查询轮播图配置信息
  115. // @Produce json
  116. // @Param imageType query int false "类型 - 1:App首页轮播 2:我的"
  117. // @Success 200 {object} QueryImageConfigsRsp
  118. // @Failure 500 {object} app.Response
  119. // @Router /Common/QueryImageConfigs [get]
  120. // @Tags 通用服务
  121. func QueryImageConfigs(c *gin.Context) {
  122. appG := app.Gin{C: c}
  123. // 获取请求参数
  124. var req QueryImageConfigsReq
  125. if err := appG.C.ShouldBindQuery(&req); err != nil {
  126. logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error())
  127. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  128. return
  129. }
  130. imageConfigs, err := models.GetImageConfigs(req.ImageType)
  131. if err != nil {
  132. // 查询失败
  133. logger.GetLogger().Errorf("QueryImageConfigs failed: %s", err.Error())
  134. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  135. return
  136. }
  137. rst := make([]QueryImageConfigsRsp, 0)
  138. for _, v := range imageConfigs {
  139. item := QueryImageConfigsRsp{
  140. Configid: v.Configid,
  141. Imagetype: v.Imagetype,
  142. Title: v.Title,
  143. Imagepath: v.Imagepath,
  144. URL: v.URL,
  145. Sort: v.Sort,
  146. Isshow: v.Isshow,
  147. Createdate: v.Createdate,
  148. Creatorid: v.Creatorid,
  149. Updatedate: v.Updatedate,
  150. Modifierid: v.Modifierid,
  151. Areauserid: v.Areauserid,
  152. Urltype: v.Urltype,
  153. }
  154. if item.Urltype == 2 {
  155. if i, err := strconv.Atoi(v.URL); err == nil {
  156. if market, _ := models.GetMarketByGoodsID(i); market != nil {
  157. item.MarketID = int(market.Marketid)
  158. item.TradeMode = int(market.Trademode)
  159. }
  160. }
  161. }
  162. rst = append(rst, item)
  163. }
  164. // 查询成功
  165. logger.GetLogger().Debugln("QueryImageConfigs successed: %v", rst)
  166. appG.Response(http.StatusOK, e.SUCCESS, rst)
  167. }
  168. // GetAllEnumsReq 获取所有枚举信息请求参数
  169. type GetAllEnumsReq struct {
  170. Autoid int `form:"autoid"`
  171. }
  172. // GetAllEnums 获取所有枚举信息
  173. // @Summary 获取所有枚举信息
  174. // @Description autoid传入后则返回这个ID之后的数据;如不传则返回所有
  175. // @Produce json
  176. // @Param autoid query int false "起始自增ID"
  177. // @Success 200 {object} models.Enumdicitem
  178. // @Failure 500 {object} app.Response
  179. // @Router /Common/GetAllEnums [get]
  180. // @Tags 通用服务
  181. func GetAllEnums(c *gin.Context) {
  182. appG := app.Gin{C: c}
  183. // 获取请求参数
  184. var req GetAllEnumsReq
  185. if err := appG.C.ShouldBindQuery(&req); err != nil {
  186. logger.GetLogger().Errorf("GetAllEnums failed: %s", err.Error())
  187. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  188. return
  189. }
  190. enums, err := models.GetEnums(req.Autoid)
  191. if err != nil {
  192. // 查询失败
  193. logger.GetLogger().Errorf("GetAllEnums failed: %s", err.Error())
  194. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  195. return
  196. }
  197. // 查询成功
  198. // logger.GetLogger().Debugln("GetAllEnums successed: %v", imageConfigs)
  199. appG.Response(http.StatusOK, e.SUCCESS, enums)
  200. }
  201. // GetServerTime 获取服务器时间
  202. // @Summary 获取服务器时间
  203. // @Produce json
  204. // @Success 200 {object} app.Response
  205. // @Failure 500 {object} app.Response
  206. // @Router /Common/GetServerTime [get]
  207. // @Tags 通用服务
  208. func GetServerTime(c *gin.Context) {
  209. appG := app.Gin{C: c}
  210. rst, err := models.GetServerTime()
  211. if err != nil {
  212. // 查询失败
  213. logger.GetLogger().Errorf("GetServerTime failed: %s", err.Error())
  214. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  215. return
  216. }
  217. // 查询成功
  218. logger.GetLogger().Debugln("GetServerTime successed: %v", rst)
  219. appG.Response(http.StatusOK, e.SUCCESS, rst)
  220. }