chart_collect_stat.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package controllers
  2. import (
  3. "eta/eta_forum_admin/models"
  4. "eta/eta_forum_admin/models/chart_collect"
  5. "eta/eta_forum_admin/models/eta_business"
  6. "eta/eta_forum_admin/utils"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. "strconv"
  9. "strings"
  10. "time"
  11. )
  12. type ChartCollectStatController struct {
  13. BaseAuthController
  14. }
  15. // UserStat
  16. // @Title 用户纬度统计收藏数据
  17. // @Description 用户纬度统计收藏数据
  18. // @Success 200 {object} data_manage.EdbClassifyListResp
  19. // @router /stat/user [get]
  20. func (this *ChartCollectStatController) UserStat() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. // 默认查一级分类和一级分类下的指标信息,
  27. // 如果是 子级分类,查询该子级分类的下一级分类和指标信息
  28. // 增加标识判断是文件夹还是指标列表
  29. startDate := this.GetString("StartDate")
  30. endDate := this.GetString("EndDate")
  31. etaBusinessIds := this.GetString("EtaBusinessIds")
  32. pageSize, _ := this.GetInt("PageSize")
  33. currentIndex, _ := this.GetInt("CurrentIndex")
  34. sortType := this.GetString("SortType")
  35. sortParam := this.GetString("SortParam")
  36. var startSize int
  37. if pageSize <= 0 {
  38. pageSize = utils.PageSize20
  39. }
  40. if currentIndex <= 0 {
  41. currentIndex = 1
  42. }
  43. startSize = paging.StartIndex(currentIndex, pageSize)
  44. var condition string
  45. var pars []interface{}
  46. if etaBusinessIds != "" {
  47. businessIdsSlice := make([]int, 0)
  48. businessIds := strings.Split(etaBusinessIds, ",")
  49. if len(businessIds) == 0 {
  50. br.Msg = "请选择正确的商家"
  51. return
  52. }
  53. for _, id := range businessIds {
  54. if id != "" {
  55. adminIdInt, e := strconv.Atoi(id)
  56. if e != nil {
  57. br.Msg = "请选择正确的商家"
  58. return
  59. }
  60. businessIdsSlice = append(businessIdsSlice, adminIdInt)
  61. }
  62. }
  63. if len(businessIdsSlice) > 0 {
  64. condition += ` AND eta_business_id IN (` + utils.GetOrmInReplace(len(businessIdsSlice)) + `) `
  65. pars = append(pars, businessIdsSlice)
  66. }
  67. }
  68. if startDate != "" {
  69. // 校验日期格式
  70. _, err := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
  71. if err != nil {
  72. br.Msg = "请选择正确的开始日期"
  73. return
  74. }
  75. condition += ` AND collect_date >= ? `
  76. pars = append(pars, startDate)
  77. }
  78. if endDate != "" {
  79. // 校验日期格式
  80. endTime, err := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
  81. if err != nil {
  82. br.Msg = "请选择正确的结束日期"
  83. return
  84. }
  85. condition += ` AND collect_date < ? `
  86. nextDate := endTime.AddDate(0, 0, 1).Format(utils.FormatDate)
  87. pars = append(pars, nextDate)
  88. }
  89. order := ""
  90. if sortParam == "LastCollectChartTime" {
  91. if sortType == "desc" || sortType == "asc" {
  92. order = " last_collect_chart_time " + sortType
  93. }
  94. }
  95. statObj := new(chart_collect.UserCollectChartStat)
  96. total, err := statObj.GetCountByCondition(condition, pars)
  97. if err != nil {
  98. br.Msg = "获取失败"
  99. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  100. return
  101. }
  102. page := paging.GetPaging(currentIndex, pageSize, total)
  103. resp := new(chart_collect.UserStatListResp)
  104. list := make([]*chart_collect.UserCollectChartStatItem, 0)
  105. if total == 0 {
  106. resp.List = list
  107. resp.Paging = page
  108. br.Ret = 200
  109. br.Success = true
  110. br.Msg = "获取成功"
  111. br.Data = resp
  112. return
  113. }
  114. list, err = statObj.GetPageListByCondition(condition, pars, order, startSize, pageSize)
  115. if err != nil {
  116. br.Msg = "获取失败"
  117. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  118. return
  119. }
  120. // 查找商户信息
  121. businessCodeStr := make([]string, 0)
  122. businessCodeMap := make(map[string]string)
  123. for _, v := range list {
  124. businessCodeStr = append(businessCodeStr, v.BusinessCode)
  125. }
  126. obj := new(eta_business.EtaBusiness)
  127. condition1 := " AND business_code IN (" + utils.GetOrmInReplace(len(businessCodeStr)) + ") "
  128. var pars1 []interface{}
  129. pars1 = append(pars1, businessCodeStr)
  130. businessList, err := obj.GetItemsByCondition(condition1, pars1, []string{"business_code", "business_name"}, "")
  131. if err != nil {
  132. br.Msg = "获取失败"
  133. br.ErrMsg = "获取商户信息失败,Err:" + err.Error()
  134. return
  135. }
  136. for _, v := range businessList {
  137. businessCodeMap[v.BusinessCode] = v.BusinessName
  138. }
  139. for _, v := range list {
  140. if businessName, ok := businessCodeMap[v.BusinessCode]; ok {
  141. v.BusinessName = businessName
  142. }
  143. }
  144. resp.List = list
  145. resp.Paging = page
  146. br.Ret = 200
  147. br.Success = true
  148. br.Msg = "获取成功"
  149. br.Data = resp
  150. }
  151. // ChartStat
  152. // @Title 图表纬度统计收藏数据
  153. // @Description 图表纬度统计收藏数据
  154. // @Success 200 {object} data_manage.EdbClassifyListResp
  155. // @router /stat/chart [get]
  156. func (this *ChartCollectStatController) ChartStat() {
  157. br := new(models.BaseResponse).Init()
  158. defer func() {
  159. this.Data["json"] = br
  160. this.ServeJSON()
  161. }()
  162. statObj := new(chart_collect.ChartCollectStat)
  163. resp := new(chart_collect.ChartStatListResp)
  164. list, err := statObj.GetChartInfoStatusNum()
  165. if err != nil {
  166. br.Msg = "获取失败"
  167. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  168. return
  169. }
  170. if len(list) == 0 {
  171. resp.List = make([]*chart_collect.ChartCollectChartStatItem, 0)
  172. br.Ret = 200
  173. br.Success = true
  174. br.Msg = "获取成功"
  175. br.Data = resp
  176. return
  177. }
  178. resp.List = list
  179. br.Ret = 200
  180. br.Success = true
  181. br.Msg = "获取成功"
  182. br.Data = resp
  183. }