Skip to content

Commit f46c195

Browse files
authored
fix: 调整原ldap同步逻辑,同步之后与原来完全对齐 (#61)
1 parent 637d6b2 commit f46c195

File tree

3 files changed

+15
-26
lines changed

3 files changed

+15
-26
lines changed

logic/openldap_logic.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data
2525
var firstDepts []*openldap.Dept // 父ID为根的部门
2626
var otherDepts []*openldap.Dept // 父ID不为根的部门
2727
for _, dept := range depts {
28-
if dept.ParentId == "1" {
28+
if dept.ParentId == "openldap_0" {
2929
firstDepts = append(firstDepts, dept)
3030
} else {
3131
otherDepts = append(otherDepts, dept)
@@ -41,6 +41,7 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data
4141
SourceDeptId: dept.Id,
4242
Source: "openldap",
4343
SourceDeptParentId: dept.ParentId,
44+
ParentId: 0,
4445
GroupDN: dept.DN,
4546
})
4647
if err != nil {
@@ -49,7 +50,13 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data
4950
}
5051

5152
for _, dept := range otherDepts {
52-
err := d.AddDepts(&model.Group{
53+
// 判断部门名称是否存在
54+
parentGroup := new(model.Group)
55+
err := isql.Group.Find(tools.H{"source_dept_id": dept.ParentId}, parentGroup)
56+
if err != nil {
57+
return nil, tools.NewMySqlError(fmt.Errorf("查询父级部门失败:%s", err.Error()))
58+
}
59+
err = d.AddDepts(&model.Group{
5360
GroupName: dept.Name,
5461
Remark: dept.Remark,
5562
Creator: "system",
@@ -58,6 +65,7 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data
5865
Source: "openldap",
5966
SourceDeptParentId: dept.ParentId,
6067
GroupDN: dept.DN,
68+
ParentId: parentGroup.ID,
6169
})
6270
if err != nil {
6371
return nil, tools.NewOperationError(fmt.Errorf("SyncOpenLdapDepts添加其他部门失败:%s", err.Error()))
@@ -68,16 +76,9 @@ func (d *OpenLdapLogic) SyncOpenLdapDepts(c *gin.Context, req interface{}) (data
6876

6977
// AddGroup 添加部门数据
7078
func (d OpenLdapLogic) AddDepts(group *model.Group) error {
71-
// 判断部门名称是否存在
72-
parentGroup := new(model.Group)
73-
err := isql.Group.Find(tools.H{"source_dept_id": group.SourceDeptParentId}, parentGroup)
74-
if err != nil {
75-
return tools.NewMySqlError(fmt.Errorf("查询父级部门失败:%s", err.Error()))
76-
}
79+
// 在数据库中创建组
7780
if !isql.Group.Exist(tools.H{"source_dept_id": group.SourceDeptId}) {
78-
group.ParentId = parentGroup.ID
79-
// 在数据库中创建组
80-
err = isql.Group.Add(group)
81+
err := isql.Group.Add(group)
8182
if err != nil {
8283
return err
8384
}

public/client/openldap/openldap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func GetAllDepts() (ret []*Dept, err error) {
6161
ele.Id = strings.Split(strings.Split(v.DN, ",")[0], "=")[1]
6262
ele.Remark = v.GetAttributeValue("description")
6363
if len(strings.Split(v.DN, ","))-len(strings.Split(config.Conf.Ldap.BaseDN, ",")) == 1 {
64-
ele.ParentId = "openldap_1"
64+
ele.ParentId = "openldap_0"
6565
} else {
6666
ele.ParentId = strings.Split(strings.Split(v.DN, ",")[1], "=")[1]
6767
}

public/common/init_mysql_data.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -702,18 +702,6 @@ func InitData() {
702702
groups := []model.Group{
703703
{
704704
Model: gorm.Model{ID: 1},
705-
GroupName: "openldaproot",
706-
Remark: "ldap根部门",
707-
Creator: "system",
708-
GroupType: "ou",
709-
ParentId: 0,
710-
SourceDeptId: "openldap_1",
711-
Source: "openldap",
712-
SourceDeptParentId: "openldap_0",
713-
GroupDN: fmt.Sprintf("ou=%s,%s", "openldaproot", config.Conf.Ldap.BaseDN),
714-
},
715-
{
716-
Model: gorm.Model{ID: 2},
717705
GroupName: config.Conf.DingTalk.Flag + "root",
718706
Remark: "钉钉根部门",
719707
Creator: "system",
@@ -725,7 +713,7 @@ func InitData() {
725713
GroupDN: fmt.Sprintf("ou=%s,%s", config.Conf.DingTalk.Flag+"root", config.Conf.Ldap.BaseDN),
726714
},
727715
{
728-
Model: gorm.Model{ID: 3},
716+
Model: gorm.Model{ID: 2},
729717
GroupName: "wecomroot",
730718
Remark: "企业微信根部门",
731719
Creator: "system",
@@ -737,7 +725,7 @@ func InitData() {
737725
GroupDN: fmt.Sprintf("ou=%s,%s", config.Conf.WeCom.Flag+"root", config.Conf.Ldap.BaseDN),
738726
},
739727
{
740-
Model: gorm.Model{ID: 4},
728+
Model: gorm.Model{ID: 3},
741729
GroupName: config.Conf.FeiShu.Flag + "root",
742730
Remark: "飞书根部门",
743731
Creator: "system",

0 commit comments

Comments
 (0)