fix: 修复同步用户时处理离职用户的异常

This commit is contained in:
eryajf 2023-11-08 14:58:23 +08:00
parent d9bb571250
commit 23845d7334
3 changed files with 15 additions and 7 deletions

View File

@ -16,7 +16,7 @@ import (
type DingTalkLogic struct { type DingTalkLogic struct {
} }
//通过钉钉获取部门信息 // 通过钉钉获取部门信息
func (d *DingTalkLogic) SyncDingTalkDepts(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) { func (d *DingTalkLogic) SyncDingTalkDepts(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
// 1.获取所有部门 // 1.获取所有部门
deptSource, err := dingtalk.GetAllDepts() deptSource, err := dingtalk.GetAllDepts()
@ -78,7 +78,7 @@ func (d DingTalkLogic) AddDepts(group *model.Group) error {
return nil return nil
} }
//根据现有数据库同步到的部门信息,开启用户同步 // 根据现有数据库同步到的部门信息,开启用户同步
func (d DingTalkLogic) SyncDingTalkUsers(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) { func (d DingTalkLogic) SyncDingTalkUsers(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
// 1.获取钉钉用户列表 // 1.获取钉钉用户列表
staffSource, err := dingtalk.GetAllUsers() staffSource, err := dingtalk.GetAllUsers()
@ -111,7 +111,11 @@ func (d DingTalkLogic) SyncDingTalkUsers(c *gin.Context, req interface{}) (data
} }
// 4.遍历id开始处理 // 4.遍历id开始处理
for _, uid := range userIds { for _, uid := range userIds {
if isql.User.Exist(tools.H{"source_user_id": fmt.Sprintf("%s_%s", config.Conf.DingTalk.Flag, uid)}) { if isql.User.Exist(
tools.H{
"source_user_id": fmt.Sprintf("%s_%s", config.Conf.DingTalk.Flag, uid),
"status": 1, //只处理1在职的
}) {
user := new(model.User) user := new(model.User)
err = isql.User.Find(tools.H{"source_user_id": fmt.Sprintf("%s_%s", config.Conf.DingTalk.Flag, uid)}, user) err = isql.User.Find(tools.H{"source_user_id": fmt.Sprintf("%s_%s", config.Conf.DingTalk.Flag, uid)}, user)
if err != nil { if err != nil {

View File

@ -107,7 +107,11 @@ func (d FeiShuLogic) SyncFeiShuUsers(c *gin.Context, req interface{}) (data inte
} }
// 4.遍历id开始处理 // 4.遍历id开始处理
for _, uid := range userIds { for _, uid := range userIds {
if isql.User.Exist(tools.H{"source_user_id": fmt.Sprintf("%s_%s", config.Conf.FeiShu.Flag, uid)}) { if isql.User.Exist(
tools.H{
"status": 1, //只处理1在职的
"source_user_id": fmt.Sprintf("%s_%s", config.Conf.FeiShu.Flag, uid),
}) {
user := new(model.User) user := new(model.User)
err = isql.User.Find(tools.H{"source_union_id": fmt.Sprintf("%s_%s", config.Conf.FeiShu.Flag, uid)}, user) err = isql.User.Find(tools.H{"source_union_id": fmt.Sprintf("%s_%s", config.Conf.FeiShu.Flag, uid)}, user)
if err != nil { if err != nil {

View File

@ -17,7 +17,7 @@ import (
type WeComLogic struct { type WeComLogic struct {
} }
//通过企业微信获取部门信息 // 通过企业微信获取部门信息
func (d *WeComLogic) SyncWeComDepts(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) { func (d *WeComLogic) SyncWeComDepts(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
// 1.获取所有部门 // 1.获取所有部门
deptSource, err := wechat.GetAllDepts() deptSource, err := wechat.GetAllDepts()
@ -80,7 +80,7 @@ func (d WeComLogic) AddDepts(group *model.Group) error {
return nil return nil
} }
//根据现有数据库同步到的部门信息,开启用户同步 // 根据现有数据库同步到的部门信息,开启用户同步
func (d WeComLogic) SyncWeComUsers(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) { func (d WeComLogic) SyncWeComUsers(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
// 1.获取企业微信用户列表 // 1.获取企业微信用户列表
staffSource, err := wechat.GetAllUsers() staffSource, err := wechat.GetAllUsers()
@ -126,7 +126,7 @@ func (d WeComLogic) SyncWeComUsers(c *gin.Context, req interface{}) (data interf
// 4.遍历id开始处理 // 4.遍历id开始处理
for _, userTmp := range res { for _, userTmp := range res {
user := new(model.User) user := new(model.User)
err = isql.User.Find(tools.H{"source_user_id": userTmp.SourceUserId}, user) err = isql.User.Find(tools.H{"source_user_id": userTmp.SourceUserId, "status": 1}, user)
if err != nil { if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("在MySQL查询用户失败: " + err.Error())) return nil, tools.NewMySqlError(fmt.Errorf("在MySQL查询用户失败: " + err.Error()))
} }