role_member_repo.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. sqlSelect := `SELECT A.rm_id,
  20. A.role_id,
  21. B.role_name,
  22. A.account_id,
  23. C.account_name `
  24. sqlFrom := `FROM s_role_member AS A
  25. LEFT JOIN s_role AS B ON (A.role_id = B.role_id)
  26. LEFT JOIN account AS C ON (A.account_id = C.account_id AND A.oc_id = C.oc_id)
  27. `
  28. sqlWhere := `WHERE A.oc_id = ` + fmt.Sprintf("%d", ocId)
  29. if keyword != "" {
  30. sqlWhere += ` AND B.role_name like ` + "'%" + keyword + "%'"
  31. }
  32. datalist := make([]viewmodels.RoleMemberInfo, 0)
  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. sqlSelect := `SELECT A.rm_id,
  41. A.role_id,
  42. B.role_name,
  43. A.account_id,
  44. C.account_name `
  45. sqlFrom := ` FROM s_role_member AS A
  46. LEFT JOIN s_role AS B ON (A.role_id = B.role_id)
  47. LEFT JOIN account AS C ON (A.account_id = C.account_id AND A.oc_id = C.oc_id) `
  48. sqlWhere := ` WHERE A.oc_id = ` + fmt.Sprintf("%d", ocId)
  49. sqlWhere += ` AND A.account_id = ` + fmt.Sprintf("%d", accountId)
  50. roleMemberInfo := &viewmodels.RoleMemberInfo{}
  51. has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Limit(1).Get(roleMemberInfo)
  52. if !has || err != nil {
  53. return nil, err
  54. }
  55. return roleMemberInfo, nil
  56. }
  57. func (d *RoleMemberRepo) Update(ocId int64, rmId int64, rm *datamodels.RoleMember) error {
  58. _, err := d.engine.Where("oc_id = ?", ocId).
  59. Where("rm_id = ?", rmId).
  60. Update(rm)
  61. return err
  62. }
  63. func (d *RoleMemberRepo) Delete(ocId int64, rmId int64) error {
  64. _, err := d.engine.Where("oc_id = ?", ocId).
  65. Where("rm_id = ?", rmId).
  66. Delete(new(datamodels.RoleMember))
  67. return err
  68. }
  69. func (d *RoleMemberRepo) DeleteById(ocId int64, roleId int64, accountId int64) error {
  70. _, err := d.engine.ID(core.PK{ocId, roleId, accountId}).Delete(new(datamodels.RoleMember))
  71. return err
  72. }
  73. func (d *RoleMemberRepo) DeleteByAccountId(ocId int64, accountId int64) error {
  74. _, err := d.engine.
  75. Where("oc_id = ?", ocId).
  76. Where("account_id = ?", accountId).
  77. Delete(new(datamodels.RoleMember))
  78. return err
  79. }
  80. func (d *RoleMemberRepo) Create(data *datamodels.RoleMember) error {
  81. _, err := d.engine.Insert(data)
  82. return err
  83. }