package logic import ( "encoding/json" "ik3cloud/app/common" "ik3cloud/app/config" "ik3cloud/app/lib/ik3cloud" ik3cloud2 "git.kumo.work/shama/service/ik3cloud" ) var DepartmentLogic = &departmentLogic{} type departmentLogic struct { } // All @TITLE 全部部门 func (d *departmentLogic) All() (result []ik3cloud2.DepartmentItem, err error) { raw, err := ik3cloud.Client.ExecuteBillQuery(map[string]interface{}{ "FormId": "BD_Department", "FieldKeys": "FNumber,FName,FParentID.FNumber,FParentID.FName", "FilterString": []map[string]interface{}{{ "FieldName": "FUseOrgId.FNumber", "Compare": "67", "Value": config.Config.Ik3cloud.OrganizationNumber, "Left": "", "Right": "", "Logic": "", }}, }) if err != nil { return } var data [][]*string if err = json.Unmarshal(raw, &data); err != nil { return } for _, item := range data { result = append(result, ik3cloud2.DepartmentItem{ Number: item[0], Name: item[1], ParentNumber: item[2], ParentName: item[3], }) } return d.getTree(result), nil } // @Title 获取菜单树 func (d *departmentLogic) getTree(datas []ik3cloud2.DepartmentItem) (result []ik3cloud2.DepartmentItem) { result = []ik3cloud2.DepartmentItem{} for i, item := range datas { if item.ParentNumber != nil { for index, value := range datas { if common.PtrCmp(item.ParentNumber, value.Number) { datas[index].Children = append(datas[index].Children, &datas[i]) break } } } } for _, item := range datas { if item.ParentNumber != nil { result = append(result, item) } } return }