jiayue_index.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package index_data
  2. import (
  3. "eta/eta_bridge/controller/resp"
  4. "eta/eta_bridge/global"
  5. "eta/eta_bridge/models/jiayue"
  6. indexDataReq "eta/eta_bridge/models/request/index_data"
  7. "eta/eta_bridge/models/response"
  8. indexDataService "eta/eta_bridge/services/index_data"
  9. "github.com/gin-gonic/gin"
  10. "github.com/go-playground/validator/v10"
  11. "strings"
  12. )
  13. // JiaYueIndexController 嘉悦指标
  14. type JiaYueIndexController struct{}
  15. // GetIndex
  16. // @Description 获取嘉悦指标信息
  17. // @Success 200 {string} string "获取成功"
  18. // @Router /jiayue/index [post]
  19. func (j *JiaYueIndexController) GetIndex(c *gin.Context) {
  20. var req indexDataReq.JiaYueIndexReq
  21. if e := c.Bind(&req); e != nil {
  22. err, ok := e.(validator.ValidationErrors)
  23. if !ok {
  24. resp.FailData("参数解析失败", "Err:"+e.Error(), c)
  25. return
  26. }
  27. resp.FailData("参数解析失败", err.Translate(global.Trans), c)
  28. return
  29. }
  30. if req.IndexCode == "" {
  31. resp.FailMsg("请输入指标code码", "请输入指标code码", c)
  32. return
  33. }
  34. if req.SourceExtend == "" {
  35. resp.FailMsg("请输入指标来源", "请输入指标来源", c)
  36. return
  37. }
  38. sourceArr := strings.Split(req.SourceExtend, ",")
  39. if len(sourceArr) == 0 {
  40. resp.FailMsg("指标来源有误", "指标来源有误", c)
  41. return
  42. }
  43. data, e := indexDataService.GetIndexFromJiaYue(req.IndexCode, sourceArr)
  44. if e != nil {
  45. resp.FailMsg("获取失败", "获取嘉悦指标信息失败, err: "+e.Error(), c)
  46. return
  47. }
  48. resp.OkData("获取成功", data, c)
  49. return
  50. }
  51. // GetIndexData
  52. // @Description 获取嘉悦指标数据
  53. // @Success 200 {string} string "获取成功"
  54. // @Router /jiayue/index_data [post]
  55. func (j *JiaYueIndexController) GetIndexData(c *gin.Context) {
  56. var req indexDataReq.JiaYueIndexAndDataReq
  57. if e := c.Bind(&req); e != nil {
  58. err, ok := e.(validator.ValidationErrors)
  59. if !ok {
  60. resp.FailData("参数解析失败", "Err:"+e.Error(), c)
  61. return
  62. }
  63. resp.FailData("参数解析失败", err.Translate(global.Trans), c)
  64. return
  65. }
  66. if req.IndexCode == "" {
  67. resp.FailMsg("请输入指标code码", "请输入指标code码", c)
  68. return
  69. }
  70. if req.SourceExtend == "" {
  71. resp.FailMsg("请输入指标来源", "请输入指标来源", c)
  72. return
  73. }
  74. sourceArr := strings.Split(req.SourceExtend, ",")
  75. if len(sourceArr) == 0 {
  76. resp.FailMsg("指标来源有误", "指标来源有误", c)
  77. return
  78. }
  79. data, e := indexDataService.GetIndexAndDataFromJiaYue(req.IndexCode, req.StartDate, req.EndDate, sourceArr)
  80. if e != nil {
  81. resp.FailMsg("获取失败", "获取嘉悦指标数据失败, err: "+e.Error(), c)
  82. return
  83. }
  84. resp.OkData("获取成功", data, c)
  85. return
  86. }
  87. // GetPageIndex
  88. // @Description 获取嘉悦指标列表-分页
  89. // @Success 200 {string} string "获取成功"
  90. // @Router /jiayue/page_index [post]
  91. func (j *JiaYueIndexController) GetPageIndex(c *gin.Context) {
  92. var req indexDataReq.JiaYuePageIndexReq
  93. if e := c.Bind(&req); e != nil {
  94. err, ok := e.(validator.ValidationErrors)
  95. if !ok {
  96. resp.FailData("参数解析失败", "Err:"+e.Error(), c)
  97. return
  98. }
  99. resp.FailData("参数解析失败", err.Translate(global.Trans), c)
  100. return
  101. }
  102. if req.SourceExtend == "" {
  103. resp.FailMsg("请输入指标来源", "请输入指标来源", c)
  104. return
  105. }
  106. sourceArr := strings.Split(req.SourceExtend, ",")
  107. if len(sourceArr) == 0 {
  108. resp.FailMsg("指标来源有误", "指标来源有误", c)
  109. return
  110. }
  111. total, list, err := indexDataService.GetPageIndexesFromJiaYue(req.PageIndex, req.PageSize, sourceArr, req.Keyword, req.Frequency, req.SortField, req.SortRule)
  112. if err != nil {
  113. resp.FailMsg("查询失败", err.Error(), c)
  114. return
  115. }
  116. var data response.JiaYuePageIndexResp
  117. data.Total = total
  118. data.List = list
  119. resp.OkData("操作成功", data, c)
  120. return
  121. }
  122. // GetIndexFrequency
  123. // @Description 获取指标频度列表
  124. // @Success 200 {string} string "获取成功"
  125. // @Router /jiayue/frequency_list [post]
  126. func (j *JiaYueIndexController) GetIndexFrequency(c *gin.Context) {
  127. list, err := jiayue.GetDictFrequency()
  128. if err != nil {
  129. resp.FailMsg("获取失败", err.Error(), c)
  130. return
  131. }
  132. // 过滤一下空的和斜杠
  133. data := make([]string, 0)
  134. for _, v := range list {
  135. if v != "" && v != "/" {
  136. data = append(data, v)
  137. }
  138. }
  139. resp.OkData("获取成功", data, c)
  140. return
  141. }
  142. // GetRecentNewIndex
  143. // @Description 获取最近新增的指标数据
  144. // @Success 200 {string} string "获取成功"
  145. // @Router /jiayue/new_index [post]
  146. func (j *JiaYueIndexController) GetRecentNewIndex(c *gin.Context) {
  147. data, e := indexDataService.GetNewIndexAndDataFromJiaYue()
  148. if e != nil {
  149. resp.FailMsg("获取失败", "获取嘉悦最近新增指标数据失败, err: "+e.Error(), c)
  150. return
  151. }
  152. resp.OkData("获取成功", data, c)
  153. }