biz.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package apis
  2. import (
  3. "go-admin/app/observe/service"
  4. "go-admin/app/observe/service/dto"
  5. "go-admin/config"
  6. "go-admin/utils"
  7. "net/http"
  8. "github.com/gin-gonic/gin"
  9. )
  10. type Biz struct {
  11. utils.OtApi
  12. }
  13. // List 获取Biz列表
  14. func (e Biz) List(c *gin.Context) {
  15. req := dto.BizListReq{}
  16. svc := service.Biz{}
  17. if err := e.Init(c, &req, &svc.OtService); err != nil {
  18. return
  19. }
  20. resp := make([]dto.BizListResp, 0)
  21. var count int64
  22. if err := svc.List(&req, &resp, &count); err != nil {
  23. e.Error(http.StatusInternalServerError, err, err.Error())
  24. return
  25. }
  26. e.PageOK(resp, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  27. }
  28. // Stats 获取单个业务的统计信息
  29. func (e Biz) Stats(c *gin.Context) {
  30. req := dto.BizStatsReq{}
  31. svc := service.Biz{}
  32. if err := e.Init(c, &req, &svc.OtService); err != nil {
  33. return
  34. }
  35. resp := new(dto.BizStatsResp)
  36. if config.ExtConfig.ClickhouseMetrics {
  37. if err := svc.StatsFromClickhouse(&req, resp); err != nil {
  38. e.Error(http.StatusInternalServerError, err, err.Error())
  39. return
  40. }
  41. } else {
  42. if err := svc.Stats(&req, resp); err != nil {
  43. e.Error(http.StatusInternalServerError, err, err.Error())
  44. return
  45. }
  46. }
  47. e.OK(resp, "success")
  48. }
  49. // Detail 获取Biz详情列表
  50. func (e Biz) Detail(c *gin.Context) {
  51. req := dto.BizDetailReq{}
  52. svc := service.Biz{}
  53. if err := e.Init(c, &req, &svc.OtService); err != nil {
  54. return
  55. }
  56. resp := make([]dto.BizDetailResp, 0)
  57. count := int64(0)
  58. if err := svc.Detail(&req, &resp, &count); err != nil {
  59. e.Error(http.StatusInternalServerError, err, err.Error())
  60. return
  61. }
  62. e.PageOK(resp, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  63. }
  64. func (e Biz) Graph(c *gin.Context) {
  65. req := dto.BizGraphReq{}
  66. svc := service.Biz{}
  67. if err := e.Init(c, &req, &svc.OtService); err != nil {
  68. return
  69. }
  70. resp := []dto.BizGraphResp{}
  71. if err := svc.Graph(&req, &resp); err != nil {
  72. e.Error(http.StatusInternalServerError, err, err.Error())
  73. return
  74. }
  75. e.OK(resp, "success")
  76. }
  77. func (e Biz) GraphStats(c *gin.Context) {
  78. req := dto.BizGraphStatsReq{}
  79. svc := service.Biz{}
  80. if err := e.Init(c, &req, &svc.OtService); err != nil {
  81. return
  82. }
  83. resp := dto.BizGraphStatsResp{}
  84. if err := svc.GraphStats(&req, &resp); err != nil {
  85. e.Error(http.StatusInternalServerError, err, err.Error())
  86. return
  87. }
  88. e.OK(resp, "success")
  89. }
  90. // Digits 数字视图
  91. func (e Biz) Digits(c *gin.Context) {
  92. req := dto.BizDigitsReq{}
  93. svc := service.Biz{}
  94. if err := e.Init(c, &req, &svc.OtService); err != nil {
  95. return
  96. }
  97. resp := dto.BizDigitsResp{}
  98. if config.ExtConfig.ClickhouseMetrics {
  99. if err := svc.DigitsFromClickhouse(&req, &resp); err != nil {
  100. e.Error(http.StatusInternalServerError, err, err.Error())
  101. return
  102. }
  103. } else {
  104. if err := svc.Digits(&req, &resp); err != nil {
  105. e.Error(http.StatusInternalServerError, err, err.Error())
  106. return
  107. }
  108. }
  109. e.OK(resp, "success")
  110. }
  111. // Mark 标记
  112. func (e Biz) Mark(c *gin.Context) {
  113. req := dto.BizMarkReq{}
  114. svc := service.Biz{}
  115. if err := e.Init(c, &req, &svc.OtService); err != nil {
  116. return
  117. }
  118. if err := svc.Mark(&req); err != nil {
  119. e.Error(http.StatusInternalServerError, err, err.Error())
  120. return
  121. }
  122. e.OK("", "success")
  123. }
  124. // Favor 收藏
  125. func (e Biz) Favor(c *gin.Context) {
  126. req := dto.BizFavorReq{}
  127. svc := service.Biz{}
  128. if err := e.Init(c, &req, &svc.OtService); err != nil {
  129. return
  130. }
  131. if err := svc.Favor(&req); err != nil {
  132. e.Error(http.StatusInternalServerError, err, err.Error())
  133. return
  134. }
  135. e.OK("", "success")
  136. }
  137. // Delete 删除
  138. func (e Biz) Delete(c *gin.Context) {
  139. req := dto.BizDeleteReq{}
  140. svc := service.Biz{}
  141. if err := e.Init(c, &req, &svc.OtService); err != nil {
  142. return
  143. }
  144. if err := svc.Delete(&req); err != nil {
  145. e.Error(http.StatusInternalServerError, err, err.Error())
  146. return
  147. }
  148. e.OK("", "success")
  149. }
  150. // 生成业务列表
  151. func (e Biz) GenList(c *gin.Context) {
  152. svc := service.Biz{}
  153. if err := e.MakeContext(c).MakeDB().MakeService(&svc.OtService).Errors; err != nil {
  154. e.Error(http.StatusInternalServerError, err, err.Error())
  155. return
  156. }
  157. if err := svc.GenGraph(); err != nil {
  158. e.Error(http.StatusInternalServerError, err, err.Error())
  159. return
  160. }
  161. e.OK("", "success")
  162. }
  163. func (e Biz) BasicGuy(c *gin.Context) {
  164. req := dto.BizBasicGuy{}
  165. svc := service.Biz{}
  166. if err := e.Init(c, &req, &svc.OtService); err != nil {
  167. return
  168. }
  169. resp := make(map[string]any)
  170. if err := svc.StatisticBasicGuy(&req, &resp); err != nil {
  171. e.Error(http.StatusInternalServerError, err, err.Error())
  172. return
  173. }
  174. e.OK(resp, "success")
  175. }
  176. // biz结点对应span列表
  177. func (e Biz) NodeSpans(c *gin.Context) {
  178. req := dto.BizNodeSpansReq{}
  179. svc := service.Biz{}
  180. if err := e.Init(c, &req, &svc.OtService); err != nil {
  181. return
  182. }
  183. resp := make([]dto.ServiceSpansResp, 0)
  184. count := int64(0)
  185. if err := svc.NodeSpans(&req, &resp, &count); err != nil {
  186. e.Error(http.StatusInternalServerError, err, err.Error())
  187. return
  188. }
  189. e.PageOK(resp, int(count), req.GetPageIndex(), req.GetPageSize(), "ok")
  190. }
  191. func (e Biz) NodeStats(c *gin.Context) {
  192. req := dto.BizNodeStatsReq{}
  193. svc := service.Biz{}
  194. if err := e.Init(c, &req, &svc.OtService); err != nil {
  195. return
  196. }
  197. resp := dto.BizNodeStatsResp{}
  198. if config.ExtConfig.ClickhouseMetrics {
  199. if err := svc.NodeStatsFromClickhouse(&req, &resp); err != nil {
  200. e.Error(http.StatusInternalServerError, err, err.Error())
  201. return
  202. }
  203. } else {
  204. if err := svc.NodeStats(&req, &resp); err != nil {
  205. e.Error(http.StatusInternalServerError, err, err.Error())
  206. return
  207. }
  208. }
  209. e.OK(resp, "ok")
  210. }
  211. func (e Biz) NodeUpdate(c *gin.Context) {
  212. req := dto.BizNodeUpdateReq{}
  213. svc := service.Biz{}
  214. if err := e.Init(c, &req, &svc.OtService); err != nil {
  215. return
  216. }
  217. if err := svc.NodeUpdate(&req); err != nil {
  218. e.Error(http.StatusInternalServerError, err, err.Error())
  219. return
  220. }
  221. e.OK("", "修改成功")
  222. }
  223. func (e Biz) SlowTop(c *gin.Context) {
  224. req := dto.BizSlowTopReq{}
  225. svc := service.Biz{}
  226. if err := e.Init(c, &req, &svc.OtService); err != nil {
  227. return
  228. }
  229. resp := make([]dto.BizSlowTopResp, 0)
  230. if err := svc.SlowTop(&req, &resp); err != nil {
  231. e.Error(http.StatusInternalServerError, err, err.Error())
  232. return
  233. }
  234. e.OK(resp, "ok")
  235. }