edb_terminal.go 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. package data_stat
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. "eta/eta_api/services/data_stat"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. )
  12. // EdbTerminalController 数据源终端管理
  13. type EdbTerminalController struct {
  14. controllers.BaseAuthController
  15. }
  16. // Save
  17. // @Title 保存数据源终端
  18. // @Description 保存数据源终端接口
  19. // @Param request body true data_manage.AddEdbTerminalListReq "type json string"
  20. // @Success 200 string "操作成功"
  21. // @router /terminal/save [post]
  22. func (this *EdbTerminalController) Save() {
  23. br := new(models.BaseResponse).Init()
  24. br.IsSendEmail = false
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. sysUser := this.SysUser
  30. if sysUser == nil {
  31. br.Msg = "请登录"
  32. br.ErrMsg = "请登录,SysUser Is Empty"
  33. br.Ret = 408
  34. return
  35. }
  36. var req *data_manage.AddEdbTerminalListReq
  37. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  38. br.Msg = "参数解析异常!"
  39. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  40. return
  41. }
  42. if req.Name == "" {
  43. br.Msg = "请输入终端名称"
  44. return
  45. }
  46. /*if req.ServerUrl == "" && req.Value == "" {
  47. br.Msg = "请输入终端地址或者token"
  48. return
  49. }*/
  50. if req.Num <= 0 {
  51. br.Msg = "请输入指标数据量"
  52. return
  53. }
  54. if req.Source == 0 {
  55. br.Msg = "请输入终端类型"
  56. return
  57. }
  58. // todo 校验终端数据
  59. errMsg, err := data_stat.SaveEdbTerminal(req)
  60. if err != nil {
  61. br.Msg = errMsg
  62. br.ErrMsg = "SaveEnglishVideoCover ErrMsg:" + err.Error()
  63. return
  64. }
  65. br.Ret = 200
  66. br.Success = true
  67. br.Msg = "操作成功"
  68. return
  69. }
  70. // SetStatus
  71. // @Title 启用/禁用数据源终端
  72. // @Description 启用/禁用数据源终端
  73. // @Param request body true data_manage.SetEdbTerminalStatusReq "type json string"
  74. // @Success 200 string "操作成功"
  75. // @router /terminal/status/set [post]
  76. func (this *EdbTerminalController) SetStatus() {
  77. br := new(models.BaseResponse).Init()
  78. br.IsSendEmail = false
  79. defer func() {
  80. this.Data["json"] = br
  81. this.ServeJSON()
  82. }()
  83. sysUser := this.SysUser
  84. if sysUser == nil {
  85. br.Msg = "请登录"
  86. br.ErrMsg = "请登录,SysUser Is Empty"
  87. br.Ret = 408
  88. return
  89. }
  90. var req *data_manage.SetEdbTerminalStatusReq
  91. if err := json.Unmarshal(this.Ctx.Input.RequestBody, &req); err != nil {
  92. br.Msg = "参数解析异常!"
  93. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  94. return
  95. }
  96. if req.TerminalId <= 0 {
  97. br.Msg = "请选择要操作的终端"
  98. return
  99. }
  100. if req.Status != 1 && req.Status != 2 {
  101. br.Msg = "请选择正确的终端状态"
  102. return
  103. }
  104. errMsg, err := data_stat.SetEdbTerminalStatus(req.TerminalId, req.Status)
  105. if err != nil {
  106. br.Msg = errMsg
  107. br.ErrMsg = "SetEdbTerminalStatus ErrMsg:" + err.Error()
  108. return
  109. }
  110. br.Ret = 200
  111. br.Success = true
  112. br.Msg = "操作成功"
  113. return
  114. }
  115. // List
  116. // @Title 数据源终端列表
  117. // @Description 数据源终端列表接口
  118. // @Success 200 {object} data_manage.EdbTerminalLisResp
  119. // @router /terminal/list [get]
  120. func (this *EdbTerminalController) List() {
  121. br := new(models.BaseResponse).Init()
  122. br.IsSendEmail = false
  123. defer func() {
  124. this.Data["json"] = br
  125. this.ServeJSON()
  126. }()
  127. sysUser := this.SysUser
  128. if sysUser == nil {
  129. br.Msg = "请登录"
  130. br.ErrMsg = "请登录,SysUser Is Empty"
  131. br.Ret = 408
  132. return
  133. }
  134. list, err := data_manage.GetEdbTerminalList()
  135. if err != nil {
  136. br.Msg = "获取终端列表失败"
  137. br.ErrMsg = "获取终端列表失败 ErrMsg:" + err.Error()
  138. return
  139. }
  140. resp := &data_manage.EdbTerminalListResp{
  141. List: list,
  142. }
  143. br.Ret = 200
  144. br.Success = true
  145. br.Msg = "获取成功"
  146. br.Data = resp
  147. }
  148. // TerminalCodeList
  149. // @Title 数据源终端列表
  150. // @Description 数据源终端列表接口
  151. // @Success 200 {object} data_manage.EdbTerminalCodeResp
  152. // @router /terminal/code [get]
  153. func (this *EdbTerminalController) TerminalCodeList() {
  154. br := new(models.BaseResponse).Init()
  155. br.IsSendEmail = false
  156. defer func() {
  157. this.Data["json"] = br
  158. this.ServeJSON()
  159. }()
  160. sysUser := this.SysUser
  161. if sysUser == nil {
  162. br.Msg = "请登录"
  163. br.ErrMsg = "请登录,SysUser Is Empty"
  164. br.Ret = 408
  165. return
  166. }
  167. source, _ := this.GetInt("Source", utils.DATA_SOURCE_MYSTEEL_CHEMICAL)
  168. list, err := data_manage.GetEdbTerminalBySource(source)
  169. if err != nil {
  170. br.Msg = "获取终端列表失败"
  171. br.ErrMsg = "获取终端列表失败 ErrMsg:" + err.Error()
  172. return
  173. }
  174. codeList := make([]*data_manage.EdbTerminalCode, 0)
  175. if len(list) > 0 {
  176. for _, v := range list {
  177. tmp := new(data_manage.EdbTerminalCode)
  178. tmp.TerminalCode = v.TerminalCode
  179. tmp.Source = v.Source
  180. tmp.Name = v.Name
  181. codeList = append(codeList, tmp)
  182. }
  183. }
  184. resp := &data_manage.EdbTerminalCodeResp{
  185. List: codeList,
  186. }
  187. br.Ret = 200
  188. br.Success = true
  189. br.Msg = "获取成功"
  190. br.Data = resp
  191. }
  192. // TerminalIndexDirInfo
  193. // @Title 获取指标终端文件夹信息
  194. // @Description 获取指标终端文件夹信息
  195. // @Success 200 {object} data_manage.EdbTerminalDirInfo
  196. // @router /terminal/index_dir [get]
  197. func (this *EdbTerminalController) TerminalIndexDirInfo() {
  198. br := new(models.BaseResponse).Init()
  199. br.IsSendEmail = false
  200. defer func() {
  201. this.Data["json"] = br
  202. this.ServeJSON()
  203. }()
  204. sysUser := this.SysUser
  205. if sysUser == nil {
  206. br.Msg = "请登录"
  207. br.ErrMsg = "请登录,SysUser Is Empty"
  208. br.Ret = 408
  209. return
  210. }
  211. source, _ := this.GetInt("Source")
  212. indexId, _ := this.GetInt("IndexId")
  213. if source <= 0 || indexId <= 0 {
  214. br.Msg = "请选择数据源和指标ID"
  215. return
  216. }
  217. info := new(data_manage.EdbTerminalDirInfo)
  218. var err error
  219. info, err = data_stat.GetEdbTerminalDirInfo(indexId, source)
  220. if err != nil {
  221. utils.FileLog.Info(fmt.Sprintf("获取终端文件夹信息失败indexId:%d,source:%d,Err:%s", indexId, source, err.Error()))
  222. //br.Msg = "获取终端文件夹信息失败"
  223. //br.ErrMsg = "获取终端文件夹信息失败 ErrMsg:" + err.Error()
  224. //return
  225. }
  226. br.Ret = 200
  227. br.Success = true
  228. br.Msg = "获取成功"
  229. br.Data = info
  230. }
  231. // 查询指标列表
  232. // @Title 查询指标列表接口
  233. // @Description 查询指标列表接口
  234. // @Success Ret=200 获取成功
  235. // @router /terminal/edb_info/list [get]
  236. func (c *EdbTerminalController) GetEdbInfoList() {
  237. br := new(models.BaseResponse).Init()
  238. defer func() {
  239. c.Data["json"] = br
  240. c.ServeJSON()
  241. }()
  242. source, _ := c.GetInt("Source")
  243. terminalCode := c.GetString("TerminalCode")
  244. keyword := c.GetString("Keyword")
  245. pageSize, _ := c.GetInt("PageSize")
  246. currentIndex, _ := c.GetInt("CurrentIndex")
  247. if pageSize <= 0 {
  248. pageSize = utils.PageSize20
  249. }
  250. if currentIndex <= 0 {
  251. currentIndex = 1
  252. }
  253. if source <= 0 {
  254. br.Msg = "来源不能为空"
  255. br.ErrMsg = "来源不能为空"
  256. br.IsSendEmail = false
  257. return
  258. }
  259. condition := ``
  260. var pars []interface{}
  261. condition += " AND e.source = ?"
  262. pars = append(pars, source)
  263. if terminalCode != "" {
  264. condition += " AND e.terminal_code = ?"
  265. pars = append(pars, terminalCode)
  266. }
  267. if keyword != "" {
  268. condition += " AND (e.edb_name like ? or e.edb_code like ?)"
  269. pars = append(pars, "%"+keyword+"%")
  270. pars = append(pars, "%"+keyword+"%")
  271. }
  272. list, err := data_manage.GetSimpleEdbListPageByCondition(condition, pars, currentIndex, pageSize)
  273. if err != nil {
  274. br.Msg = "获取失败"
  275. br.ErrMsg = "获取失败,Err:" + err.Error()
  276. return
  277. }
  278. count, err := data_manage.GetSimpleEdbListCountByCondition(condition, pars)
  279. if err != nil {
  280. br.Msg = "获取失败"
  281. br.ErrMsg = "获取失败,Err:" + err.Error()
  282. return
  283. }
  284. page := paging.GetPaging(currentIndex, pageSize, int(count))
  285. br.Ret = 200
  286. br.Success = true
  287. br.Msg = "获取成功"
  288. br.Data = map[string]interface{}{
  289. "List": list,
  290. "Paging": page,
  291. }
  292. return
  293. }
  294. // 设置指标终端
  295. // @Title 设置指标终端
  296. // @Description 设置指标终端
  297. // @Success 200 string "操作成功"
  298. // @router /terminal/edb_info/set [post]
  299. func (c *EdbTerminalController) SetEdbInfoTerminal() {
  300. br := new(models.BaseResponse).Init()
  301. br.IsSendEmail = false
  302. defer func() {
  303. c.Data["json"] = br
  304. c.ServeJSON()
  305. }()
  306. sysUser := c.SysUser
  307. if sysUser == nil {
  308. br.Msg = "请登录"
  309. br.ErrMsg = "请登录,SysUser Is Empty"
  310. br.Ret = 408
  311. return
  312. }
  313. var req *data_manage.SetEdbInfoTerminalReq
  314. if err := json.Unmarshal(c.Ctx.Input.RequestBody, &req); err != nil {
  315. br.Msg = "参数解析异常!"
  316. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  317. return
  318. }
  319. if req.Source <= 0 {
  320. br.Msg = "来源不能为空"
  321. br.ErrMsg = "来源不能为空"
  322. return
  323. }
  324. if req.TerminalCode == "" {
  325. br.Msg = "终端编码不能为空"
  326. br.ErrMsg = "终端编码不能为空"
  327. return
  328. }
  329. if len(req.EdbInfoIds) <= 0 {
  330. br.Msg = "指标ID不能为空"
  331. br.ErrMsg = "指标ID不能为空"
  332. return
  333. }
  334. // 校验终端编码是否存在
  335. terminal, err := data_manage.GetEdbTerminalByTerminalCode(req.TerminalCode)
  336. if err != nil {
  337. br.Msg = "终端编码不存在"
  338. br.ErrMsg = "终端编码不存在"
  339. return
  340. }
  341. if req.Source != terminal.Source {
  342. br.Msg = "终端来源不匹配"
  343. br.ErrMsg = "终端来源不匹配"
  344. return
  345. }
  346. // 更新指标的终端编码
  347. condition := " and e.edb_info_id in (?) and e.source = ?"
  348. pars := []interface{}{req.EdbInfoIds, req.Source}
  349. count, err := data_manage.GetSimpleEdbListCountByCondition(condition, pars)
  350. if err != nil {
  351. br.Msg = "设置失败"
  352. br.ErrMsg = "设置失败,Err:" + err.Error()
  353. return
  354. }
  355. if count <= 0 {
  356. br.Msg = "指标ID不存在"
  357. br.ErrMsg = "指标ID不存在"
  358. return
  359. }
  360. if len(req.EdbInfoIds) != int(count) {
  361. br.Msg = "指标和数据源不匹配"
  362. br.ErrMsg = "指标和数据源不匹配"
  363. return
  364. }
  365. // 更新指标的终端编码
  366. err = data_manage.UpdateEdbInfoTerminal(req.EdbInfoIds, req.TerminalCode, req.Source)
  367. if err != nil {
  368. br.Msg = "设置失败"
  369. br.ErrMsg = "设置失败,Err:" + err.Error()
  370. return
  371. }
  372. br.Ret = 200
  373. br.Success = true
  374. br.Msg = "设置成功"
  375. return
  376. }