base_from_ly.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  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. indexId, err := models.AddLyIndex(&req)
  281. if err != nil {
  282. return
  283. }
  284. br.Ret = 200
  285. br.Success = true
  286. br.Data = indexId
  287. br.Msg = "处理成功"
  288. }
  289. // GetLyDataByIndexIdAndDataTime
  290. // @Title 根据指标id和时间获取指标数据
  291. // @Description 根据指标id和时间获取指标数据
  292. // @Success 200 {object} models.BaseFromLyData
  293. // @router /get/ly/data/by/index/id/and/data/time [get]
  294. func (this *BaseFromLyController) GetLyDataByIndexIdAndDataTime() {
  295. br := new(models.BaseResponse).Init()
  296. var cacheKey string
  297. defer func() {
  298. if br.ErrMsg == "" {
  299. br.IsSendEmail = false
  300. }
  301. _ = utils.Rc.Delete(cacheKey)
  302. this.Data["json"] = br
  303. this.ServeJSON()
  304. }()
  305. indexId, err := this.GetInt("IndexId")
  306. if err != nil {
  307. br.Msg = "参数解析异常!"
  308. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  309. return
  310. }
  311. if indexId == 0 {
  312. br.Msg = "请输入指标id!"
  313. br.ErrMsg = "请输入指标id"
  314. return
  315. }
  316. dataTime := this.GetString("DataTime")
  317. if dataTime == "" {
  318. br.Msg = "请输入时间!"
  319. br.ErrMsg = "请输入时间"
  320. return
  321. }
  322. lyData, err := models.GetLyDataByIndexIdAndDataTime(indexId, dataTime)
  323. if err != nil {
  324. return
  325. }
  326. br.Ret = 200
  327. br.Success = true
  328. br.Data = lyData
  329. br.Msg = "获取成功"
  330. }
  331. // GetLyDataByIndexIdAndDataTimeYM
  332. // @Title 根据指标id和年月时间获取指标数据
  333. // @Description 根据指标id和年月时间获取指标数据
  334. // @Success 200 {object} models.BaseFromLyData
  335. // @router /get/ly/data/by/index/id/and/data/time/ym [get]
  336. func (this *BaseFromLyController) GetLyDataByIndexIdAndDataTimeYM() {
  337. br := new(models.BaseResponse).Init()
  338. var cacheKey string
  339. defer func() {
  340. if br.ErrMsg == "" {
  341. br.IsSendEmail = false
  342. }
  343. _ = utils.Rc.Delete(cacheKey)
  344. this.Data["json"] = br
  345. this.ServeJSON()
  346. }()
  347. indexId, err := this.GetInt("IndexId")
  348. if err != nil {
  349. br.Msg = "参数解析异常!"
  350. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  351. return
  352. }
  353. if indexId == 0 {
  354. br.Msg = "请输入指标id!"
  355. br.ErrMsg = "请输入指标id"
  356. return
  357. }
  358. yearMonth := this.GetString("YearMonth")
  359. if yearMonth == "" {
  360. br.Msg = "请输入时间!"
  361. br.ErrMsg = "请输入时间"
  362. return
  363. }
  364. lyData, err := models.GetLyDataByIndexIdAndDataTimeYM(indexId, yearMonth)
  365. if err != nil {
  366. return
  367. }
  368. br.Ret = 200
  369. br.Success = true
  370. br.Data = lyData
  371. br.Msg = "获取成功"
  372. }
  373. // UpdateLyDataById
  374. // @Title 更新数据源指标数据
  375. // @Description 更新数据源指标数据
  376. // @Success 200 string "处理成功"
  377. // @router /update/ly/data/by/id [get]
  378. func (this *BaseFromLyController) UpdateLyDataById() {
  379. br := new(models.BaseResponse).Init()
  380. var cacheKey string
  381. defer func() {
  382. if br.ErrMsg == "" {
  383. br.IsSendEmail = false
  384. }
  385. _ = utils.Rc.Delete(cacheKey)
  386. this.Data["json"] = br
  387. this.ServeJSON()
  388. }()
  389. id, err := this.GetInt("Id")
  390. if err != nil {
  391. br.Msg = "参数解析异常!"
  392. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  393. return
  394. }
  395. if id == 0 {
  396. br.Msg = "请输入id!"
  397. br.ErrMsg = "请输入id"
  398. return
  399. }
  400. value, err := this.GetFloat("Value")
  401. if err != nil {
  402. br.Msg = "参数解析异常!"
  403. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  404. return
  405. }
  406. if value == 0 {
  407. br.Msg = "请输入值!"
  408. br.ErrMsg = "请输入值"
  409. return
  410. }
  411. err = models.UpdateLyDataById(id, value)
  412. if err != nil {
  413. return
  414. }
  415. br.Ret = 200
  416. br.Success = true
  417. br.Msg = "处理成功"
  418. }
  419. // UpdateLyEdbDataById
  420. // @Title 更新指标库指标数据
  421. // @Description 更新数据源指标数据
  422. // @Success 200 string "处理成功"
  423. // @router /update/ly/edb/data/by/id [get]
  424. func (this *BaseFromLyController) UpdateLyEdbDataById() {
  425. br := new(models.BaseResponse).Init()
  426. var cacheKey string
  427. defer func() {
  428. if br.ErrMsg == "" {
  429. br.IsSendEmail = false
  430. }
  431. _ = utils.Rc.Delete(cacheKey)
  432. this.Data["json"] = br
  433. this.ServeJSON()
  434. }()
  435. id, err := this.GetInt("Id")
  436. if err != nil {
  437. br.Msg = "参数解析异常!"
  438. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  439. return
  440. }
  441. if id == 0 {
  442. br.Msg = "请输入id!"
  443. br.ErrMsg = "请输入id"
  444. return
  445. }
  446. value, err := this.GetFloat("Value")
  447. if err != nil {
  448. br.Msg = "参数解析异常!"
  449. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  450. return
  451. }
  452. if value == 0 {
  453. br.Msg = "请输入值!"
  454. br.ErrMsg = "请输入值"
  455. return
  456. }
  457. err = models.UpdateLyDataById(id, value)
  458. if err != nil {
  459. return
  460. }
  461. br.Ret = 200
  462. br.Success = true
  463. br.Msg = "处理成功"
  464. }