package logic import ( "context" "git.i2edu.net/i2/i2-bill-erp/utils" "git.i2edu.net/i2/i2-bill-erp/internal/svc" "git.i2edu.net/i2/i2-bill-erp/transform" "github.com/tal-tech/go-zero/core/logx" ) type GetErpCityTreeLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewGetErpCityTreeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetErpCityTreeLogic { return &GetErpCityTreeLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *GetErpCityTreeLogic) GetErpCityTree() (*transform.TreeNodes, error) { var nodes = new([]*transform.TreeNode) sql := `select base_organ.id, base_organ.name, CASE WHEN base_organ.parent != 0 THEN base_organ.parent END parent from base_organ where base_organ.del_flag = 0 group by base_organ.id` err := l.svcCtx.SqlConn.QueryRows(nodes, sql) if err != nil { return nil, err } res, err := utils.BuildTree(nodes) return &transform.TreeNodes{Nodes: res}, err }