hasOne(Visit::class, 'id', 'visit_id'); } public function auditAdmin() { return $this->hasOne(Admin::class, 'id', 'audit_admin_id'); } /** * 短信通知下一个审核人 */ public static function smsNextAudit($visit, $nowVisitAuditLevel = -1) { // 通知下一个审核人 $mobile = Admin::where(function ($query) use ($visit, $nowVisitAuditLevel) { if ($nowVisitAuditLevel == -1) { // 通知第一个审核人 $adminId = VisitAudit::where('visit_id', $visit->id)->orderBy('level', 'asc')->value('audit_admin_id'); } else { $adminId = VisitAudit::where('visit_id', $visit->id) ->where('level', '>', $nowVisitAuditLevel) ->orderBy('level', 'asc') ->value('audit_admin_id'); } $query->where('id', $adminId); })->value('mobile'); if (empty($mobile)) { return false; } $vars = ['date' => $visit->date, 'name' => $visit->name, 'phone_number' => $visit->mobile]; if ($nowVisitAuditLevel == -1) { $template_id = 'uAQaB4'; } else { $uname = Admin::where('id', $visit->accept_admin_id)->value('name'); $vars = ['date' => $visit->date, 'name' => $visit->name, 'phone_number' => $visit->mobile, 'uname' => $uname]; $template_id = 'QXPs33'; } //sms($mobile, $vars, $template_id); return true; } /** * 邮件通知下一个审核人 */ public static function emailNextAudit($visit, $nowVisitAuditLevel = -1) { // 找到下一个审核人 if ($nowVisitAuditLevel == -1) { // 通知第一个审核人 $admin = Admin::where('id', function ($query) use ($visit) { $query->select('audit_admin_id') ->from('visit_audits') ->where('visit_id', $visit->id) ->orderBy('level', 'asc') ->limit(1); })->first(); $isFirstAudit = true; } else { // 通知下一级审核人 $admin = Admin::where('id', function ($query) use ($visit, $nowVisitAuditLevel) { $query->select('audit_admin_id') ->from('visit_audits') ->where('visit_id', $visit->id) ->where('level', '>', $nowVisitAuditLevel) ->orderBy('level', 'asc') ->limit(1); })->first(); $isFirstAudit = false; } if (empty($admin)) { return false; } // 准备邮件数据 $visitData = [ 'date' => $visit->date, 'name' => $visit->name, 'mobile' => $visit->mobile, 'reason' => $visit->reason ?? '' ]; if (!$isFirstAudit) { // 获取上一级审核人姓名 $previousAdmin = Admin::where('id', $visit->accept_admin_id)->value('name'); $visitData['previous_admin'] = $previousAdmin; } // 发送邮件通知 $admin->notify(new AuditEmailNotify($visitData, $isFirstAudit)); return true; } }