chart_info.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_forum_hub/models"
  5. "eta/eta_forum_hub/services"
  6. "eta/eta_forum_hub/utils"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. "strings"
  9. "time"
  10. )
  11. type ChartInfoController struct {
  12. BaseAuthController
  13. }
  14. // Update
  15. // @Title 图表-更新
  16. // @Description 图表-更新
  17. // @Param request body data_manage.AddChartReq true "type json string"
  18. // @Success 200 {object} data_manage.AddChartInfoResp
  19. // @router /update [post]
  20. func (this *ChartInfoController) Update() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. /*deleteCache := true
  27. cacheKey := "CACHE_CHART_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
  28. defer func() {
  29. if deleteCache {
  30. utils.Rc.Delete(cacheKey)
  31. }
  32. }()
  33. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  34. deleteCache = false
  35. br.Msg = "系统处理中,请稍后重试!"
  36. br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
  37. return
  38. }*/
  39. var req models.AddChartReq
  40. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  41. if err != nil {
  42. br.Msg = "参数解析异常!"
  43. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  44. return
  45. }
  46. if req.ChartInfo == nil {
  47. br.Msg = "请选择图表"
  48. return
  49. }
  50. if req.ChartInfo.ChartInfoId <= 0 {
  51. br.Msg = "请选择图表"
  52. return
  53. }
  54. //校验图表名称是否重复
  55. req.ChartInfo.ChartName = strings.Trim(req.ChartInfo.ChartName, " ")
  56. if req.ChartInfo.ChartName == "" {
  57. br.Msg = "请填写图表名称!"
  58. return
  59. }
  60. if len(req.EdbInfoList) <= 0 {
  61. br.Msg = "指标信息不能为空"
  62. return
  63. }
  64. for _, edbInfo := range req.EdbInfoList {
  65. if edbInfo.EdbName == "" {
  66. br.Msg = "指标名称不能为空"
  67. return
  68. }
  69. }
  70. if len(req.ChartEdbMapping) <= 0 {
  71. br.Msg = "图表指标映射不能为空"
  72. return
  73. }
  74. chartInfo, err, errMsg, _ := services.UpdateChartInfoAndEdbInfo(&req, 0, "")
  75. if err != nil {
  76. br.Msg = errMsg
  77. br.ErrMsg = err.Error()
  78. return
  79. }
  80. br.Ret = 200
  81. br.Success = true
  82. br.Msg = "保存成功"
  83. br.Data = models.AddChartInfoResp{
  84. ChartInfoId: chartInfo.ChartInfoId,
  85. UniqueCode: chartInfo.UniqueCode,
  86. ChartType: chartInfo.ChartType,
  87. }
  88. return
  89. }
  90. // Save
  91. // @Title 图表-保存
  92. // @Description 图表-保存
  93. // @Param request body data_manage.AddChartReq true "type json string"
  94. // @Success 200 {object} data_manage.AddChartInfoResp
  95. // @router /save [post]
  96. func (this *ChartInfoController) Save() {
  97. br := new(models.BaseResponse).Init()
  98. defer func() {
  99. this.Data["json"] = br
  100. this.ServeJSON()
  101. }()
  102. var req models.AddChartReq
  103. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  104. if err != nil {
  105. br.Msg = "参数解析异常!"
  106. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  107. return
  108. }
  109. if req.ChartInfo == nil {
  110. br.Msg = "请选择图表"
  111. return
  112. }
  113. //校验图表名称是否重复
  114. req.ChartInfo.ChartName = strings.Trim(req.ChartInfo.ChartName, " ")
  115. if req.ChartInfo.ChartName == "" {
  116. br.Msg = "请填写图表名称!"
  117. return
  118. }
  119. if len(req.EdbInfoList) <= 0 {
  120. br.Msg = "指标信息不能为空"
  121. return
  122. }
  123. for _, edbInfo := range req.EdbInfoList {
  124. if edbInfo.EdbName == "" {
  125. br.Msg = "指标名称不能为空"
  126. return
  127. }
  128. }
  129. if len(req.ChartEdbMapping) <= 0 {
  130. br.Msg = "图表指标映射不能为空"
  131. return
  132. }
  133. deleteCache := true
  134. cacheKey := "eta_forum_hub:CACHE_CHART_INFO_ADD:" + req.ChartInfo.ChartName
  135. defer func() {
  136. if deleteCache {
  137. utils.Rc.Delete(cacheKey)
  138. }
  139. }()
  140. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  141. deleteCache = false
  142. br.Msg = "系统处理中,请稍后重试!"
  143. br.ErrMsg = "系统处理中,请稍后重试!;data:" + string(this.Ctx.Input.RequestBody)
  144. return
  145. }
  146. chartInfo, err, errMsg, _ := services.AddChartInfo(&req, 0, "")
  147. if err != nil {
  148. br.Msg = errMsg
  149. br.ErrMsg = err.Error()
  150. return
  151. }
  152. br.Ret = 200
  153. br.Success = true
  154. br.Msg = "保存成功"
  155. br.Data = models.AddChartInfoResp{
  156. ChartInfoId: chartInfo.ChartInfoId,
  157. UniqueCode: chartInfo.UniqueCode,
  158. ChartType: chartInfo.ChartType,
  159. }
  160. return
  161. }
  162. // Delete
  163. // @Title 图表-删除
  164. // @Description 图表-删除
  165. // @Param request body data_manage.DeleteChartReq true "type json string"
  166. // @Success 200 {object}
  167. // @router /delete [post]
  168. func (this *ChartInfoController) Delete() {
  169. br := new(models.BaseResponse).Init()
  170. defer func() {
  171. this.Data["json"] = br
  172. this.ServeJSON()
  173. }()
  174. var req models.DeleteChartReq
  175. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  176. if err != nil {
  177. br.Msg = "参数解析异常!"
  178. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  179. return
  180. }
  181. if req.ChartInfoId <= 0 {
  182. br.Msg = "请选择图表"
  183. return
  184. }
  185. err, errMsg := services.DeleteChart(req.ChartInfoId)
  186. if err != nil {
  187. br.Msg = errMsg
  188. br.ErrMsg = err.Error()
  189. return
  190. }
  191. br.Ret = 200
  192. br.Success = true
  193. br.Msg = "删除成功"
  194. }
  195. // UserChartList
  196. // @Title 根据用户权限获取图表分类
  197. // @Description 根据用户权限获取图表分类
  198. // @Param Keyword query string true "关键词搜索"
  199. // @Success 200 {object} models.ChartClassifyListResp
  200. // @router /user/chart_list [get]
  201. func (this *ChartInfoController) UserChartList() {
  202. br := new(models.BaseResponse).Init()
  203. defer func() {
  204. this.Data["json"] = br
  205. this.ServeJSON()
  206. }()
  207. resp := new(models.ChartListResp)
  208. pageSize, _ := this.GetInt("PageSize")
  209. currentIndex, _ := this.GetInt("CurrentIndex")
  210. userMobile := this.GetString("UserMobile")
  211. businessCode := this.GetString("BusinessCode")
  212. userTelAreaCode := this.GetString("UserTelAreaCode")
  213. keyword := this.GetString("Keyword")
  214. if userMobile == "" {
  215. br.Msg = "请选择用户"
  216. return
  217. }
  218. if businessCode == "" {
  219. br.Msg = "请选择商户"
  220. return
  221. }
  222. var startSize int
  223. if pageSize <= 0 {
  224. pageSize = utils.PageSize20
  225. }
  226. if currentIndex <= 0 {
  227. currentIndex = 1
  228. }
  229. startSize = utils.StartIndex(currentIndex, pageSize)
  230. // 获取用户信息和用户权限
  231. userInfo, err := models.GetUserByBusinessCodeAndMobile(businessCode, userMobile, userTelAreaCode)
  232. if err != nil {
  233. if err.Error() == utils.ErrNoRow() {
  234. br.Msg = "用户不存在"
  235. return
  236. }
  237. br.Msg = "获取用户信息失败"
  238. br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
  239. return
  240. }
  241. //获取用户有权限的分类ID
  242. permissionClassifyIds, err := services.GetPermissionClassifyIdByUserId(userInfo.UserId)
  243. if err != nil {
  244. br.Msg = "获取用户权限失败"
  245. br.ErrMsg = "获取用户权限失败,Err:" + err.Error()
  246. return
  247. }
  248. condition := ""
  249. pars := make([]interface{}, 0)
  250. allChartInfo := make([]*models.ChartInfo, 0)
  251. page := paging.GetPaging(currentIndex, pageSize, 0)
  252. var total int64
  253. if keyword != "" {
  254. allChartInfo, total, err = services.EsSearchChartInfo(keyword, []int{}, []int{utils.CHART_SOURCE_DEFAULT}, permissionClassifyIds, startSize, pageSize)
  255. if err != nil {
  256. br.Msg = "获取失败"
  257. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  258. return
  259. }
  260. } else {
  261. condition += " AND chart_classify_id in (" + utils.GetOrmInReplace(len(permissionClassifyIds)) + ")"
  262. pars = append(pars, permissionClassifyIds)
  263. allChartInfo, err = models.GetChartInfoByConditionPage(utils.CHART_SOURCE_DEFAULT, condition, pars, startSize, pageSize)
  264. if err != nil && err.Error() != utils.ErrNoRow() {
  265. br.Msg = "获取失败"
  266. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  267. return
  268. }
  269. total, err = models.GetChartInfoTotalByCondition(utils.CHART_SOURCE_DEFAULT, condition, pars)
  270. if err != nil {
  271. br.Msg = "获取失败"
  272. br.ErrMsg = "获取图表总数失败,Err:" + err.Error()
  273. return
  274. }
  275. }
  276. page = paging.GetPaging(currentIndex, pageSize, int(total))
  277. resp.ChartInfoList = allChartInfo
  278. resp.Paging = page
  279. br.Ret = 200
  280. br.Success = true
  281. br.Msg = "获取成功"
  282. br.Data = resp
  283. }