Beispiel #1
0
 /**
  * 回复留言对话
  */
 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);
         }
     }
 }
Beispiel #2
0
 /**
  * 详细统计
  * @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;
 }