report_classify.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package services
  2. import (
  3. "errors"
  4. "eta/eta_api/models"
  5. "eta/eta_api/services/alarm_msg"
  6. "fmt"
  7. )
  8. // UpdateParentClassifyHasTel 更新父级分类是否含有电话字段
  9. func UpdateParentClassifyHasTel(classifyId, parentId, hasTeleconference int) (err error) {
  10. if classifyId <= 0 || parentId <= 0 {
  11. return
  12. }
  13. defer func() {
  14. if err != nil {
  15. alarm_msg.SendAlarmMsg("编辑分类后-修改父级分类电话会信息失败, ErrMsg: "+err.Error(), 3)
  16. }
  17. }()
  18. parentClassify, e := models.GetClassifyById(parentId)
  19. if e != nil {
  20. err = fmt.Errorf("获取父级分类信息失败, Err: %s", e.Error())
  21. return
  22. }
  23. updateParent := false
  24. updateCols := make([]string, 0)
  25. updateCols = append(updateCols, "HasTeleconference")
  26. if hasTeleconference == 1 {
  27. // 二级分类包含电话会,则一级分类也默认包含电话会
  28. if parentClassify.HasTeleconference == 0 {
  29. parentClassify.HasTeleconference = 1
  30. updateParent = true
  31. }
  32. } else {
  33. // 二级分类均无电话会,则一级分类也无电话会
  34. if parentClassify.HasTeleconference == 1 {
  35. child, e := models.GetClassifyChild(parentClassify.Id, "")
  36. if e != nil {
  37. err = fmt.Errorf("获取子分类失败, Err: %s", e.Error())
  38. return
  39. }
  40. // 存在同一级分类下的二级分类有电话会则不变动
  41. hasTel := false
  42. for i := 0; i < len(child); i++ {
  43. if child[i].HasTeleconference == 1 && child[i].Id != classifyId {
  44. hasTel = true
  45. break
  46. }
  47. }
  48. if !hasTel {
  49. parentClassify.HasTeleconference = 0
  50. updateParent = true
  51. }
  52. }
  53. }
  54. if updateParent {
  55. if e = parentClassify.UpdateClassify(updateCols); e != nil {
  56. err = fmt.Errorf("更新父级分类失败, Err: %s", e.Error())
  57. return
  58. }
  59. }
  60. return
  61. }
  62. // AfterUpdateClassifyNameOrParent 更新报告分类名称/父级分类后的操作
  63. // 当二级分类名称做了修改, 更新chart_permission_search_key_word_mapping对应的key_word
  64. // 以及report表中的classify_name_second, 不然报告的权限会有BUG
  65. func AfterUpdateClassifyNameOrParent(classifyId, parentId, originParentId int, originName, classifyName string, classifyLevel int) (err error) {
  66. if classifyId == 0 {
  67. return
  68. }
  69. defer func() {
  70. if err != nil {
  71. alarm_msg.SendAlarmMsg("更改分类名称后-同步更新报告表字段及权限表关键词失败, ErrMsg: "+err.Error(), 3)
  72. }
  73. }()
  74. // 修改名称
  75. // ETA1.8.3 现在任何一级都能挂报告,所以只需要名称变更就要去更新数据,不需要判断是否属于子分类(2024-6-18 10:37:17)
  76. if originName != classifyName {
  77. switch classifyLevel {
  78. case 1: // 一级分类
  79. if e := models.UpdateReportFirstClassifyNameByClassifyId(classifyId, classifyName); e != nil {
  80. err = fmt.Errorf("更新报告表一级分类名称失败, Err: %s", e.Error())
  81. return
  82. }
  83. case 2: // 二级分类
  84. // 更新报告表分类字段
  85. if e := models.UpdateReportSecondClassifyNameByClassifyId(classifyId, classifyName); e != nil {
  86. err = fmt.Errorf("更新报告表二级分类名称失败, Err: %s", e.Error())
  87. return
  88. }
  89. case 3: // 三级分类
  90. // 更新报告表分类字段
  91. if e := models.UpdateReportThirdClassifyNameByClassifyId(classifyId, classifyName); e != nil {
  92. err = fmt.Errorf("更新报告表三级分类名称失败, Err: %s", e.Error())
  93. return
  94. }
  95. default:
  96. err = errors.New(fmt.Sprint("错误的分类级别,ClassifyId:", classifyId, ";层级:", classifyLevel))
  97. return
  98. }
  99. // 更新关键词
  100. if e := models.UpdateChartPermissionNameFromMappingByKeyword(classifyName, classifyId, "rddp"); e != nil {
  101. err = fmt.Errorf("更新二级分类关键词失败, Err: %s", e.Error())
  102. return
  103. }
  104. // 同步crm_master
  105. _ = EditKeywordPermissionSync(classifyName, classifyId)
  106. }
  107. //// 二级分类-修改了父级分类
  108. //// ETA1.8.3已经不允许修改父级分类了(2024-6-18 10:37:17)
  109. //if originParentId > 0 && parentId > 0 && originParentId != parentId {
  110. // parentClassify, e := models.GetClassifyById(parentId)
  111. // if e != nil {
  112. // err = fmt.Errorf("获取父级分类信息失败, Err: %s", e.Error())
  113. // return
  114. // }
  115. // // 更新报告表一级分类名称和ID
  116. // if e = models.UpdateReportSecondClassifyFirstNameByClassifyId(classifyId, parentClassify.Id, parentClassify.ClassifyName); e != nil {
  117. // err = fmt.Errorf("更新报告表一级分类名称和ID, Err: %s", e.Error())
  118. // return
  119. // }
  120. //}
  121. return
  122. }