/** * 回复留言对话 */ public function actionReplyDialog() { if ($this->_isPost()) { $this->_modelVerify = $this->_getGlobalData('Model_Verify', 'object'); $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object'); $userClass = $this->_utilRbac->getUserClass(); $dataList = $this->_modelVerify->findById($_POST['Id']); $contentArr = $dataList['log']; if ($contentArr) { $contentArr = unserialize($contentArr); if (!is_array($contentArr)) { $contentArr = array(); } } else { $contentArr = array(); } if ($dataList['status'] != $_POST['status']) { //如果更改过状态 $newLog = $this->_addLog(array('status' => $_POST['status'], 'action' => 'modify')); array_push($contentArr, $newLog); } if ($dataList['department_id'] != $_POST['department_id']) { $department = $this->_getGlobalData('department'); $content = "to Dep <font color='#FF0000'><b>{$department[$_POST['department_id']]['name']}</b></font> "; if (empty($_POST['content'])) { $content = $this->_addLog(array('msg' => $content)); } } if (!empty($_POST['content'])) { //如果content不为空的话,就继续加留言 $content .= ':' . $_POST['content']; $content = $this->_addLog(array('msg' => $content)); } if (!empty($content)) { array_push($contentArr, $content); } $updateArr = array('log' => serialize($contentArr), 'department_id' => $_POST['department_id'], 'status' => $_POST['status']); if ($_POST['status'] == Model_Verify::FINISH_STATUS) { $updateArr['finish_user_id'] = $userClass['_id']; } if ($this->_modelVerify->update($updateArr, "Id={$_POST['Id']}")) { #------发送邮件------# $this->_utilUserMailManage = $this->_getGlobalData('Util_UserMailManage', 'object'); $this->_utilUserMailManage->addUser($dataList['user_id']); $mail = array('title' => "Buglist change status:{$dataList['title']}", 'href' => Tools::url(CONTROL, 'Detail', array('Id' => $dataList['Id'], 'work_order_id' => $dataList['work_order_id'])), 'type' => 3); $this->_utilUserMailManage->addMail($mail); $this->_utilUserMailManage->send(); #------发送邮件------# $this->_utilMsg->showMsg(false); } else { $this->_utilMsg->showMsg(Tools::getLang('ADD_MSG_ERROR', __CLASS__), -2); } } }
/** * 详细统计 * @param array $date * @param array $users */ public function statsDetail($date, $users, $gameIds = NULL, $operators = null) { #------获取工单总数统计------# $sql = "select evaluation_status,evaluation_desc,create_time,owner_user_id,is_verify,status from {$this->tName()} where create_time between {$date['start']} and {$date['end']} and owner_user_id in (" . implode(',', $users) . ")"; if ($gameIds) { if (is_array($gameIds)) { $gameIds = implode(',', $gameIds); } $sql .= " and game_type in ({$gameIds})"; } if ($operators) { if (is_array($operators)) { $operators = implode(',', $operators); } $sql .= " and operator_id in ({$operators})"; } // echo "<p>".$sql; $dataList = $this->select($sql); if ($dataList) { $evArr = array(); //1游戏BUG //2游戏设置不满意 //3回复不清晰 //4回复错误 //5客服服务态度恶劣 //6其他 $evaluationDesc = array(1 => 32, 2 => 32, 3 => 3, 4 => 3, 5 => 3, 6 => 32, '' => 3); //32扩展为游戏差评、3保留为服务差评 $workOrderList = array(); foreach ($dataList as $list) { $workOrderList['total']['total']['total']++; // $workOrderList['total']['total']['ev_'.$list['evaluation_status']]++; $workOrderList['total'][date('Y-m-d', $list['create_time'])]['total']++; // $workOrderList['total'][date('Y-m-d',$list['create_time'])]['ev_'.$list['evaluation_status']]++; if ($list['is_verify'] && in_array($list['status'], array(3, 4))) { $workOrderList['total']['total']['verify']++; $workOrderList['total'][date('Y-m-d', $list['create_time'])]['verify']++; $workOrderList[$list['owner_user_id']]['total']['verify']++; $workOrderList[$list['owner_user_id']][date('Y-m-d', $list['create_time'])]['verify']++; } $workOrderList[$list['owner_user_id']]['total']['total']++; // $workOrderList[$list['owner_user_id']]['total']['ev_'.$list['evaluation_status']]++; $workOrderList[$list['owner_user_id']][date('Y-m-d', $list['create_time'])]['total']++; // $workOrderList[$list['owner_user_id']][date('Y-m-d',$list['create_time'])]['ev_'.$list['evaluation_status']]++; //对差评进行扩展 if ($list['evaluation_status'] == 3) { $tmpEv = $evaluationDesc[$list['evaluation_desc']]; $workOrderList['total']['total']['ev_' . $tmpEv]++; $workOrderList[$list['owner_user_id']]['total']['ev_' . $tmpEv]++; $workOrderList['total'][date('Y-m-d', $list['create_time'])]['ev_' . $tmpEv]++; $workOrderList[$list['owner_user_id']][date('Y-m-d', $list['create_time'])]['ev_' . $tmpEv]++; } else { $workOrderList['total']['total']['ev_' . $list['evaluation_status']]++; $workOrderList[$list['owner_user_id']]['total']['ev_' . $list['evaluation_status']]++; $workOrderList['total'][date('Y-m-d', $list['create_time'])]['ev_' . $list['evaluation_status']]++; $workOrderList[$list['owner_user_id']][date('Y-m-d', $list['create_time'])]['ev_' . $list['evaluation_status']]++; } } } $allDay = Tools::getdateArr($date['start'], $date['end']); foreach ($users as $user) { foreach ($allDay as $key => $value) { if (!isset($workOrderList['total'][$key])) { $workOrderList['total'][$key] = array(); } if (!isset($workOrderList[$user][$key])) { $workOrderList[$user][$key] = array(); } } krsort($workOrderList[$user]); } krsort($workOrderList['total']); #------获取工单总数统计------# #------获取回复总记录数------# $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object'); $sql = "select is_timeout,user_id,create_time from {$this->_modelWorkOrderQa->tName()} where create_time between {$date['start']} and {$date['end']} and qa=1 and user_id in (" . implode(',', $users) . ")"; if ($gameIds) { $sql .= " and game_type_id in ({$gameIds})"; } if ($operators) { if (is_array($operators)) { $operators = implode(',', $operators); } $sql .= " and operator_id in ({$operators})"; } // echo "<p>".$sql; $dataList = $this->_modelWorkOrderQa->select($sql); if ($dataList) { $qaList = array(); foreach ($dataList as $list) { $qaList['total']['total']['total_reply']++; $qaList['total']['total']['timeout_' . $list['is_timeout']]++; $qaList['total'][date('Y-m-d', $list['create_time'])]['total_reply']++; $qaList['total'][date('Y-m-d', $list['create_time'])]['timeout_' . $list['is_timeout']]++; $qaList[$list['user_id']]['total']['total_reply']++; $qaList[$list['user_id']]['total']['timeout_' . $list['is_timeout']]++; $qaList[$list['user_id']][date('Y-m-d', $list['create_time'])]['total_reply']++; $qaList[$list['user_id']][date('Y-m-d', $list['create_time'])]['timeout_' . $list['is_timeout']]++; } } $allDay = Tools::getdateArr($date['start'], $date['end']); foreach ($users as $user) { foreach ($allDay as $key => $value) { if (!isset($qaList['total'][$key])) { $qaList['total'][$key] = array(); } if (!isset($qaList[$user][$key])) { $qaList[$user][$key] = array(); } } krsort($qaList[$user]); } krsort($qaList['total']); #------获取回复总记录数------# #------质检统计------# $this->_modelQuality = $this->_getGlobalData('Model_Quality', 'object'); $sql = "select quality_user_id,reply_user_id,scores,quality_time from {$this->_modelQuality->tName()} where quality_time between {$date['start']} and {$date['end']} and (quality_user_id in (" . implode(',', $users) . ") or reply_user_id in (" . implode(',', $users) . ")) "; if ($gameIds) { $sql .= " and game_type_id in ({$gameIds})"; } if ($operators) { $sql .= " and operator_id in ({$operators})"; } // echo "<p>".$sql; $dataList = $this->_modelQuality->select($sql); if ($dataList) { $qualityList = array(); foreach ($dataList as $list) { $qualityList['total']['total']['total_quality']++; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['total_quality']++; $qualityList['total']['total']['quality_num']++; $qualityList['total']['total']['reply_num']++; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['quality_num']++; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['reply_num']++; $qualityList[$list['quality_user_id']]['total']['quality_num']++; //质检回复量 $qualityList[$list['quality_user_id']][date('Y-m-d', $list['quality_time'])]['quality_num']++; $qualityList[$list['reply_user_id']]['total']['reply_num']++; //被质检回复量 $qualityList[$list['reply_user_id']][date('Y-m-d', $list['quality_time'])]['reply_num']++; if ($list['scores'] > 0) { $qualityList['total']['total']['bonus_num']++; $qualityList['total']['total']['bonus'] += $list['scores']; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['bonus_num']++; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['bonus'] += $list['scores']; $qualityList[$list['reply_user_id']]['total']['bonus_num']++; $qualityList[$list['reply_user_id']]['total']['bonus'] += $list['scores']; $qualityList[$list['reply_user_id']][date('Y-m-d', $list['quality_time'])]['bonus_num']++; $qualityList[$list['reply_user_id']][date('Y-m-d', $list['quality_time'])]['bonus'] += $list['scores']; } elseif ($list['scores'] < 0) { $qualityList['total']['total']['deduction_num']++; $qualityList['total']['total']['deduction'] += $list['scores']; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['deduction_num']++; $qualityList['total'][date('Y-m-d', $list['quality_time'])]['deduction'] += $list['scores']; $qualityList[$list['reply_user_id']]['total']['deduction_num']++; $qualityList[$list['reply_user_id']]['total']['deduction'] += $list['scores']; $qualityList[$list['reply_user_id']][date('Y-m-d', $list['quality_time'])]['deduction_num']++; $qualityList[$list['reply_user_id']][date('Y-m-d', $list['quality_time'])]['deduction'] += $list['scores']; } } } $allDay = Tools::getdateArr($date['start'], $date['end']); foreach ($users as $user) { foreach ($allDay as $key => $value) { if (!isset($qualityList['total'][$key])) { $qualityList['total'][$key] = array(); } if (!isset($qualityList[$user][$key])) { $qualityList[$user][$key] = array(); } } krsort($qualityList[$user]); } krsort($qualityList['total']); #------质检统计------# #------BUGLIST------# $this->_modelVerify = $this->_getGlobalData('Model_Verify', 'object'); $sql = "select user_id,finish_user_id,create_time from {$this->_modelVerify->tName()} where create_time between {$date['start']} and {$date['end']} and (user_id in (" . implode(',', $users) . ") or finish_user_id in (" . implode(',', $users) . "))"; if ($gameIds) { $sql .= " and game_type_id in ({$gameIds})"; } if ($operators) { $sql .= " and operator_id in ({$operators})"; } // echo "<p>".$sql; $dataList = $this->_modelVerify->select($sql); if ($dataList) { $bugList = array(); foreach ($dataList as $list) { $curTime = date('Y-m-d', $list['create_time']); $bugList['total']['total']['submit']++; $bugList['total'][$curTime]['submit']++; $bugList[$list['user_id']]['total']['submit']++; $bugList[$list['user_id']][$curTime]['submit']++; if ($list['finish_user_id']) { $bugList['total']['total']['finish']++; $bugList['total'][$curTime]['finish']++; $bugList[$list['finish_user_id']]['total']['finish']++; $bugList[$list['finish_user_id']][$curTime]['finish']++; } } } $allDay = Tools::getdateArr($date['start'], $date['end']); foreach ($users as $user) { foreach ($allDay as $key => $value) { if (!isset($bugList['total'][$key])) { $bugList['total'][$key] = array(); } if (!isset($bugList[$user][$key])) { $bugList[$user][$key] = array(); } } krsort($bugList[$user]); } krsort($bugList['total']); #------BUGLIST------# $arrayList = array(); $arrayList['total'] = array_merge_recursive($workOrderList['total'], $qaList['total'], $qualityList['total'], $bugList['total']); foreach ($users as $user) { $arrayList[$user] = array_merge_recursive($workOrderList[$user], $qaList[$user], $qualityList[$user], $bugList[$user]); } return $arrayList; }