geterpcitytreelogic.go 1005 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package logic
  2. import (
  3. "context"
  4. "git.i2edu.net/i2/i2-bill-erp/utils"
  5. "git.i2edu.net/i2/i2-bill-erp/internal/svc"
  6. "git.i2edu.net/i2/i2-bill-erp/transform"
  7. "github.com/tal-tech/go-zero/core/logx"
  8. )
  9. type GetErpCityTreeLogic struct {
  10. ctx context.Context
  11. svcCtx *svc.ServiceContext
  12. logx.Logger
  13. }
  14. func NewGetErpCityTreeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetErpCityTreeLogic {
  15. return &GetErpCityTreeLogic{
  16. ctx: ctx,
  17. svcCtx: svcCtx,
  18. Logger: logx.WithContext(ctx),
  19. }
  20. }
  21. func (l *GetErpCityTreeLogic) GetErpCityTree() (*transform.TreeNodes, error) {
  22. var nodes = new([]*transform.TreeNode)
  23. sql := `select
  24. base_organ.id,
  25. base_organ.name,
  26. CASE WHEN base_organ.parent != 0 THEN base_organ.parent END parent
  27. from
  28. base_organ
  29. where
  30. base_organ.del_flag = 0
  31. group by base_organ.id`
  32. err := l.svcCtx.SqlConn.QueryRows(nodes, sql)
  33. if err != nil {
  34. return nil, err
  35. }
  36. res, err := utils.BuildTree(nodes)
  37. return &transform.TreeNodes{Nodes: res}, err
  38. }