diff --git a/pkg/microservice/aslan/core/common/service/workflowcontroller/jobcontroller/job_approval.go b/pkg/microservice/aslan/core/common/service/workflowcontroller/jobcontroller/job_approval.go index 4a9044df31..d4b32f63af 100644 --- a/pkg/microservice/aslan/core/common/service/workflowcontroller/jobcontroller/job_approval.go +++ b/pkg/microservice/aslan/core/common/service/workflowcontroller/jobcontroller/job_approval.go @@ -201,6 +201,9 @@ func waitForLarkApprove(ctx context.Context, spec *commonmodels.JobTaskApprovalS var userID string if approval.DefaultApprovalInitiator == nil { + if workflowCtx.WorkflowTaskCreatorMobile == "" { + return config.StatusFailed, errors.New("审批发起人手机号码未找到,请正确配置您的手机号码") + } userInfo, err := client.GetUserIDByEmailOrMobile(lark.QueryTypeMobile, workflowCtx.WorkflowTaskCreatorMobile, setting.LarkUserOpenID) if err != nil { return config.StatusFailed, fmt.Errorf("get user lark id by mobile-%s, error: %s", workflowCtx.WorkflowTaskCreatorMobile, err) @@ -208,7 +211,7 @@ func waitForLarkApprove(ctx context.Context, spec *commonmodels.JobTaskApprovalS userID = util.GetStringFromPointer(userInfo.UserId) } else { userID = approval.DefaultApprovalInitiator.ID - formContent = fmt.Sprintf("审批发起人: %s\n%s", workflowCtx.WorkflowTaskCreatorUsername, formContent) + formContent = fmt.Sprintf("工作流执行人: %s\n%s", workflowCtx.WorkflowTaskCreatorUsername, formContent) } log.Infof("waitForLarkApprove: ApproveNodes num %d", len(approval.ApprovalNodes)) instance, err := client.CreateApprovalInstance(&lark.CreateApprovalInstanceArgs{ @@ -535,6 +538,9 @@ func waitForDingTalkApprove(ctx context.Context, spec *commonmodels.JobTaskAppro var userID string if approval.DefaultApprovalInitiator == nil { + if workflowCtx.WorkflowTaskCreatorMobile == "" { + return config.StatusFailed, errors.New("审批发起人手机号码未找到,请正确配置您的手机号码") + } userIDResp, err := client.GetUserIDByMobile(workflowCtx.WorkflowTaskCreatorMobile) if err != nil { return config.StatusFailed, fmt.Errorf("get user dingtalk id by mobile-%s error: %s", workflowCtx.WorkflowTaskCreatorMobile, err) @@ -542,7 +548,7 @@ func waitForDingTalkApprove(ctx context.Context, spec *commonmodels.JobTaskAppro userID = userIDResp.UserID } else { userID = approval.DefaultApprovalInitiator.ID - formContent = fmt.Sprintf("审批发起人: %s\n%s", workflowCtx.WorkflowTaskCreatorUsername, formContent) + formContent = fmt.Sprintf("工作流执行人: %s\n%s", workflowCtx.WorkflowTaskCreatorUsername, formContent) } log.Infof("waitForDingTalkApprove: ApproveNode num %d", len(approval.ApprovalNodes)) diff --git a/pkg/microservice/aslan/core/release_plan/service/approval.go b/pkg/microservice/aslan/core/release_plan/service/approval.go index abab2fc1c8..57af0abf8b 100644 --- a/pkg/microservice/aslan/core/release_plan/service/approval.go +++ b/pkg/microservice/aslan/core/release_plan/service/approval.go @@ -121,6 +121,9 @@ func createDingTalkApproval(approval *models.DingTalkApproval, manager, phone, c var userID string if approval.DefaultApprovalInitiator == nil { + if phone == "" { + return errors.New("审批发起人手机号码未找到,请正确配置您的手机号码") + } userIDResp, err := client.GetUserIDByMobile(phone) if err != nil { return errors.Wrapf(err, "get user dingtalk id by mobile-%s", phone) @@ -414,6 +417,10 @@ func createWorkWXApproval(approval *models.WorkWXApproval, manager, phone, conte if approval.CreatorUser != nil { applicant = approval.CreatorUser.ID } else { + if phone == "" { + return errors.New("审批发起人手机号码未找到,请正确配置您的手机号码") + } + content = fmt.Sprintf("审批发起人: %s\n%s", manager, content) phoneInt, err := strconv.Atoi(phone) if err != nil { @@ -477,6 +484,9 @@ func createLarkApproval(approval *models.LarkApproval, manager, phone, content s var userID string if approval.DefaultApprovalInitiator == nil { + if phone == "" { + return errors.New("审批发起人手机号码未找到,请正确配置您的手机号码") + } userInfo, err := client.GetUserIDByEmailOrMobile(lark.QueryTypeMobile, phone, setting.LarkUserOpenID) if err != nil { return errors.Wrapf(err, "get user lark id by mobile-%s", phone) diff --git a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go index 5cca1ad9e8..a792699f7a 100644 --- a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go +++ b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go @@ -335,10 +335,6 @@ func CheckWorkflowV4ApprovalInitiator(workflowName, uid string, log *zap.Sugared return errors.New("failed to get user info by id") } - if len(userInfo.Phone) == 0 { - return e.ErrCheckApprovalPhoneNotFound.AddDesc("phone not configured") - } - // If default approval initiator is not set, check whether the user's mobile phone number can be queried // and only need to check once for each im app type isMobileChecked := map[string]bool{} @@ -362,6 +358,10 @@ func CheckWorkflowV4ApprovalInitiator(workflowName, uid string, log *zap.Sugared } if initiator := spec.LarkApproval.DefaultApprovalInitiator; initiator == nil { + if len(userInfo.Phone) == 0 { + return e.ErrCheckApprovalPhoneNotFound.AddDesc("phone not configured") + } + if isMobileChecked[spec.LarkApproval.ID] { continue } @@ -382,6 +382,10 @@ func CheckWorkflowV4ApprovalInitiator(workflowName, uid string, log *zap.Sugared } if initiator := spec.DingTalkApproval.DefaultApprovalInitiator; initiator == nil { + if len(userInfo.Phone) == 0 { + return e.ErrCheckApprovalPhoneNotFound.AddDesc("phone not configured") + } + if isMobileChecked[spec.DingTalkApproval.ID] { continue } @@ -403,6 +407,10 @@ func CheckWorkflowV4ApprovalInitiator(workflowName, uid string, log *zap.Sugared } if initiator := spec.WorkWXApproval.CreatorUser; initiator == nil { + if len(userInfo.Phone) == 0 { + return e.ErrCheckApprovalPhoneNotFound.AddDesc("phone not configured") + } + if isMobileChecked[spec.DingTalkApproval.ID] { continue }