package logic import ( "context" "git.i2edu.net/i2/i2-bill-erp/model" "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" "git.i2edu.net/i2/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(in *transform.Empty) (*transform.TreeNodes, error) { var nodes = new([]*transform.TreeNode) var cits = new([]model.BaseOrgan) sql := `select * from base_organ where base_organ.del_flag = 0 and organ_type != 105 group by base_organ.id` err := l.svcCtx.SqlConn.QueryRows(cits, sql) if err != nil { return nil, err } for _, c := range *cits { node := new(transform.TreeNode) node.Id = c.Id node.Parent = c.Parent.Int64 node.Text = c.Name.String *nodes = append(*nodes, node) } res, err := utils.BuildTree(nodes) return &transform.TreeNodes{Nodes: res}, err }