diff --git a/logic/openldap_logic.go b/logic/openldap_logic.go index 2a010ee..507acb3 100644 --- a/logic/openldap_logic.go +++ b/logic/openldap_logic.go @@ -25,7 +25,7 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data var firstDepts []*openldap.Dept // 父ID为根的部门 var otherDepts []*openldap.Dept // 父ID不为根的部门 for _, dept := range depts { - if dept.ParentId == "1" { + if dept.ParentId == "openldap_0" { firstDepts = append(firstDepts, dept) } else { otherDepts = append(otherDepts, dept) @@ -41,6 +41,7 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data SourceDeptId: dept.Id, Source: "openldap", SourceDeptParentId: dept.ParentId, + ParentId: 0, GroupDN: dept.DN, }) if err != nil { @@ -49,7 +50,13 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data } for _, dept := range otherDepts { - err := d.AddDepts(&model.Group{ + // 判断部门名称是否存在 + parentGroup := new(model.Group) + err := isql.Group.Find(tools.H{"source_dept_id": dept.ParentId}, parentGroup) + if err != nil { + return nil, tools.NewMySqlError(fmt.Errorf("查询父级部门失败:%s", err.Error())) + } + err = d.AddDepts(&model.Group{ GroupName: dept.Name, Remark: dept.Remark, Creator: "system", @@ -58,6 +65,7 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data Source: "openldap", SourceDeptParentId: dept.ParentId, GroupDN: dept.DN, + ParentId: parentGroup.ID, }) if err != nil { return nil, tools.NewOperationError(fmt.Errorf("SyncOpenLdapDepts添加其他部门失败:%s", err.Error())) @@ -68,16 +76,9 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data // AddGroup 添加部门数据 func (d OpenLdapLogic) AddDepts(group *model.Group) error { - // 判断部门名称是否存在 - parentGroup := new(model.Group) - err := isql.Group.Find(tools.H{"source_dept_id": group.SourceDeptParentId}, parentGroup) - if err != nil { - return tools.NewMySqlError(fmt.Errorf("查询父级部门失败:%s", err.Error())) - } + // 在数据库中创建组 if !isql.Group.Exist(tools.H{"source_dept_id": group.SourceDeptId}) { - group.ParentId = parentGroup.ID - // 在数据库中创建组 - err = isql.Group.Add(group) + err := isql.Group.Add(group) if err != nil { return err } diff --git a/public/client/openldap/openldap.go b/public/client/openldap/openldap.go index 2f90150..b24a2e1 100644 --- a/public/client/openldap/openldap.go +++ b/public/client/openldap/openldap.go @@ -61,7 +61,7 @@ func GetAllDepts() (ret []*Dept, err error) { ele.Id = strings.Split(strings.Split(v.DN, ",")[0], "=")[1] ele.Remark = v.GetAttributeValue("description") if len(strings.Split(v.DN, ","))-len(strings.Split(config.Conf.Ldap.BaseDN, ",")) == 1 { - ele.ParentId = "openldap_1" + ele.ParentId = "openldap_0" } else { ele.ParentId = strings.Split(strings.Split(v.DN, ",")[1], "=")[1] } diff --git a/public/common/init_mysql_data.go b/public/common/init_mysql_data.go index 1402d3d..aad3384 100644 --- a/public/common/init_mysql_data.go +++ b/public/common/init_mysql_data.go @@ -702,18 +702,6 @@ func InitData() { groups := []model.Group{ { Model: gorm.Model{ID: 1}, - GroupName: "openldaproot", - Remark: "ldap根部门", - Creator: "system", - GroupType: "ou", - ParentId: 0, - SourceDeptId: "openldap_1", - Source: "openldap", - SourceDeptParentId: "openldap_0", - GroupDN: fmt.Sprintf("ou=%s,%s", "openldaproot", config.Conf.Ldap.BaseDN), - }, - { - Model: gorm.Model{ID: 2}, GroupName: config.Conf.DingTalk.Flag + "root", Remark: "钉钉根部门", Creator: "system", @@ -725,7 +713,7 @@ func InitData() { GroupDN: fmt.Sprintf("ou=%s,%s", config.Conf.DingTalk.Flag+"root", config.Conf.Ldap.BaseDN), }, { - Model: gorm.Model{ID: 3}, + Model: gorm.Model{ID: 2}, GroupName: "wecomroot", Remark: "企业微信根部门", Creator: "system", @@ -737,7 +725,7 @@ func InitData() { GroupDN: fmt.Sprintf("ou=%s,%s", config.Conf.WeCom.Flag+"root", config.Conf.Ldap.BaseDN), }, { - Model: gorm.Model{ID: 4}, + Model: gorm.Model{ID: 3}, GroupName: config.Conf.FeiShu.Flag + "root", Remark: "飞书根部门", Creator: "system",