app_permit_repo.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package system
  2. import (
  3. "fmt"
  4. "xorm.io/xorm"
  5. "xps/datamodels"
  6. "xps/viewmodels"
  7. )
  8. type AppPermitRepo struct {
  9. engine *xorm.Engine
  10. }
  11. func NewAppPermitRepo(engine *xorm.Engine) *AppPermitRepo {
  12. return &AppPermitRepo{
  13. engine: engine,
  14. }
  15. }
  16. func (d *AppPermitRepo) GetList(m map[string]interface{})([]viewmodels.AppPermitInfo, error) {
  17. roleId := m["roleId"].(int64)
  18. keywords := m["keywords"].(string)
  19. appKey := m["appKey"].(string)
  20. sqlSelect := ` SELECT A.app_id,
  21. A.role_id,
  22. A.permit_id,
  23. A.permit_title,
  24. A.permit_code,
  25. A.permit_desc,
  26. A.permit_type,
  27. A.root_id,
  28. A.parent_id,
  29. A.sort_no `
  30. sqlFrom := ` FROM app_permit AS A
  31. JOIN app AS B ON (A.app_id = B.app_id) `
  32. sqlWhere := ` WHERE A.deleted_flag = 0 `
  33. if appKey != "" {
  34. sqlWhere += ` AND B.app_key = '` + appKey + "'"
  35. }
  36. if roleId >= 0 {
  37. sqlWhere += ` AND A.role_id = ` + fmt.Sprintf("%d", roleId)
  38. }
  39. if keywords != "" {
  40. sqlWhere += ` AND A.permit_title like ` + "'%" + keywords + "%'"
  41. }
  42. sqlOrderBy := " ORDER BY A.app_id, A.role_id, A.parent_id, A.sort_no "
  43. datalist := make([]viewmodels.AppPermitInfo, 0)
  44. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  45. if err != nil {
  46. return nil, err
  47. } else {
  48. return datalist, nil
  49. }
  50. }
  51. func (d *AppPermitRepo) GetListByKey(appKey string, roleId int64)([]viewmodels.AppPermitInfo, error) {
  52. sqlSelect := ` SELECT A.app_id,
  53. A.role_id,
  54. A.permit_id,
  55. A.permit_title,
  56. A.permit_code,
  57. A.permit_desc,
  58. A.permit_type,
  59. A.root_id,
  60. A.parent_id,
  61. A.sort_no `
  62. sqlFrom := ` FROM app_permit AS A
  63. JOIN app AS B ON (A.app_id = B.app_id) `
  64. sqlWhere := ` WHERE A.deleted_flag = 0 `
  65. if appKey != "" {
  66. sqlWhere += ` AND B.app_key = '` + appKey + "'"
  67. }
  68. if roleId >= 0 {
  69. sqlWhere += ` AND A.role_id = ` + fmt.Sprintf("%d", roleId)
  70. }
  71. sqlOrderBy := " ORDER BY A.app_id, A.role_id, A.parent_id, A.sort_no "
  72. datalist := make([]viewmodels.AppPermitInfo, 0)
  73. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  74. if err != nil {
  75. return nil, err
  76. } else {
  77. return datalist, nil
  78. }
  79. }
  80. func (d *AppPermitRepo) GetById(appId, roleId, permitId int64)(*viewmodels.AppPermitInfo, error) {
  81. sqlSelect := ` SELECT A.app_id,
  82. A.role_id,
  83. A.permit_id,
  84. A.permit_title,
  85. A.permit_code,
  86. A.permit_desc,
  87. A.permit_type,
  88. A.root_id,
  89. A.parent_id,
  90. A.sort_no `
  91. sqlFrom := ` FROM app_permit AS A
  92. JOIN app AS B ON (A.app_id = B.app_id) `
  93. sqlWhere := ` WHERE A.deleted_flag = 0 `
  94. sqlWhere += fmt.Sprintf(" AND A.app_id = %d ", appId)
  95. sqlWhere += fmt.Sprintf(" AND A.role_id = %d ", roleId)
  96. sqlWhere += fmt.Sprintf(" AND A.permit_id = %d ", permitId)
  97. data := &viewmodels.AppPermitInfo{}
  98. _, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Limit(1).Get(data)
  99. if err != nil {
  100. return nil, err
  101. } else {
  102. return data, nil
  103. }
  104. }
  105. func (d *AppPermitRepo) Create(data *datamodels.AppPermit) error {
  106. _, err := d.engine.Insert(data)
  107. return err
  108. }
  109. func (d *AppPermitRepo) Update(data *datamodels.AppPermit) error {
  110. appId := data.AppId
  111. roleId := data.RoleId
  112. permitId := data.PermitId
  113. _, err := d.engine.
  114. Where("app_id = ?", appId).
  115. Where("role_id = ?", roleId).
  116. Where("permit_id = ?", permitId).
  117. Update(data)
  118. return err
  119. }
  120. func (d *AppPermitRepo) Delete(appId, roleId, permitId int64) error {
  121. data := &datamodels.AppPermit{}
  122. _, err := d.engine.
  123. Where("app_id = ?", appId).
  124. Where("role_id = ?", roleId).
  125. Where("permit_id = ?", permitId).
  126. Delete(data)
  127. return err
  128. }