sysUserRoleModel.go 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package userrole
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/zeromicro/go-zero/core/stores/cache"
  6. "github.com/zeromicro/go-zero/core/stores/sqlx"
  7. )
  8. var _ SysUserRoleModel = (*customSysUserRoleModel)(nil)
  9. type (
  10. SysUserRoleModel interface {
  11. sysUserRoleModel
  12. FindRoleIdsByUserId(ctx context.Context, userId int64) ([]int64, error)
  13. FindUserIdsByRoleId(ctx context.Context, roleId int64) ([]int64, error)
  14. FindByUserId(ctx context.Context, userId int64) ([]*SysUserRole, error)
  15. DeleteByUserId(ctx context.Context, userId int64) error
  16. DeleteByUserIdTx(ctx context.Context, session sqlx.Session, userId int64) error
  17. DeleteByRoleIdTx(ctx context.Context, session sqlx.Session, roleId int64) error
  18. DeleteByUserIdForProduct(ctx context.Context, userId int64, productCode string) error
  19. DeleteByUserIdForProductTx(ctx context.Context, session sqlx.Session, userId int64, productCode string) error
  20. }
  21. customSysUserRoleModel struct {
  22. *defaultSysUserRoleModel
  23. }
  24. )
  25. func NewSysUserRoleModel(conn sqlx.SqlConn, c cache.CacheConf, cachePrefix string, opts ...cache.Option) SysUserRoleModel {
  26. return &customSysUserRoleModel{
  27. defaultSysUserRoleModel: newSysUserRoleModel(conn, c, cachePrefix, opts...),
  28. }
  29. }
  30. func (m *customSysUserRoleModel) FindRoleIdsByUserId(ctx context.Context, userId int64) ([]int64, error) {
  31. var ids []int64
  32. query := fmt.Sprintf("SELECT `roleId` FROM %s WHERE `userId` = ?", m.table)
  33. if err := m.QueryRowsNoCacheCtx(ctx, &ids, query, userId); err != nil {
  34. return nil, err
  35. }
  36. return ids, nil
  37. }
  38. func (m *customSysUserRoleModel) FindUserIdsByRoleId(ctx context.Context, roleId int64) ([]int64, error) {
  39. var ids []int64
  40. query := fmt.Sprintf("SELECT `userId` FROM %s WHERE `roleId` = ?", m.table)
  41. if err := m.QueryRowsNoCacheCtx(ctx, &ids, query, roleId); err != nil {
  42. return nil, err
  43. }
  44. return ids, nil
  45. }
  46. func (m *customSysUserRoleModel) FindByUserId(ctx context.Context, userId int64) ([]*SysUserRole, error) {
  47. var list []*SysUserRole
  48. query := fmt.Sprintf("SELECT %s FROM %s WHERE `userId` = ?", sysUserRoleRows, m.table)
  49. if err := m.QueryRowsNoCacheCtx(ctx, &list, query, userId); err != nil {
  50. return nil, err
  51. }
  52. return list, nil
  53. }
  54. func (m *customSysUserRoleModel) DeleteByUserId(ctx context.Context, userId int64) error {
  55. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ?", m.table)
  56. _, err := m.ExecNoCacheCtx(ctx, query, userId)
  57. return err
  58. }
  59. func (m *customSysUserRoleModel) DeleteByUserIdTx(ctx context.Context, session sqlx.Session, userId int64) error {
  60. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ?", m.table)
  61. _, err := session.ExecCtx(ctx, query, userId)
  62. return err
  63. }
  64. func (m *customSysUserRoleModel) DeleteByRoleIdTx(ctx context.Context, session sqlx.Session, roleId int64) error {
  65. query := fmt.Sprintf("DELETE FROM %s WHERE `roleId` = ?", m.table)
  66. _, err := session.ExecCtx(ctx, query, roleId)
  67. return err
  68. }
  69. func (m *customSysUserRoleModel) DeleteByUserIdForProduct(ctx context.Context, userId int64, productCode string) error {
  70. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ? AND `roleId` IN (SELECT `id` FROM `sys_role` WHERE `productCode` = ?)", m.table)
  71. _, err := m.ExecNoCacheCtx(ctx, query, userId, productCode)
  72. return err
  73. }
  74. func (m *customSysUserRoleModel) DeleteByUserIdForProductTx(ctx context.Context, session sqlx.Session, userId int64, productCode string) error {
  75. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ? AND `roleId` IN (SELECT `id` FROM `sys_role` WHERE `productCode` = ?)", m.table)
  76. _, err := session.ExecCtx(ctx, query, userId, productCode)
  77. return err
  78. }