sysDeptModel.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package dept
  2. import (
  3. "context"
  4. "fmt"
  5. "strings"
  6. "github.com/zeromicro/go-zero/core/stores/cache"
  7. "github.com/zeromicro/go-zero/core/stores/sqlx"
  8. )
  9. var _ SysDeptModel = (*customSysDeptModel)(nil)
  10. type (
  11. SysDeptModel interface {
  12. sysDeptModel
  13. FindAll(ctx context.Context) ([]*SysDept, error)
  14. FindByParentId(ctx context.Context, parentId int64) ([]*SysDept, error)
  15. FindByPathPrefix(ctx context.Context, pathPrefix string) ([]*SysDept, error)
  16. }
  17. customSysDeptModel struct {
  18. *defaultSysDeptModel
  19. }
  20. )
  21. func NewSysDeptModel(conn sqlx.SqlConn, c cache.CacheConf, cachePrefix string, opts ...cache.Option) SysDeptModel {
  22. return &customSysDeptModel{
  23. defaultSysDeptModel: newSysDeptModel(conn, c, cachePrefix, opts...),
  24. }
  25. }
  26. func (m *customSysDeptModel) FindAll(ctx context.Context) ([]*SysDept, error) {
  27. var list []*SysDept
  28. query := fmt.Sprintf("SELECT %s FROM %s ORDER BY `sort` ASC, `id` ASC", sysDeptRows, m.table)
  29. if err := m.QueryRowsNoCacheCtx(ctx, &list, query); err != nil {
  30. return nil, err
  31. }
  32. return list, nil
  33. }
  34. func (m *customSysDeptModel) FindByParentId(ctx context.Context, parentId int64) ([]*SysDept, error) {
  35. var list []*SysDept
  36. query := fmt.Sprintf("SELECT %s FROM %s WHERE `parentId` = ? ORDER BY `sort` ASC, `id` ASC", sysDeptRows, m.table)
  37. if err := m.QueryRowsNoCacheCtx(ctx, &list, query, parentId); err != nil {
  38. return nil, err
  39. }
  40. return list, nil
  41. }
  42. func (m *customSysDeptModel) FindByPathPrefix(ctx context.Context, pathPrefix string) ([]*SysDept, error) {
  43. escaped := strings.NewReplacer("%", "\\%", "_", "\\_").Replace(pathPrefix)
  44. var list []*SysDept
  45. query := fmt.Sprintf("SELECT %s FROM %s WHERE `path` LIKE ? ORDER BY `sort` ASC, `id` ASC", sysDeptRows, m.table)
  46. if err := m.QueryRowsNoCacheCtx(ctx, &list, query, escaped+"%"); err != nil {
  47. return nil, err
  48. }
  49. return list, nil
  50. }