biz_object_oam_rule_repo.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package repositories
  2. import (
  3. "errors"
  4. "fmt"
  5. "xorm.io/xorm"
  6. "xps/datamodels"
  7. "xps/viewmodels"
  8. )
  9. type BizObjectOAMRuleRepo struct {
  10. engine *xorm.Engine
  11. }
  12. func NewBizObjectOAMRuleRepo(engine *xorm.Engine) *BizObjectOAMRuleRepo {
  13. return &BizObjectOAMRuleRepo{
  14. engine: engine,
  15. }
  16. }
  17. func (d *BizObjectOAMRuleRepo) GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMRuleInfo, error) {
  18. sqlSelect := ` SELECT A.*,
  19. B.object_title,
  20. B.object_code,
  21. B.object_type,
  22. C.oam_title,
  23. C.oam_code,
  24. D.attr_title AS target_attr_title,
  25. D.attr_code AS target_attr_code,
  26. R.rule_title `
  27. sqlFrom := ` FROM biz_object_oam_rule AS A
  28. LEFT JOIN biz_object AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id)
  29. LEFT JOIN biz_object_oam AS C ON (A.biz_id = C.biz_id AND A.object_id = C.object_id AND A.oam_id = C.oam_id)
  30. LEFT JOIN biz_object_attr AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id AND A.target_attr_id = D.attr_id)
  31. LEFT JOIN biz_rule AS R ON (A.rule_id = R.rule_id) `
  32. sqlWhere := ` WHERE 1=1 `
  33. if bizId, ok := m["bizId"]; ok {
  34. sqlWhere += fmt.Sprintf(" AND A.biz_id = %d ", bizId)
  35. }
  36. if objectId, ok := m["objectId"]; ok {
  37. sqlWhere += fmt.Sprintf(" AND A.object_id = %d ", objectId)
  38. }
  39. if oamId, ok := m["oamId"]; ok {
  40. sqlWhere += fmt.Sprintf(" AND A.oam_id = %d ", oamId)
  41. }
  42. if keywords, ok := m["keywords"]; ok {
  43. sqlWhere += ` AND A.oam_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  44. }
  45. sqlOrderBy := " ORDER BY A.oam_id ASC "
  46. datalist := make([]viewmodels.BizObjectOAMRuleInfo, 0)
  47. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  48. if err != nil {
  49. return nil, err
  50. } else {
  51. return datalist, nil
  52. }
  53. }
  54. func (d *BizObjectOAMRuleRepo) GetById(bizId, objectId, oamId, orId int64) (*viewmodels.BizObjectOAMRuleInfo, error) {
  55. sqlSelect := ` SELECT A.*,
  56. B.object_title,
  57. B.object_code,
  58. B.object_type,
  59. C.oam_title,
  60. C.oam_code,
  61. D.attr_title AS target_attr_title,
  62. D.attr_code AS target_attr_code,
  63. R.rule_title `
  64. sqlFrom := ` FROM biz_object_oam_rule AS A
  65. LEFT JOIN biz_object AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id)
  66. LEFT JOIN biz_object_oam AS C ON (A.biz_id = C.biz_id AND A.object_id = C.object_id AND A.oam_id = C.oam_id)
  67. LEFT JOIN biz_object_attr AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id AND A.target_attr_id = D.attr_id)
  68. LEFT JOIN biz_rule AS R ON (A.rule_id = R.rule_id) `
  69. sqlWhere := ` WHERE 1=1 `
  70. sqlWhere += fmt.Sprintf(" AND A.biz_id = %d ", bizId)
  71. sqlWhere += fmt.Sprintf(" AND A.object_id = %d ", objectId)
  72. sqlWhere += fmt.Sprintf(" AND A.oam_id = %d ", oamId)
  73. sqlWhere += fmt.Sprintf(" AND A.or_id = %d ", orId)
  74. data := &viewmodels.BizObjectOAMRuleInfo{}
  75. has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Get(data)
  76. if !has || err != nil {
  77. return nil, err
  78. } else {
  79. return data, nil
  80. }
  81. }
  82. func (d *BizObjectOAMRuleRepo) GetListById(bizId, objectId, oamId int64) ([]viewmodels.BizObjectOAMRuleInfo, error) {
  83. sqlSelect := ` SELECT A.*,
  84. B.object_title,
  85. B.object_code,
  86. B.object_type,
  87. C.oam_title,
  88. C.oam_code,
  89. D.attr_title AS target_attr_title,
  90. D.attr_code AS target_attr_code,
  91. R.rule_title `
  92. sqlFrom := ` FROM biz_object_oam_rule AS A
  93. LEFT JOIN biz_object AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id)
  94. LEFT JOIN biz_object_oam AS C ON (A.biz_id = C.biz_id AND A.object_id = C.object_id AND A.oam_id = C.oam_id)
  95. LEFT JOIN biz_object_attr AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id AND A.target_attr_id = D.attr_id)
  96. LEFT JOIN biz_rule AS R ON (A.rule_id = R.rule_id) `
  97. sqlWhere := ` WHERE 1=1 `
  98. sqlWhere += fmt.Sprintf(" AND A.biz_id = %d ", bizId)
  99. sqlWhere += fmt.Sprintf(" AND A.object_id = %d ", objectId)
  100. sqlWhere += fmt.Sprintf(" AND A.oam_id = %d ", oamId)
  101. sqlOrderBy := " ORDER BY A.sort_no "
  102. dataList := make([]viewmodels.BizObjectOAMRuleInfo, 0)
  103. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&dataList)
  104. if err != nil {
  105. return nil, err
  106. } else {
  107. return dataList, nil
  108. }
  109. }
  110. func (d *BizObjectOAMRuleRepo) Create(data *datamodels.BizObjectOAMRule) error {
  111. _, err := d.engine.Insert(data)
  112. return err
  113. }
  114. func (d *BizObjectOAMRuleRepo) Update(data *datamodels.BizObjectOAMRule) error {
  115. bizId := data.BizId
  116. objectId := data.ObjectId
  117. oamId := data.OamId
  118. orId := data.OrId
  119. _, err := d.engine.
  120. Where("biz_id = ?", bizId).
  121. Where("object_id = ?", objectId).
  122. Where("oam_id = ?", oamId).
  123. Where("or_id = ?", orId).
  124. AllCols().
  125. Update(data)
  126. return err
  127. }
  128. func (d *BizObjectOAMRuleRepo) Delete(m map[string]interface{}) error {
  129. bizId, ok1 := m["bizId"]
  130. objectId, ok2 := m["objectId"]
  131. oamId, ok3 := m["oamId"]
  132. orId, ok4 := m["orId"]
  133. if !ok1 || !ok2 || !ok3 || !ok4 {
  134. return errors.New("数据不完整")
  135. }
  136. data := &datamodels.BizObjectOAMRule{}
  137. _, err := d.engine.
  138. Where("biz_id = ?", bizId).
  139. Where("object_id = ?", objectId).
  140. Where("oam_id = ?", oamId).
  141. Where("or_id = ?", orId).
  142. Delete(data)
  143. return err
  144. }
  145. func (d *BizObjectOAMRuleRepo) DeleteByObjectId(bizId, objectId, oamId int64) error {
  146. data := &datamodels.BizObjectOAMRule{}
  147. _, err := d.engine.
  148. Where("biz_id = ?", bizId).
  149. Where("object_id = ?", objectId).
  150. Where("oam_id = ?", oamId).
  151. Delete(data)
  152. return err
  153. }