base_from_ly.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. // @Author gmy 2024/8/13 16:01:00
  2. package controllers
  3. import (
  4. "encoding/json"
  5. "eta/eta_index_lib/logic"
  6. "eta/eta_index_lib/models"
  7. "eta/eta_index_lib/services"
  8. "eta/eta_index_lib/utils"
  9. "strconv"
  10. "time"
  11. )
  12. type BaseFromLyController struct {
  13. BaseAuthController
  14. }
  15. // Add
  16. // @Title 新增粮油商务网指标
  17. // @Description 新增粮油商务网指标
  18. // @router /add [post]
  19. func (this *BaseFromLyController) Add() {
  20. br := new(models.BaseResponse).Init()
  21. var cacheKey string
  22. defer func() {
  23. utils.Rc.Delete(cacheKey)
  24. this.Data["json"] = br
  25. this.ServeJSON()
  26. }()
  27. source := utils.DATA_SOURCE_LY
  28. var req models.AddEdbInfoReq
  29. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  30. if err != nil {
  31. br.Msg = "参数解析异常!"
  32. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  33. return
  34. }
  35. if req.EdbCode == "" {
  36. br.Msg = "请输入指标编码!"
  37. br.ErrMsg = "请输入指标编码,指标编码为空"
  38. return
  39. }
  40. cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode
  41. if !utils.Rc.IsExist(cacheKey) {
  42. utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
  43. err = models.AddEdbDataFromLy(req.EdbCode)
  44. if err != nil {
  45. br.Msg = "获取指标信息失败!"
  46. br.ErrMsg = "获取指标信息失败 AddEdbDataFromSci99,Err:" + err.Error()
  47. return
  48. }
  49. br.Ret = 200
  50. br.Success = true
  51. br.Msg = "获取成功"
  52. } else {
  53. br.Ret = 501
  54. br.Success = true
  55. br.Msg = "系统处理中,请稍后重试"
  56. }
  57. }
  58. // Refresh
  59. // @Title 刷新粮油商务网指标接口
  60. // @Description 刷新粮油商务网指标接口
  61. // @Success 200 {object} models.RefreshEdbInfoReq
  62. // @router /refresh [post]
  63. func (this *BaseFromLyController) Refresh() {
  64. br := new(models.BaseResponse).Init()
  65. var cacheKey string
  66. defer func() {
  67. if br.ErrMsg == "" {
  68. br.IsSendEmail = false
  69. }
  70. _ = utils.Rc.Delete(cacheKey)
  71. this.Data["json"] = br
  72. this.ServeJSON()
  73. }()
  74. source := utils.DATA_SOURCE_LY
  75. var req models.RefreshEdbInfoReq
  76. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  77. if err != nil {
  78. br.Msg = "参数解析异常!"
  79. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  80. return
  81. }
  82. if req.EdbCode == "" {
  83. br.Msg = "请输入指标编码!"
  84. br.ErrMsg = "请输入指标编码,指标编码为空"
  85. return
  86. }
  87. if req.EdbInfoId <= 0 {
  88. br.Msg = "请输入指标ID!"
  89. br.ErrMsg = "请输入指标ID"
  90. return
  91. }
  92. // 获取指标详情
  93. edbInfo, err := models.GetEdbInfoByEdbCode(source, req.EdbCode)
  94. if err != nil {
  95. br.Msg = "指标不存在!"
  96. br.ErrMsg = "指标不存在"
  97. return
  98. }
  99. cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(source) + "_" + req.EdbCode
  100. if utils.Rc.IsExist(cacheKey) {
  101. br.Ret = 501
  102. br.Success = true
  103. br.Msg = "系统处理中,请稍后重试"
  104. return
  105. }
  106. dataUpdateTime := time.Now().Format(utils.FormatDateTime)
  107. utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
  108. err = models.RefreshEdbDataFromBloomberg(req.EdbInfoId, req.EdbCode, req.StartDate)
  109. if err != nil && err.Error() != utils.ErrNoRow() {
  110. br.Msg = "刷新指标信息失败!"
  111. br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromBloomberg,Err:" + err.Error()
  112. return
  113. }
  114. // 更新指标最大最小值
  115. erDataUpdateDate, err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate(edbInfo, dataUpdateTime)
  116. if err != nil {
  117. br.Msg = errMsg
  118. br.ErrMsg = err.Error()
  119. return
  120. }
  121. // 添加指标刷新成功日志
  122. if erDataUpdateDate != "" {
  123. _ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 1, "", 0, 0)
  124. } else {
  125. _ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 2, "未刷新到数据", 0, 0)
  126. }
  127. // 更新ES
  128. go logic.UpdateEs(edbInfo.EdbInfoId)
  129. br.Ret = 200
  130. br.Success = true
  131. br.Msg = "获取成功"
  132. }
  133. // GetLyClassifyByName
  134. // @Title 获取分类
  135. // @Description 获取分类
  136. // @Success 200 {object} models.BaseFromLyClassify
  137. // @router /get/ly/classify/by/name [get]
  138. func (this *BaseFromLyController) GetLyClassifyByName() {
  139. br := new(models.BaseResponse).Init()
  140. var cacheKey string
  141. defer func() {
  142. if br.ErrMsg == "" {
  143. br.IsSendEmail = false
  144. }
  145. _ = utils.Rc.Delete(cacheKey)
  146. this.Data["json"] = br
  147. this.ServeJSON()
  148. }()
  149. categoryName := this.GetString("CategoryName")
  150. if categoryName == "" {
  151. br.Msg = "请输入分类!"
  152. br.ErrMsg = "请输入分类"
  153. return
  154. }
  155. lyClassify, err := models.GetLyClassifyByName(categoryName)
  156. if err != nil {
  157. return
  158. }
  159. br.Ret = 200
  160. br.Success = true
  161. br.Data = lyClassify
  162. br.Msg = "获取成功"
  163. }
  164. // GetLyIndexRecordByUrl
  165. // @Title 根据url获取指标已读取记录
  166. // @Description 根据url获取指标已读取记录
  167. // @Success 200 {object} models.BaseFromLyIndexRecord
  168. // @router /get/ly/index/record/by/url [get]
  169. func (this *BaseFromLyController) GetLyIndexRecordByUrl() {
  170. br := new(models.BaseResponse).Init()
  171. var cacheKey string
  172. defer func() {
  173. if br.ErrMsg == "" {
  174. br.IsSendEmail = false
  175. }
  176. _ = utils.Rc.Delete(cacheKey)
  177. this.Data["json"] = br
  178. this.ServeJSON()
  179. }()
  180. url := this.GetString("Url")
  181. if url == "" {
  182. br.Msg = "请输入地址链接!"
  183. br.ErrMsg = "请输入地址链接"
  184. return
  185. }
  186. lyIndexRecord, err := models.GetLyIndexRecordByUrl(url)
  187. if err != nil {
  188. return
  189. }
  190. br.Ret = 200
  191. br.Success = true
  192. br.Data = lyIndexRecord
  193. br.Msg = "获取成功"
  194. }
  195. // AddLyIndexRecord
  196. // @Title 维护指标数据读取进度到数据库
  197. // @Description 维护指标数据读取进度到数据库
  198. // @Success 200 string "处理成功"
  199. // @router /add/ly/index/record [post]
  200. func (this *BaseFromLyController) AddLyIndexRecord() {
  201. br := new(models.BaseResponse).Init()
  202. var cacheKey string
  203. defer func() {
  204. if br.ErrMsg == "" {
  205. br.IsSendEmail = false
  206. }
  207. _ = utils.Rc.Delete(cacheKey)
  208. this.Data["json"] = br
  209. this.ServeJSON()
  210. }()
  211. var req models.BaseFromLyIndexRecord
  212. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  213. if err != nil {
  214. br.Msg = "参数解析异常!"
  215. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  216. return
  217. }
  218. _, err = models.AddLyIndexRecord(&req)
  219. if err != nil {
  220. return
  221. }
  222. br.Ret = 200
  223. br.Success = true
  224. br.Msg = "处理成功"
  225. }
  226. // AddLyDataList
  227. // @Title 新增指标数据
  228. // @Description 新增指标数据列表
  229. // @Success 200 string "处理成功"
  230. // @router /add/ly/data/list [post]
  231. func (this *BaseFromLyController) AddLyDataList() {
  232. br := new(models.BaseResponse).Init()
  233. var cacheKey string
  234. defer func() {
  235. if br.ErrMsg == "" {
  236. br.IsSendEmail = false
  237. }
  238. _ = utils.Rc.Delete(cacheKey)
  239. this.Data["json"] = br
  240. this.ServeJSON()
  241. }()
  242. var req []models.BaseFromLyData
  243. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  244. if err != nil {
  245. br.Msg = "参数解析异常!"
  246. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  247. return
  248. }
  249. err = models.AddLyDataList(req)
  250. if err != nil {
  251. return
  252. }
  253. br.Ret = 200
  254. br.Success = true
  255. br.Msg = "处理成功"
  256. }
  257. // AddLyIndex
  258. // @Title 新增指标
  259. // @Description 新增指标
  260. // @Success 200 string "处理成功"
  261. // @router /add/ly/index [post]
  262. func (this *BaseFromLyController) AddLyIndex() {
  263. br := new(models.BaseResponse).Init()
  264. var cacheKey string
  265. defer func() {
  266. if br.ErrMsg == "" {
  267. br.IsSendEmail = false
  268. }
  269. _ = utils.Rc.Delete(cacheKey)
  270. this.Data["json"] = br
  271. this.ServeJSON()
  272. }()
  273. var req models.BaseFromLyIndex
  274. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  275. if err != nil {
  276. br.Msg = "参数解析异常!"
  277. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  278. return
  279. }
  280. _, err = models.AddLyIndex(&req)
  281. if err != nil {
  282. return
  283. }
  284. br.Ret = 200
  285. br.Success = true
  286. br.Msg = "处理成功"
  287. }
  288. // GetLyDataByIndexIdAndDataTime
  289. // @Title 根据指标id和时间获取指标数据
  290. // @Description 根据指标id和时间获取指标数据
  291. // @Success 200 {object} models.BaseFromLyData
  292. // @router /get/ly/data/by/index/id/and/data/time [get]
  293. func (this *BaseFromLyController) GetLyDataByIndexIdAndDataTime() {
  294. br := new(models.BaseResponse).Init()
  295. var cacheKey string
  296. defer func() {
  297. if br.ErrMsg == "" {
  298. br.IsSendEmail = false
  299. }
  300. _ = utils.Rc.Delete(cacheKey)
  301. this.Data["json"] = br
  302. this.ServeJSON()
  303. }()
  304. indexId, err := this.GetInt("IndexId")
  305. if err != nil {
  306. br.Msg = "参数解析异常!"
  307. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  308. return
  309. }
  310. if indexId == 0 {
  311. br.Msg = "请输入指标id!"
  312. br.ErrMsg = "请输入指标id"
  313. return
  314. }
  315. dataTime := this.GetString("DataTime")
  316. if dataTime == "" {
  317. br.Msg = "请输入时间!"
  318. br.ErrMsg = "请输入时间"
  319. return
  320. }
  321. lyData, err := models.GetLyDataByIndexIdAndDataTime(indexId, dataTime)
  322. if err != nil {
  323. return
  324. }
  325. br.Ret = 200
  326. br.Success = true
  327. br.Data = lyData
  328. br.Msg = "获取成功"
  329. }
  330. // GetLyDataByIndexIdAndDataTimeYM
  331. // @Title 根据指标id和年月时间获取指标数据
  332. // @Description 根据指标id和年月时间获取指标数据
  333. // @Success 200 {object} models.BaseFromLyData
  334. // @router /get/ly/data/by/index/id/and/data/time/ym [get]
  335. func (this *BaseFromLyController) GetLyDataByIndexIdAndDataTimeYM() {
  336. br := new(models.BaseResponse).Init()
  337. var cacheKey string
  338. defer func() {
  339. if br.ErrMsg == "" {
  340. br.IsSendEmail = false
  341. }
  342. _ = utils.Rc.Delete(cacheKey)
  343. this.Data["json"] = br
  344. this.ServeJSON()
  345. }()
  346. indexId, err := this.GetInt("IndexId")
  347. if err != nil {
  348. br.Msg = "参数解析异常!"
  349. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  350. return
  351. }
  352. if indexId == 0 {
  353. br.Msg = "请输入指标id!"
  354. br.ErrMsg = "请输入指标id"
  355. return
  356. }
  357. yearMonth := this.GetString("YearMonth")
  358. if yearMonth == "" {
  359. br.Msg = "请输入时间!"
  360. br.ErrMsg = "请输入时间"
  361. return
  362. }
  363. lyData, err := models.GetLyDataByIndexIdAndDataTimeYM(indexId, yearMonth)
  364. if err != nil {
  365. return
  366. }
  367. br.Ret = 200
  368. br.Success = true
  369. br.Data = lyData
  370. br.Msg = "获取成功"
  371. }
  372. // UpdateLyDataById
  373. // @Title 更新数据源指标数据
  374. // @Description 更新数据源指标数据
  375. // @Success 200 string "处理成功"
  376. // @router /update/ly/data/by/id [get]
  377. func (this *BaseFromLyController) UpdateLyDataById() {
  378. br := new(models.BaseResponse).Init()
  379. var cacheKey string
  380. defer func() {
  381. if br.ErrMsg == "" {
  382. br.IsSendEmail = false
  383. }
  384. _ = utils.Rc.Delete(cacheKey)
  385. this.Data["json"] = br
  386. this.ServeJSON()
  387. }()
  388. id, err := this.GetInt("Id")
  389. if err != nil {
  390. br.Msg = "参数解析异常!"
  391. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  392. return
  393. }
  394. if id == 0 {
  395. br.Msg = "请输入id!"
  396. br.ErrMsg = "请输入id"
  397. return
  398. }
  399. value, err := this.GetFloat("Value")
  400. if err != nil {
  401. br.Msg = "参数解析异常!"
  402. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  403. return
  404. }
  405. if value == 0 {
  406. br.Msg = "请输入值!"
  407. br.ErrMsg = "请输入值"
  408. return
  409. }
  410. err = models.UpdateLyDataById(id, value)
  411. if err != nil {
  412. return
  413. }
  414. br.Ret = 200
  415. br.Success = true
  416. br.Msg = "处理成功"
  417. }
  418. // UpdateLyEdbDataById
  419. // @Title 更新指标库指标数据
  420. // @Description 更新数据源指标数据
  421. // @Success 200 string "处理成功"
  422. // @router /update/ly/edb/data/by/id [get]
  423. func (this *BaseFromLyController) UpdateLyEdbDataById() {
  424. br := new(models.BaseResponse).Init()
  425. var cacheKey string
  426. defer func() {
  427. if br.ErrMsg == "" {
  428. br.IsSendEmail = false
  429. }
  430. _ = utils.Rc.Delete(cacheKey)
  431. this.Data["json"] = br
  432. this.ServeJSON()
  433. }()
  434. id, err := this.GetInt("Id")
  435. if err != nil {
  436. br.Msg = "参数解析异常!"
  437. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  438. return
  439. }
  440. if id == 0 {
  441. br.Msg = "请输入id!"
  442. br.ErrMsg = "请输入id"
  443. return
  444. }
  445. value, err := this.GetFloat("Value")
  446. if err != nil {
  447. br.Msg = "参数解析异常!"
  448. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  449. return
  450. }
  451. if value == 0 {
  452. br.Msg = "请输入值!"
  453. br.ErrMsg = "请输入值"
  454. return
  455. }
  456. err = models.UpdateLyDataById(id, value)
  457. if err != nil {
  458. return
  459. }
  460. br.Ret = 200
  461. br.Success = true
  462. br.Msg = "处理成功"
  463. }