sysUserPermModel.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package userperm
  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 _ SysUserPermModel = (*customSysUserPermModel)(nil)
  9. type (
  10. SysUserPermModel interface {
  11. sysUserPermModel
  12. FindByUserId(ctx context.Context, userId int64) ([]*SysUserPerm, error)
  13. FindPermIdsByUserIdAndEffect(ctx context.Context, userId int64, effect string) ([]int64, error)
  14. DeleteByUserId(ctx context.Context, userId int64) error
  15. DeleteByUserIdTx(ctx context.Context, session sqlx.Session, userId int64) error
  16. DeleteByUserIdForProduct(ctx context.Context, userId int64, productCode string) error
  17. DeleteByUserIdForProductTx(ctx context.Context, session sqlx.Session, userId int64, productCode string) error
  18. }
  19. customSysUserPermModel struct {
  20. *defaultSysUserPermModel
  21. }
  22. )
  23. func NewSysUserPermModel(conn sqlx.SqlConn, c cache.CacheConf, cachePrefix string, opts ...cache.Option) SysUserPermModel {
  24. return &customSysUserPermModel{
  25. defaultSysUserPermModel: newSysUserPermModel(conn, c, cachePrefix, opts...),
  26. }
  27. }
  28. func (m *customSysUserPermModel) FindByUserId(ctx context.Context, userId int64) ([]*SysUserPerm, error) {
  29. var list []*SysUserPerm
  30. query := fmt.Sprintf("SELECT %s FROM %s WHERE `userId` = ?", sysUserPermRows, m.table)
  31. if err := m.QueryRowsNoCacheCtx(ctx, &list, query, userId); err != nil {
  32. return nil, err
  33. }
  34. return list, nil
  35. }
  36. func (m *customSysUserPermModel) FindPermIdsByUserIdAndEffect(ctx context.Context, userId int64, effect string) ([]int64, error) {
  37. var ids []int64
  38. query := fmt.Sprintf("SELECT `permId` FROM %s WHERE `userId` = ? AND `effect` = ?", m.table)
  39. if err := m.QueryRowsNoCacheCtx(ctx, &ids, query, userId, effect); err != nil {
  40. return nil, err
  41. }
  42. return ids, nil
  43. }
  44. func (m *customSysUserPermModel) DeleteByUserId(ctx context.Context, userId int64) error {
  45. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ?", m.table)
  46. _, err := m.ExecNoCacheCtx(ctx, query, userId)
  47. return err
  48. }
  49. func (m *customSysUserPermModel) DeleteByUserIdTx(ctx context.Context, session sqlx.Session, userId int64) error {
  50. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ?", m.table)
  51. _, err := session.ExecCtx(ctx, query, userId)
  52. return err
  53. }
  54. func (m *customSysUserPermModel) DeleteByUserIdForProduct(ctx context.Context, userId int64, productCode string) error {
  55. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ? AND `permId` IN (SELECT `id` FROM `sys_perm` WHERE `productCode` = ?)", m.table)
  56. _, err := m.ExecNoCacheCtx(ctx, query, userId, productCode)
  57. return err
  58. }
  59. func (m *customSysUserPermModel) DeleteByUserIdForProductTx(ctx context.Context, session sqlx.Session, userId int64, productCode string) error {
  60. query := fmt.Sprintf("DELETE FROM %s WHERE `userId` = ? AND `permId` IN (SELECT `id` FROM `sys_perm` WHERE `productCode` = ?)", m.table)
  61. _, err := session.ExecCtx(ctx, query, userId, productCode)
  62. return err
  63. }