edb_monitor_classify.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package edbmonitor
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "time"
  7. )
  8. type EdbMonitorClassify struct {
  9. ClassifyId int `orm:"column(classify_id);pk" gorm:"primaryKey"`
  10. ClassifyName string `description:"分类名称"`
  11. Level int `description:"分类层级"`
  12. ParentId int `description:"父分类ID"`
  13. RootId int `description:"根分类ID"`
  14. Sort int `description:"排序"`
  15. CreateTime time.Time `description:"创建时间"`
  16. }
  17. func (e *EdbMonitorClassify) Insert() (id int64, err error) {
  18. o := global.DbMap[utils.DbNameIndex]
  19. var edbMonitorIds []int
  20. if e.ParentId != 0 {
  21. sql := `SELECT edb_monitor_id FROM edb_monitor_info WHERE edb_monitor_classify_id = ?`
  22. err = o.Raw(sql, e.ParentId).Find(&edbMonitorIds).Error
  23. if err != nil {
  24. return
  25. }
  26. }
  27. tx := o.Begin()
  28. defer func() {
  29. if err != nil {
  30. tx.Rollback()
  31. } else {
  32. tx.Commit()
  33. }
  34. }()
  35. err = tx.Create(e).Error
  36. if err != nil {
  37. return
  38. }
  39. id = int64(e.ClassifyId)
  40. if len(edbMonitorIds) > 0 {
  41. sql := `UPDATE edb_monitor_info SET edb_monitor_classify_id = ? WHERE edb_monitor_id IN (` + utils.GetOrmInReplace(len(edbMonitorIds)) + `)`
  42. err = tx.Exec(sql, id, edbMonitorIds).Error
  43. if err != nil {
  44. return
  45. }
  46. }
  47. return
  48. }
  49. func (e *EdbMonitorClassify) Update(cols []string, classifyId []int) (err error) {
  50. o := global.DbMap[utils.DbNameIndex]
  51. var edbMonitorIds []int
  52. if e.ParentId != 0 {
  53. sql := `SELECT edb_monitor_id FROM edb_monitor_info WHERE edb_monitor_classify_id = ?`
  54. err = o.Raw(sql, e.ParentId).Scan(&edbMonitorIds).Error
  55. if err != nil {
  56. return
  57. }
  58. }
  59. tx := o.Begin()
  60. defer func() {
  61. if err != nil {
  62. tx.Rollback()
  63. } else {
  64. tx.Commit()
  65. }
  66. }()
  67. err = tx.Select(cols).Updates(e).Error
  68. if err != nil {
  69. return
  70. }
  71. if len(classifyId) > 0 {
  72. sql := `UPDATE edb_monitor_classify SET root_id = ? WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `)`
  73. err = tx.Exec(sql, e.RootId, classifyId).Error
  74. if err != nil {
  75. return
  76. }
  77. }
  78. if len(edbMonitorIds) > 0 {
  79. sql := `UPDATE edb_monitor_info SET edb_monitor_classify_id = ? WHERE edb_monitor_id IN (` + utils.GetOrmInReplace(len(edbMonitorIds)) + `)`
  80. err = tx.Exec(sql, e.ClassifyId, edbMonitorIds).Error
  81. if err != nil {
  82. return
  83. }
  84. }
  85. return
  86. }
  87. func DeleteEdbMonitorClassifyById(id int) (err error) {
  88. o := global.DbMap[utils.DbNameIndex]
  89. err = o.Exec("DELETE FROM edb_monitor_classify WHERE classify_id =?", id).Error
  90. return
  91. }
  92. func DeleteEdbMonitorClassifyByIdList(ids []int) (err error) {
  93. if len(ids) == 0 {
  94. return
  95. }
  96. o := global.DbMap[utils.DbNameIndex]
  97. sql := "DELETE FROM edb_monitor_classify WHERE classify_id IN (" + utils.GetOrmInReplace(len(ids)) + ")"
  98. err = o.Exec(sql, ids).Error
  99. return
  100. }
  101. func GetEdbMonitorClassifyList() (items []*EdbMonitorClassify, err error) {
  102. o := global.DbMap[utils.DbNameIndex]
  103. sql := "SELECT * FROM edb_monitor_classify ORDER BY sort ASC"
  104. err = o.Raw(sql).Find(&items).Error
  105. return
  106. }
  107. func GetEdbMonitorClassifyById(id int) (item *EdbMonitorClassify, err error) {
  108. o := global.DbMap[utils.DbNameIndex]
  109. sql := "SELECT * FROM edb_monitor_classify WHERE classify_id =?"
  110. err = o.Raw(sql, id).First(&item).Error
  111. return
  112. }
  113. func GetEdbMonitorClassifyMaxSortByParentId(parentId int) (sort int, err error) {
  114. o := global.DbMap[utils.DbNameIndex]
  115. sql := "SELECT COALESCE(MAX(sort), 0) FROM edb_monitor_classify WHERE parent_id =?"
  116. err = o.Raw(sql, parentId).Scan(&sort).Error
  117. return
  118. }
  119. func GetChildEdbMonitorClassifyIdById(id int) (classifyId []int, err error) {
  120. o := global.DbMap[utils.DbNameIndex]
  121. sql := "SELECT classify_id FROM edb_monitor_classify WHERE parent_id =?"
  122. err = o.Raw(sql, id).Scan(&classifyId).Error
  123. return
  124. }
  125. func GetChildEdbMonitorClassifyById(id int) (items []*EdbMonitorClassify, err error) {
  126. o := global.DbMap[utils.DbNameIndex]
  127. sql := "SELECT * FROM edb_monitor_classify WHERE parent_id =?"
  128. err = o.Raw(sql, id).Find(&items).Error
  129. return
  130. }
  131. func GetChildEdbMonitorClassifyByRootId(rootId int) (items []*EdbMonitorClassify, err error) {
  132. o := global.DbMap[utils.DbNameIndex]
  133. sql := "SELECT * FROM edb_monitor_classify WHERE root_id =?"
  134. err = o.Raw(sql, rootId).Find(&items).Error
  135. return
  136. }
  137. func GetEdbMonitorClassifyCountByIdList(ids []int) (count int, err error) {
  138. if len(ids) == 0 {
  139. return
  140. }
  141. o := global.DbMap[utils.DbNameIndex]
  142. sql := `SELECT COUNT(*) FROM edb_monitor_classify WHERE classify_id IN (` + utils.GetOrmInReplace(len(ids)) + `)`
  143. err = o.Raw(sql, ids).Scan(&count).Error
  144. return
  145. }
  146. // GetEdbMonitorClassifyByParentIdAndName 根据父级ID和名称获取分类
  147. func GetEdbMonitorClassifyByParentIdAndName(parentId int, classifyName string, classifyId int) (item *EdbMonitorClassify, err error) {
  148. o := global.DbMap[utils.DbNameIndex]
  149. sql := `SELECT * FROM edb_monitor_classify WHERE parent_id = ? AND classify_name = ? AND classify_id <> ? LIMIT 1`
  150. err = o.Raw(sql, parentId, classifyName, classifyId).First(&item).Error
  151. return
  152. }
  153. // UpdateEdbMonitorClassifySortByParentId 根据分类父类id更新排序
  154. func UpdateEdbMonitorClassifySortByParentId(parentId, classifyId, nowSort int, updateSort string) (err error) {
  155. o := global.DbMap[utils.DbNameIndex]
  156. sql := ` update edb_monitor_classify set sort = ` + updateSort + ` WHERE parent_id=? and sort > ? `
  157. if classifyId > 0 {
  158. sql += ` or ( classify_id > ` + fmt.Sprint(classifyId) + ` and sort= ` + fmt.Sprint(nowSort) + `)`
  159. }
  160. err = o.Exec(sql, parentId, nowSort).Error
  161. return
  162. }
  163. // GetFirstEdbMonitorClassifyByParentId 获取当前父级图表分类下的排序第一条的数据
  164. func GetFirstEdbMonitorClassifyByParentId(parentId int) (item *EdbMonitorClassify, err error) {
  165. o := global.DbMap[utils.DbNameIndex]
  166. sql := ` SELECT * FROM edb_monitor_classify WHERE parent_id=? order by sort asc,classify_id asc limit 1`
  167. err = o.Raw(sql, parentId).First(&item).Error
  168. return
  169. }