role_member_repo.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package system
  2. import (
  3. "fmt"
  4. "log"
  5. "xorm.io/core"
  6. "xorm.io/xorm"
  7. "xps/datamodels"
  8. "xps/viewmodels"
  9. )
  10. type RoleMemberRepo struct {
  11. engine *xorm.Engine
  12. }
  13. func NewRoleMemberRepo(engine *xorm.Engine) *RoleMemberRepo {
  14. return &RoleMemberRepo{
  15. engine: engine,
  16. }
  17. }
  18. func (d *RoleMemberRepo) GetAll(ocId int64, keyword string) []viewmodels.RoleMemberInfo {
  19. var datalist = make([]viewmodels.RoleMemberInfo, 0)
  20. sqlSelect := `SELECT A.rm_id,
  21. A.role_id,
  22. B.role_name,
  23. A.account_id,
  24. C.account_name `
  25. sqlFrom := `FROM s_role_member AS A
  26. LEFT JOIN s_role AS B ON (A.role_id = B.role_id)
  27. LEFT JOIN account AS C ON (A.account_id = C.account_id AND A.oc_id = C.oc_id)
  28. `
  29. sqlWhere := `WHERE A.oc_id = ` + fmt.Sprintf("%d", ocId)
  30. if keyword != "" {
  31. sqlWhere += ` AND B.role_name like ` + "'%" + keyword + "%'"
  32. }
  33. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).OrderBy("role_id DESC").Find(&datalist)
  34. if err != nil {
  35. log.Fatal(err)
  36. }
  37. return datalist
  38. }
  39. func (d *RoleMemberRepo) GetAccountFirstRole(ocId int64, accountId int64) (*viewmodels.RoleMemberInfo, error) {
  40. var roleMemberInfo = &viewmodels.RoleMemberInfo{}
  41. sqlSelect := `SELECT A.rm_id,
  42. A.role_id,
  43. B.role_name,
  44. A.account_id,
  45. C.account_name `
  46. sqlFrom := ` FROM s_role_member AS A
  47. LEFT JOIN s_role AS B ON (A.role_id = B.role_id)
  48. LEFT JOIN account AS C ON (A.account_id = C.account_id AND A.oc_id = C.oc_id)
  49. `
  50. sqlWhere := `WHERE A.oc_id = ` + fmt.Sprintf("%d", ocId)
  51. sqlWhere += ` AND A.account_id = ` + fmt.Sprintf("%d", accountId)
  52. has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Limit(1).Get(roleMemberInfo)
  53. if !has || err != nil {
  54. return nil, err
  55. }
  56. return roleMemberInfo, nil
  57. }
  58. func (d *RoleMemberRepo) Update(ocId int64, rmId int64, rm *datamodels.RoleMember) error {
  59. _, err := d.engine.Where("oc_id = ?", ocId).
  60. Where("rm_id = ?", rmId).
  61. Update(rm)
  62. return err
  63. }
  64. func (d *RoleMemberRepo) Delete(ocId int64, rmId int64) error {
  65. _, err := d.engine.Where("oc_id = ?", ocId).
  66. Where("rm_id = ?", rmId).
  67. Delete(new(datamodels.RoleMember))
  68. return err
  69. }
  70. func (d *RoleMemberRepo) DeleteById(ocId int64, roleId int64, accountId int64) error {
  71. _, err := d.engine.ID(core.PK{ocId, roleId, accountId}).Delete(new(datamodels.RoleMember))
  72. return err
  73. }
  74. func (d *RoleMemberRepo) DeleteByAccountId(ocId int64, accountId int64) error {
  75. _, err := d.engine.
  76. Where("oc_id = ?", ocId).
  77. Where("account_id = ?", accountId).
  78. Delete(new(datamodels.RoleMember))
  79. return err
  80. }
  81. func (d *RoleMemberRepo) Create(data *datamodels.RoleMember) error {
  82. _, err := d.engine.Insert(data)
  83. return err
  84. }