edb_info_calculate_mapping.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_index_lib/models"
  5. "eta_gn/eta_index_lib/utils"
  6. "time"
  7. )
  8. type EdbInfoCalculateController struct {
  9. BaseAuthController
  10. }
  11. // @router /copy/calculate/from/hz [post]
  12. func (this *EdbInfoController) CopyCalculateFromHz() {
  13. br := new(models.BaseResponse).Init()
  14. var cacheKey string
  15. defer func() {
  16. utils.Rc.Delete(cacheKey)
  17. this.Data["json"] = br
  18. this.ServeJSON()
  19. }()
  20. req := new(models.EdbInfoCalculateMapping)
  21. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  22. if err != nil {
  23. br.Msg = "参数解析异常!"
  24. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  25. return
  26. }
  27. if req.EdbCode == "" {
  28. br.Msg = "请输入指标编码!"
  29. br.ErrMsg = "请输入指标编码,指标编码为空"
  30. return
  31. }
  32. deleteCache := true
  33. cacheKey = "CACHE_EDB_INFO_COPY_CALCULATE_FROM_HZ_" + req.EdbCode
  34. defer func() {
  35. if deleteCache {
  36. utils.Rc.Delete(cacheKey)
  37. }
  38. }()
  39. if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
  40. deleteCache = false
  41. br.Msg = "系统处理中,请稍后重试!"
  42. br.ErrMsg = "系统处理中,请稍后重试!"
  43. return
  44. }
  45. var isAdd bool
  46. item, err := models.GetEdbInfoCalculateByEdbCode(req.EdbCode, req.FromEdbCode)
  47. if err != nil {
  48. if err.Error() == utils.ErrNoRow() {
  49. isAdd = true
  50. } else {
  51. br.Msg = "判断指标是否存在失败!"
  52. br.ErrMsg = "判断指标是否存在失败"
  53. return
  54. }
  55. }
  56. if item != nil && item.EdbInfoId <= 0 {
  57. isAdd = true
  58. }
  59. if isAdd {
  60. req.EdbInfoCalculateMappingId = 0
  61. err = req.Add()
  62. if err != nil {
  63. br.Msg = "新增指标失败!"
  64. br.ErrMsg = "新增指标失败"
  65. return
  66. }
  67. }
  68. br.Ret = 200
  69. br.Msg = "新增成功"
  70. }