app_permit_repo.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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) GetByList(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) GetById(appId, roleId, permitId 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. sqlWhere += fmt.Sprintf(" AND A.app_id = %d ", appId)
  66. sqlWhere += fmt.Sprintf(" AND A.role_id = %d ", roleId)
  67. sqlWhere += fmt.Sprintf(" AND A.permit_id = %d ", permitId)
  68. data := &viewmodels.AppPermitInfo{}
  69. _, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Limit(1).Get(data)
  70. if err != nil {
  71. return nil, err
  72. } else {
  73. return data, nil
  74. }
  75. }
  76. func (d *AppPermitRepo) Create(data *datamodels.AppPermit) error {
  77. _, err := d.engine.Insert(data)
  78. return err
  79. }
  80. func (d *AppPermitRepo) Update(data *datamodels.AppPermit) error {
  81. appId := data.AppId
  82. roleId := data.RoleId
  83. permitId := data.PermitId
  84. _, err := d.engine.
  85. Where("app_id = ?", appId).
  86. Where("role_id = ?", roleId).
  87. Where("permit_id = ?", permitId).
  88. Update(data)
  89. return err
  90. }
  91. func (d *AppPermitRepo) Delete(appId, roleId, permitId int64) error {
  92. data := &datamodels.AppPermit{}
  93. _, err := d.engine.
  94. Where("app_id = ?", appId).
  95. Where("role_id = ?", roleId).
  96. Where("permit_id = ?", permitId).
  97. Delete(data)
  98. return err
  99. }