report_classify.go 3.7 KB

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