"失陷事件", "20" => "脆弱性", "30" => "残余攻击" ); public $warning_level = array( "10" => "已失陷", "20" => "高可疑", "30" => "低可疑", "40" => "高危", "50" => "中危", "60" => "低危" ); function __construct() { $this->CI = & get_instance(); $this->CI->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file')); $this->setting = $this->CI->cache->get('setting'); $this->CI->load->helper(array('sms','date')); $this->CI->load->library('mailer'); $this->CI->mailer->set_config($this->setting); $this->CI->load->model("noticeslog_model"); $this->CI->load->model("user_model"); if($this->setting['is_sms'] == "1" && $this->setting['sms_type'] == '20' && $this->setting['product'] =='Dysmsapi'){ $this->Aliyunsms = new Aliyunsms(); } } /** * 生成工单 * @param $workorder */ public function create_workorder($workorder){ $receive_user = $this->CI->user_model->get_user_with_user_id($workorder['receive_user_id']); if($this->setting['is_sms'] && in_array("10",$workorder['send_type'])){ $sms_content = '你有新工单需要处理,工单ID:'.$workorder['workorder_id'].',工单名称:'.$workorder['workorder_name'].',类型:'.$workorder['type'].',备注:'.$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content']; $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "sms"; $notices_log['mobile'] = $receive_user['mobile']; $notices_log['content'] = $sms_content; if($this->setting['sms_type'] == '10' ){ if(send_by_modem($this->setting,$receive_user['mobile'],$sms_content)){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } }elseif($this->setting['sms_type'] == '20' ){ $sms_content = array( "workorder_id"=>$workorder['workorder_id'], "workorder_name"=>$workorder['workorder_name'], "workorder_type"=>$workorder['type'], "remark_content"=>$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content'] ); $resp = $this->Aliyunsms->sendSms($receive_user['mobile'],$this->setting['template_codes'][0],$sms_content); if($resp['Code'] == 'OK'){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } if($this->setting['is_email'] && in_array("20",$workorder['send_type'])){ $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "email"; $notices_log['recipient'] = $receive_user['email']; $notices_log['subject'] = "系统有新工单请处理,工单ID:".$workorder['workorder_id']; $email_content = '
'; $email_content .='

'.$receive_user['name'].',您好!

'; $email_content .='

系统有新工单请处理:

'; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; foreach($workorder['warning_list'] as $key=>$val) { $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; } $email_content .=''; $email_content .=''; $email_content .=''; $email_content .='
'; $email_content .='工单ID:'.$workorder['workorder_id'].'工单名称:'.$workorder['workorder_name'].''; $email_content .='
工单名称类型等级时间告警详情
'.$val['warning_name'].''.$this->warning_type[$val['type']].''.$this->warning_level[$val['level']].''.date("Y-m-d H:i:s",$val['create_time']->toDateTime()->getTimestamp()).''.$val['content'].'
备注:'.$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content'].'
'; $email_content .='


 


 

'; $email_content .='

系统管理员  
'; $email_content .=date("Y年m月d日",time()).'

'; $email_content .='
'; $notices_log['content'] = $email_content; if($this->CI->mailer->send_email($receive_user['email'],$notices_log['subject'],$notices_log['content'])){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } /** * 签收工单 * @param $workorder * @param $remark */ public function sign_workorder($workorder,$remark){ $receive_user = $this->CI->user_model->get_user_with_user_id($workorder['receive_user_id']); $admin_list = $this->CI->user_model->select_users("1"); $sso_admin_list = $this->CI->user_model->set_collection_name("sso_users")->select_users("1"); $mobiles = array(); $emails = array(); foreach ($admin_list as $key => $val){ $mobiles[] = $val['mobile']; $emails[] = $val['email']; } foreach ($sso_admin_list as $key => $val){ $mobiles[] = $val['mobile']; $emails[] = $val['email']; } if($this->setting['is_sms'] && in_array("10",$workorder['send_type'])){ $sms_content = '工单ID:'.$workorder['workorder_id'].',工单名称:'.$workorder['workorder_name'].',类型:'.$workorder['type'].',已由责任人'.$receive_user['name'].'签收,备注:'.$remark['remark_content']; for($i = 0;$iCI->noticeslog_model->get_model(); $notices_log['type'] = "sms"; $notices_log['content'] = $sms_content; $notices_log['log_id'] = $this->create_id(); $notices_log['mobile'] = $mobiles[$i]; if($this->setting['sms_type'] == '10' ){ if(send_by_modem($this->setting, $notices_log['mobile'], $sms_content)){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } }elseif($this->setting['sms_type'] == '20' ){ $sms_content = array( "workorder_id"=>$workorder['workorder_id'], "workorder_name"=>$workorder['workorder_name'], "workorder_type"=>$workorder['type'], "receive_user_name"=>$receive_user['name'], "remark_content"=>$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content'] ); $resp = $this->Aliyunsms->sendSms($notices_log['mobile'],$this->setting['template_codes'][1],$sms_content); if($resp['Code'] == 'OK'){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } if($this->setting['is_email'] && in_array("20",$workorder['send_type'])){ $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "email"; $notices_log['subject'] = "工单ID:".$workorder['workorder_id']."已由责任人:".$receive_user['name']."签收"; $email_content = '
'; $email_content .='

系统管理员,您好!

'; $email_content .='

以下工单已由责任人:'.$receive_user['name'].'签收:

'; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; foreach($workorder['warning_list'] as $key=>$val) { $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; } $email_content .=''; $email_content .=''; $email_content .=''; $email_content .='
'; $email_content .='工单ID:'.$workorder['workorder_id'].'工单名称:'.$workorder['workorder_name'].''; $email_content .='
工单名称类型等级时间告警详情
'.$val['warning_name'].''.$this->warning_type[$val['type']].''.$this->warning_level[$val['level']].''.date("Y-m-d H:i:s",$val['create_time']->toDateTime()->getTimestamp()).''.$val['content'].'
备注:'.$remark['remark_content'].'
'; $email_content .='


 


 

'; $email_content .='

责任人:'.$receive_user['name'].' 
'; $email_content .=date("Y年m月d日",time()).'

'; $email_content .='
'; $notices_log['recipient'] = implode(",",$emails); $notices_log['content'] = $email_content; for ($i=0;$iCI->mailer->add_recipient($emails[$i]); } if ($this->CI->mailer->send_email("", $notices_log['subject'], $notices_log['content'])) { $notices_log['status'] = "1"; } else { $notices_log['status'] = "0"; } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } /** * 核查工单未发现问题 * @param $workorder * @param $remark */ public function check_workorder($workorder,$remark){ $receive_user = $this->CI->user_model->get_user_with_user_id($workorder['receive_user_id']); $admin_list = $this->CI->user_model->select_users("1"); $sso_admin_list = $this->CI->user_model->set_collection_name("sso_users")->select_users("1"); $mobiles = array(); $emails = array(); foreach ($admin_list as $key => $val){ $mobiles[] = $val['mobile']; $emails[] = $val['email']; } foreach ($sso_admin_list as $key => $val){ $mobiles[] = $val['mobile']; $emails[] = $val['email']; } if($this->setting['is_sms'] && in_array("10",$workorder['send_type'])){ $sms_content = '工单ID:'.$workorder['workorder_id'].',工单名称:'.$workorder['workorder_name'].',类型:'.$workorder['type'].',已由责任人'.$receive_user['name'].'核查无问题,备注:'.$remark['remark_content']; for($i = 0;$iCI->noticeslog_model->get_model(); $notices_log['type'] = "sms"; $notices_log['content'] = $sms_content; $notices_log['log_id'] = $this->create_id(); $notices_log['mobile'] = $mobiles[$i]; if($this->setting['sms_type'] == '10' ){ if(send_by_modem($this->setting, $notices_log['mobile'], $sms_content)){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } }elseif($this->setting['sms_type'] == '20' ){ $sms_content = array( "workorder_id"=>$workorder['workorder_id'], "workorder_name"=>$workorder['workorder_name'], "workorder_type"=>$workorder['type'], "receive_user_name"=>$receive_user['name'], "remark_content"=>$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content'] ); $resp = $this->Aliyunsms->sendSms($notices_log['mobile'],$this->setting['template_codes'][2],$sms_content); if($resp['Code'] == 'OK'){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } if($this->setting['is_email'] && in_array("20",$workorder['send_type'])){ $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "email"; $notices_log['subject'] = "工单ID:".$workorder['workorder_id']."已由责任人:".$receive_user['name']."核查无问题"; $email_content = '
'; $email_content .='

系统管理员,您好!

'; $email_content .='

以下工单已由责任人:'.$receive_user['name'].'核查无问题:

'; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; foreach($workorder['warning_list'] as $key=>$val) { $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; } $email_content .=''; $email_content .=''; $email_content .=''; $email_content .='
'; $email_content .='工单ID:'.$workorder['workorder_id'].'工单名称:'.$workorder['workorder_name'].''; $email_content .='
工单名称类型等级时间告警详情
'.$val['warning_name'].''.$this->warning_type[$val['type']].''.$this->warning_level[$val['level']].''.date("Y-m-d H:i:s",$val['create_time']->toDateTime()->getTimestamp()).''.$val['content'].'
备注:'.$remark['remark_content'] .'
'; $email_content .='


 


 

'; $email_content .='

责任人:'.$receive_user['name'].' 
'; $email_content .=date("Y年m月d日",time()).'

'; $email_content .='
'; $notices_log['recipient'] = implode(",",$emails); $notices_log['content'] = $email_content; for ($i=0;$iCI->mailer->add_recipient($emails[$i]); } if($remark['remark_file']){ $attachments = getcwd().'/static/upload'.$remark['remark_file']; }else{ $attachments = null; } if ($this->CI->mailer->send_email("", $notices_log['subject'], $notices_log['content'],$attachments)) { $notices_log['status'] = "1"; } else { $notices_log['status'] = "0"; } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } /** * 工单已处理 * @param $workorder * @param $remark */ public function doit_workorder($workorder,$remark){ $receive_user = $this->CI->user_model->get_user_with_user_id($workorder['receive_user_id']); $admin_list = $this->CI->user_model->select_users("1"); $sso_admin_list = $this->CI->user_model->set_collection_name("sso_users")->select_users("1"); $mobiles = array(); $emails = array(); foreach ($admin_list as $key => $val){ $mobiles[] = $val['mobile']; $emails[] = $val['email']; } foreach ($sso_admin_list as $key => $val){ $mobiles[] = $val['mobile']; $emails[] = $val['email']; } if($this->setting['is_sms'] && in_array("10",$workorder['send_type'])){ $sms_content = '工单ID:'.$workorder['workorder_id'].',工单名称:'.$workorder['workorder_name'].',类型:'.$workorder['type'].',已由责任人'.$receive_user['name'].'处理完成,备注:'.$remark['remark_content']; for($i = 0;$iCI->noticeslog_model->get_model(); $notices_log['type'] = "sms"; $notices_log['content'] = $sms_content; $notices_log['log_id'] = $this->create_id(); $notices_log['mobile'] = $mobiles[$i]; if($this->setting['sms_type'] == '10' ){ if(send_by_modem($this->setting, $notices_log['mobile'], $sms_content)){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } }elseif($this->setting['sms_type'] == '20' ){ $sms_content = array( "workorder_id"=>$workorder['workorder_id'], "workorder_name"=>$workorder['workorder_name'], "workorder_type"=>$workorder['type'], "receive_user_name"=>$receive_user['name'], "remark_content"=>$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content'] ); $resp = $this->Aliyunsms->sendSms($notices_log['mobile'],$this->setting['template_codes'][3],$sms_content); if($resp['Code'] == 'OK'){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } if($this->setting['is_email'] && in_array("20",$workorder['send_type'])){ $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "email"; $notices_log['subject'] = "工单ID:".$workorder['workorder_id']."已由责任人:".$receive_user['name']."处理完成"; $email_content = '
'; $email_content .='

系统管理员,您好!

'; $email_content .='

以下工单已由责任人:'.$receive_user['name'].'处理完成:

'; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; foreach($workorder['warning_list'] as $key=>$val) { $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; } $email_content .=''; $email_content .=''; $email_content .=''; $email_content .='
'; $email_content .='工单ID:'.$workorder['workorder_id'].'工单名称:'.$workorder['workorder_name'].''; $email_content .='
工单名称类型等级时间告警详情
'.$val['warning_name'].''.$this->warning_type[$val['type']].''.$this->warning_level[$val['level']].''.date("Y-m-d H:i:s",$val['create_time']->toDateTime()->getTimestamp()).''.$val['content'].'
备注:'.$remark['remark_content'] .'
'; $email_content .='


 


 

'; $email_content .='

责任人:'.$receive_user['name'].' 
'; $email_content .=date("Y年m月d日",time()).'

'; $email_content .='
'; $notices_log['recipient'] = implode(",",$emails); $notices_log['content'] = $email_content; for ($i=0;$iCI->mailer->add_recipient($emails[$i]); } if($remark['remark_file']){ $attachments = getcwd().'/static/upload'.$remark['remark_file']; }else{ $attachments = null; } if ($this->CI->mailer->send_email("", $notices_log['subject'], $notices_log['content'],$attachments)) { $notices_log['status'] = "1"; } else { $notices_log['status'] = "0"; } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } /** * 驳回工单 * @param $workorder * @param $remark */ public function reject_workorder($workorder,$remark){ $receive_user = $this->CI->user_model->get_user_with_user_id($workorder['receive_user_id']); if($this->setting['is_sms'] && in_array("10",$workorder['send_type'])){ $sms_content = '你的工单已由管理员驳回,请重新处理。工单ID:'.$workorder['workorder_id'].',工单名称:'.$workorder['workorder_name'].',类型:'.$workorder['type'].',备注:'.$remark['remark_content']; $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "sms"; $notices_log['mobile'] = $receive_user['mobile']; $notices_log['content'] = $sms_content; if($this->setting['sms_type'] == '10' ){ if(send_by_modem($this->setting, $receive_user['mobile'], $sms_content)){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } }elseif($this->setting['sms_type'] == '20' ){ $sms_content = array( "workorder_id"=>$workorder['workorder_id'], "workorder_name"=>$workorder['workorder_name'], "workorder_type"=>$workorder['type'], "remark_content"=>$workorder['remark_list'][count($workorder['remark_list'])-1]['remark_content'] ); $resp = $this->Aliyunsms->sendSms($receive_user['mobile'],$this->setting['template_codes'][4],$sms_content); if($resp['Code'] == 'OK'){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } if($this->setting['is_email'] && in_array("20",$workorder['send_type'])){ $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "email"; $notices_log['recipient'] = $receive_user['email']; $notices_log['subject'] = "你的工单已由管理员驳回,请重新处理,工单ID:".$workorder['workorder_id']; $email_content = '
'; $email_content .='

'.$receive_user['name'].',您好!

'; $email_content .='

以下工单已由管理员驳回,请重新处理:

'; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; foreach($workorder['warning_list'] as $key=>$val) { $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; } $email_content .=''; $email_content .=''; $email_content .=''; $email_content .='
'; $email_content .='工单ID:'.$workorder['workorder_id'].'工单名称:'.$workorder['workorder_name'].''; $email_content .='
工单名称类型等级时间告警详情
'.$val['warning_name'].''.$this->warning_type[$val['type']].''.$this->warning_level[$val['level']].''.date("Y-m-d H:i:s",$val['create_time']->toDateTime()->getTimestamp()).''.$val['content'].'
备注:'.$remark['remark_content'] .'
'; $email_content .='


 


 

'; $email_content .='

系统管理员  
'; $email_content .=date("Y年m月d日",time()).'

'; $email_content .='
'; $notices_log['content'] = $email_content; if($this->CI->mailer->send_email($receive_user['email'],$notices_log['subject'],$notices_log['content'])){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } /** * 完成工单 * @param $workorder */ public function finish_workorder($workorder){ $receive_user = $this->CI->user_model->get_user_with_user_id($workorder['receive_user_id']); if($this->setting['is_sms'] && in_array("10",$workorder['send_type'])){ $sms_content = '你的工单已由管理员结束,工单ID:'.$workorder['workorder_id'].',工单名称:'.$workorder['workorder_name'].',类型:'.$workorder['type']; $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "sms"; $notices_log['mobile'] = $receive_user['mobile']; $notices_log['content'] = $sms_content; if($this->setting['sms_type'] == '10' ){ if(send_by_modem($this->setting, $receive_user['mobile'], $sms_content)){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } }elseif($this->setting['sms_type'] == '20' ){ $sms_content = array( "workorder_id"=>$workorder['workorder_id'], "workorder_name"=>$workorder['workorder_name'], "workorder_type"=>$workorder['type'] ); $resp = $this->Aliyunsms->sendSms($receive_user['mobile'],$this->setting['template_codes'][4],$sms_content); if($resp['Code'] == 'OK'){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } if($this->setting['is_email'] && in_array("20",$workorder['send_type'])){ $notices_log = $this->CI->noticeslog_model->get_model(); $notices_log['log_id'] = $this->create_id(); $notices_log['type'] = "email"; $notices_log['recipient'] = $receive_user['email']; $notices_log['subject'] = "你的工单已由管理员结束,工单ID:".$workorder['workorder_id']; $email_content = '
'; $email_content .='

'.$receive_user['name'].',您好!

'; $email_content .='

以下工单已由管理员确认结束:

'; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; $email_content .=''; foreach($workorder['warning_list'] as $key=>$val) { $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; $email_content .= ''; } $email_content .='
'; $email_content .='工单ID:'.$workorder['workorder_id'].'工单名称:'.$workorder['workorder_name'].''; $email_content .='
工单名称类型等级时间告警详情
'.$val['warning_name'].''.$this->warning_type[$val['type']].''.$this->warning_level[$val['level']].''.date("Y-m-d H:i:s",$val['create_time']->toDateTime()->getTimestamp()).''.$val['content'].'
'; $email_content .='


 


 

'; $email_content .='

系统管理员  
'; $email_content .=date("Y年m月d日",time()).'

'; $email_content .='
'; $notices_log['content'] = $email_content; if($this->CI->mailer->send_email($receive_user['email'],$notices_log['subject'],$notices_log['content'])){ $notices_log['status'] = "1"; }else{ $notices_log['status'] = "0"; } $notices_log['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000); $this->CI->noticeslog_model->save_notices_log($notices_log); } } /** * 生成ID * @return string */ public function create_id() { return date('Ymd') . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); } }