fix: 调整原ldap同步逻辑,同步之后与原来完全对齐 (#61)

This commit is contained in:
二丫讲梵 2022-07-10 17:06:49 +08:00 committed by GitHub
parent 637d6b2bbe
commit f46c19510d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 26 deletions

View File

@ -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
}

View File

@ -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]
}

View File

@ -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",