package services import ( "fmt" "hongze/hz_crm_eta/models/crm" "hongze/hz_crm_eta/models/eta" "hongze/hz_crm_eta/services/alarm_msg" "hongze/hz_crm_eta/utils" "time" ) // HandleSyncSysRole 同步系统角色 func HandleSyncSysRole(source int, roleName string) (err error) { // 角色名称唯一, 所以用角色名称做同步 if roleName == "" { return } if source != utils.SOURCE_CRM_FLAG && source != utils.SOURCE_ETA_FLAG { return } defer func() { if err != nil { tips := fmt.Sprintf("CRM-ETA同步系统角色失败, source: %d, roleName: %s, errMsg: %s", source, roleName, err.Error()) fmt.Println(tips) go alarm_msg.SendAlarmMsg(tips, 3) } }() // CRM if source == utils.SOURCE_CRM_FLAG { // 获取角色不存在, 则表示CRM删除了该角色, 需删除对应ETA角色 crmRole, e := crm.GetSysRoleByName(roleName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取CRM角色信息失败, Err: " + e.Error()) return } _ = eta.DeleteRoleByName(roleName) return } // 获取ETA对应角色, 存在则更新, 否则新增 etaRole, e := eta.GetSysRoleByName(roleName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取ETA对应角色信息失败, Err: " + e.Error()) return } // 新增 newRole := new(eta.SysRole) newRole.RoleName = crmRole.RoleName newRole.RoleType = crmRole.RoleType newRole.RoleTypeCode = crmRole.RoleTypeCode newRole.RoleLevel = crmRole.RoleLevel newRole.CreateTime = time.Now().Local() newRole.ModifyTime = time.Now().Local() e = newRole.Create() if e != nil { err = fmt.Errorf("新增ETA对应角色失败, Err: " + e.Error()) } return } // 更新 etaRole.RoleName = crmRole.RoleName etaRole.RoleType = crmRole.RoleType etaRole.RoleTypeCode = crmRole.RoleTypeCode etaRole.RoleLevel = crmRole.RoleLevel etaRole.ModifyTime = time.Now().Local() cols := []string{"RoleName", "RoleType", "RoleTypeCode", "RoleLevel", "ModifyTime"} e = etaRole.Update(cols) if e != nil { err = fmt.Errorf("更新ETA对应角色失败, Err: " + e.Error()) } return } // ETA etaRole, e := eta.GetSysRoleByName(roleName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取ETA角色信息失败, Err: " + e.Error()) return } _ = crm.DeleteRoleByName(roleName) return } crmRole, e := crm.GetSysRoleByName(roleName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取CRM对应角色信息失败, Err: " + e.Error()) return } // 新增 newRole := new(crm.SysRole) newRole.RoleName = etaRole.RoleName newRole.RoleType = etaRole.RoleType newRole.RoleTypeCode = etaRole.RoleTypeCode newRole.RoleLevel = etaRole.RoleLevel newRole.CreateTime = time.Now().Local() newRole.ModifyTime = time.Now().Local() e = newRole.Create() if e != nil { err = fmt.Errorf("新增CRM对应角色失败, Err: " + e.Error()) } return } // 更新 crmRole.RoleName = etaRole.RoleName crmRole.RoleType = etaRole.RoleType crmRole.RoleTypeCode = etaRole.RoleTypeCode crmRole.RoleLevel = etaRole.RoleLevel crmRole.ModifyTime = time.Now().Local() cols := []string{"RoleName", "RoleType", "RoleTypeCode", "RoleLevel", "ModifyTime"} e = crmRole.Update(cols) if e != nil { err = fmt.Errorf("更新CRM对应角色失败, Err: " + e.Error()) } return } // HandleSyncAdminFromCrm 同步系统用户 func HandleSyncAdminFromCrm(source int, adminName string) (err error) { if adminName == "" { return } if source != utils.SOURCE_CRM_FLAG && source != utils.SOURCE_ETA_FLAG { return } defer func() { if err != nil { tips := fmt.Sprintf("CRM-ETA同步系统用户失败, source: %d, adminName: %s, errMsg: %s", source, adminName, err.Error()) fmt.Println(tips) go alarm_msg.SendAlarmMsg(tips, 3) } }() // CRM if source == utils.SOURCE_CRM_FLAG { // 获取用户不存在, 则表示CRM删除了该用户, 需删除对应ETA用户 crmUser, e := crm.GetSysUserByAdminName(adminName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取CRM用户信息失败, Err: " + e.Error()) return } _ = eta.DeleteSysUserByName(adminName) return } // 获取ETA对应用户, 存在则更新, 否则新增 etaUser, e := eta.GetSysUserByAdminName(adminName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取ETA对应用户信息失败, Err: " + e.Error()) return } // 新增 newUser := new(eta.Admin) newUser.AdminName = crmUser.AdminName newUser.AdminAvatar = crmUser.AdminAvatar newUser.RealName = crmUser.RealName newUser.Password = crmUser.Password newUser.LastUpdatedPasswordTime = crmUser.LastUpdatedPasswordTime newUser.Enabled = crmUser.Enabled newUser.Email = crmUser.Email newUser.LastLoginTime = crmUser.LastLoginTime newUser.CreatedTime = time.Now().Local() newUser.LastUpdatedTime = time.Now().Local() newUser.Role = crmUser.Role newUser.Mobile = crmUser.Mobile newUser.RoleType = crmUser.RoleType newUser.RoleId = crmUser.RoleId // 理论上角色也会同步ID应该也是一样 newUser.RoleName = crmUser.RoleName newUser.RoleTypeCode = crmUser.RoleTypeCode newUser.DepartmentId = crmUser.DepartmentId newUser.DepartmentName = crmUser.DepartmentName newUser.GroupId = crmUser.GroupId newUser.GroupName = crmUser.GroupName newUser.Authority = crmUser.Authority newUser.Position = crmUser.Position newUser.DirectorId = crmUser.DirectorId newUser.DisableTime = crmUser.DisableTime newUser.ChartPermission = crmUser.ChartPermission newUser.EdbPermission = crmUser.EdbPermission newUser.MysteelChemicalPermission = crmUser.MysteelChemicalPermission newUser.OpenId = crmUser.OpenId newUser.UnionId = crmUser.UnionId newUser.PredictEdbPermission = crmUser.PredictEdbPermission newUser.Province = crmUser.Province newUser.ProvinceCode = crmUser.ProvinceCode newUser.City = crmUser.City newUser.CityCode = crmUser.CityCode newUser.EmployeeId = crmUser.EmployeeId e = newUser.Create() if e != nil { err = fmt.Errorf("新增ETA对应用户失败, Err: " + e.Error()) } return } // 更新 etaUser.AdminName = crmUser.AdminName etaUser.AdminAvatar = crmUser.AdminAvatar etaUser.RealName = crmUser.RealName etaUser.Enabled = crmUser.Enabled etaUser.Email = crmUser.Email etaUser.LastUpdatedTime = time.Now().Local() etaUser.Role = crmUser.Role etaUser.Mobile = crmUser.Mobile etaUser.RoleType = crmUser.RoleType etaUser.RoleId = crmUser.RoleId etaUser.RoleName = crmUser.RoleName etaUser.RoleTypeCode = crmUser.RoleTypeCode etaUser.DepartmentId = crmUser.DepartmentId etaUser.DepartmentName = crmUser.DepartmentName etaUser.GroupId = crmUser.GroupId etaUser.GroupName = crmUser.GroupName etaUser.Authority = crmUser.Authority etaUser.Position = crmUser.Position etaUser.DirectorId = crmUser.DirectorId etaUser.DisableTime = crmUser.DisableTime etaUser.ChartPermission = crmUser.ChartPermission etaUser.EdbPermission = crmUser.EdbPermission etaUser.MysteelChemicalPermission = crmUser.MysteelChemicalPermission etaUser.OpenId = crmUser.OpenId etaUser.UnionId = crmUser.UnionId etaUser.PredictEdbPermission = crmUser.PredictEdbPermission etaUser.Province = crmUser.Province etaUser.ProvinceCode = crmUser.ProvinceCode etaUser.City = crmUser.City etaUser.CityCode = crmUser.CityCode etaUser.EmployeeId = crmUser.EmployeeId cols := []string{ "AdminName", "AdminAvatar", "RealName", "Enabled", "Email", "LastUpdatedTime", "Role", "Mobile", "RoleType", "RoleId", "RoleName", "RoleTypeCode", "DepartmentId", "DepartmentName", "GroupId", "GroupName", "Authority", "Position", "DirectorId", "DisableTime", "ChartPermission", "EdbPermission", "MysteelChemicalPermission", "OpenId", "UnionId", "PredictEdbPermission", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId", } e = etaUser.Update(cols) if e != nil { err = fmt.Errorf("更新ETA对应用户失败, Err: " + e.Error()) } return } // ETA etaUser, e := crm.GetSysUserByAdminName(adminName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取ETA用户信息失败, Err: " + e.Error()) return } _ = eta.DeleteSysUserByName(adminName) return } crmUser, e := eta.GetSysUserByAdminName(adminName) if e != nil { if e != utils.ErrNoRow { err = fmt.Errorf("获取ETA对应用户信息失败, Err: " + e.Error()) return } // 新增 newUser := new(eta.Admin) newUser.AdminName = etaUser.AdminName newUser.AdminAvatar = etaUser.AdminAvatar newUser.RealName = etaUser.RealName newUser.Password = etaUser.Password newUser.LastUpdatedPasswordTime = etaUser.LastUpdatedPasswordTime newUser.Enabled = etaUser.Enabled newUser.Email = etaUser.Email newUser.LastLoginTime = etaUser.LastLoginTime newUser.CreatedTime = time.Now().Local() newUser.LastUpdatedTime = time.Now().Local() newUser.Role = etaUser.Role newUser.Mobile = etaUser.Mobile newUser.RoleType = etaUser.RoleType newUser.RoleId = etaUser.RoleId newUser.RoleName = etaUser.RoleName newUser.RoleTypeCode = etaUser.RoleTypeCode newUser.DepartmentId = etaUser.DepartmentId newUser.DepartmentName = etaUser.DepartmentName newUser.GroupId = etaUser.GroupId newUser.GroupName = etaUser.GroupName newUser.Authority = etaUser.Authority newUser.Position = etaUser.Position newUser.DirectorId = etaUser.DirectorId newUser.DisableTime = etaUser.DisableTime newUser.ChartPermission = etaUser.ChartPermission newUser.EdbPermission = etaUser.EdbPermission newUser.MysteelChemicalPermission = etaUser.MysteelChemicalPermission newUser.OpenId = etaUser.OpenId newUser.UnionId = etaUser.UnionId newUser.PredictEdbPermission = etaUser.PredictEdbPermission newUser.Province = etaUser.Province newUser.ProvinceCode = etaUser.ProvinceCode newUser.City = etaUser.City newUser.CityCode = etaUser.CityCode newUser.EmployeeId = etaUser.EmployeeId e = newUser.Create() if e != nil { err = fmt.Errorf("新增ETA对应用户失败, Err: " + e.Error()) } return } // 更新 crmUser.AdminName = etaUser.AdminName crmUser.AdminAvatar = etaUser.AdminAvatar crmUser.RealName = etaUser.RealName crmUser.Password = etaUser.Password crmUser.LastUpdatedPasswordTime = etaUser.LastUpdatedPasswordTime crmUser.Enabled = etaUser.Enabled crmUser.Email = etaUser.Email crmUser.LastUpdatedTime = time.Now().Local() crmUser.Role = etaUser.Role crmUser.Mobile = etaUser.Mobile crmUser.RoleType = etaUser.RoleType crmUser.RoleId = etaUser.RoleId crmUser.RoleName = etaUser.RoleName crmUser.RoleTypeCode = etaUser.RoleTypeCode crmUser.DepartmentId = etaUser.DepartmentId crmUser.DepartmentName = etaUser.DepartmentName crmUser.GroupId = etaUser.GroupId crmUser.GroupName = etaUser.GroupName crmUser.Authority = etaUser.Authority crmUser.Position = etaUser.Position crmUser.DirectorId = etaUser.DirectorId crmUser.DisableTime = etaUser.DisableTime crmUser.ChartPermission = etaUser.ChartPermission crmUser.EdbPermission = etaUser.EdbPermission crmUser.MysteelChemicalPermission = etaUser.MysteelChemicalPermission crmUser.OpenId = etaUser.OpenId crmUser.UnionId = etaUser.UnionId crmUser.PredictEdbPermission = etaUser.PredictEdbPermission crmUser.Province = etaUser.Province crmUser.ProvinceCode = etaUser.ProvinceCode crmUser.City = etaUser.City crmUser.CityCode = etaUser.CityCode crmUser.EmployeeId = etaUser.EmployeeId cols := []string{ "AdminName", "AdminAvatar", "RealName", "Password", "LastUpdatedPasswordTime", "Enabled", "Email", "LastUpdatedTime", "Role", "Mobile", "RoleType", "RoleId", "RoleName", "RoleTypeCode", "DepartmentId", "DepartmentName", "GroupId", "GroupName", "Authority", "Position", "DirectorId", "DisableTime", "ChartPermission", "EdbPermission", "MysteelChemicalPermission", "OpenId", "UnionId", "PredictEdbPermission", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId", } e = crmUser.Update(cols) if e != nil { err = fmt.Errorf("更新CRM对应用户失败, Err: " + e.Error()) } return }