Example #1
0
 /**
  * 添加问题
  */
 public function actionAdd()
 {
     if ($this->_isPost()) {
         $this->_modelWorkOrderDetail = $this->_getGlobalData('Model_WorkOrderDetail', 'object');
         $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
         #------获取问题类型额外信息------#
         $questionType = $this->_modelQuestionType->findById($_POST['question_type']);
         $questionFormTable = $questionType['form_table'];
         $questionFormTableKey = $this->_modelQuestionType->getTtwoArrConvertOneArr($questionFormTable, 'name', 'name');
         $formDetail = array();
         if (!empty($questionFormTableKey)) {
             foreach ($questionFormTableKey as $value) {
                 if ($value == null) {
                     continue;
                 }
                 $formDetail[$value] = $_POST[$value];
             }
         }
         #------获取问题类型额外信息------#
         #------生成工单work_order------#
         $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object');
         $userClass = $this->_utilRbac->getUserClass();
         //获取用户资料,
         $userName = $userClass['_nickName'];
         $workOrder = array('game_type' => $_POST['game_type'], 'question_type' => $_POST['question_type'], 'source' => 5, 'question_num' => 1, 'create_time' => CURRENT_TIME, 'title' => $_POST['title']);
         if ($_POST['game_server_id']) {
             #------获取服务器ID和运营商ID------#
             list($workOrder['operator_id'], $workOrder['game_server_id']) = explode(',', $_POST['game_server_id']);
             unset($formDetail['game_server_id']);
             //删除服务器列表数组
             #------获取服务器ID和运营商ID------#
         }
         $this->_modelWorkOrder->add($workOrder);
         $workOrderId = $this->_modelWorkOrder->returnLastInsertId();
         //获取工单id
         #------生成工单work_order------#
         #------生成工单详细信息------#
         $userDetail = array('nick_name' => $userName);
         $detail = array('user_data' => $userDetail, 'form_detail' => $formDetail);
         $addWorkOrderDetailArr = array('work_order_id' => $workOrderId, 'content' => serialize($detail));
         $this->_modelWorkOrderDetail->add($addWorkOrderDetailArr);
         #------生成工单详细信息------#
         #------生成工单提问信息------#
         $addWorkOrderQaArr = array('work_order_id' => $workOrderId, 'content' => $_POST['description'], 'create_time' => CURRENT_TIME);
         $this->_modelWorkOrderQa->add($addWorkOrderQaArr);
         #------生成工单提问回复信息------#
         #------增加问题队列到队列------#
         $this->_utilWorkOrder = $this->_getGlobalData('Util_WorkOrder', 'object');
         $orderManage = $this->_utilWorkOrder->getOrderManage();
         $workOrder['Id'] = $workOrderId;
         $orderManage->addOrder($workOrder);
         $orderManage->setUpdateInfo(1);
         #------增加问题队列到队列------#
         $this->_utilMsg->showMsg('工单提问成功', 1, Tools::url(CONTROL, 'Index', 1));
     }
 }
Example #2
0
 /**
  * 工单简单对话ajax
  */
 public function actionOrderDialog()
 {
     if ($this->_isAjax()) {
         $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
         $dialogList = $this->_modelWorkOrderQa->findByWorkOrderId($_GET['Id']);
         if ($dialogList) {
             $users = $this->_getGlobalData('user_all');
             foreach ($dialogList as &$list) {
                 $list['word_reply_name'] = $users[$list['user_id']]['full_name'];
                 $list['create_time'] = date('Y-m-d H:i:s', $list['create_time']);
                 $list['content'] = Tools::convertHtml($list['content']);
             }
             $this->_returnAjaxJson(array('status' => 1, 'msg' => Tools::getLang('REQUEST_SUCCESS', __CLASS__), 'data' => $dialogList));
         }
         $this->_returnAjaxJson(array('status' => 0, 'msg' => Tools::getLang('REQUEST_ERROR', __CLASS__)));
     }
 }
Example #3
0
 /**
  * 工单简单对话ajax
  */
 public function actionOrderDialog()
 {
     if ($this->_isAjax()) {
         $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
         $dialogList = $this->_modelWorkOrderQa->findByWorkOrderId($_GET['Id']);
         if ($dialogList) {
             $users = $this->_getGlobalData('user');
             $users = Model::getTtwoArrConvertOneArr($users, 'user_name', 'full_name');
             foreach ($dialogList as &$list) {
                 $list['word_reply_name'] = $users[$list['reply_name']];
                 $list['create_time'] = date('Y-m-d H:i:s', $list['create_time']);
                 $list['content'] = Tools::convertHtml($list['content']);
             }
             $this->_returnAjaxJson(array('status' => 1, 'msg' => '请求成功', 'data' => $dialogList));
         }
         $this->_returnAjaxJson(array('status' => 0, 'msg' => '请求错误'));
     }
 }
 /**
  * 用户追问
  */
 public function actionReply()
 {
     //		foreach ($_POST as &$value){
     //			$value=rawurldecode(urldecode($value));
     //		}
     if ($_FILES['image']) {
         $updateInfo = $this->_upload();
     }
     //如果有上传图片就上传文件
     $this->_modelWorkOrder = $this->_getGlobalData('Model_WorkOrder', 'object');
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     if ($updateInfo['web_path']) {
         $_POST['content'] .= "<br>玩家截图:<br> <img src='{$updateInfo['web_path']}' />";
     }
     $addArr = array('work_order_id' => $_POST['id'], 'content' => $_POST['content'], 'qa' => 0, 'create_time' => CURRENT_TIME);
     $updateArr = array('create_time' => CURRENT_TIME, 'status' => 1, 'question_num' => 'question_num+1');
     $this->_modelWorkOrder->update($updateArr, "Id={$_POST['id']}");
     $this->_modelWorkOrderQa->add($addArr);
     $this->_returnAjaxJson(array('status' => 1, 'info' => null, 'data' => array('image_path' => $updateInfo['web_path'])));
 }
Example #5
0
 /**
  * 超时回复列表
  */
 public function actionTimeoutReply()
 {
     #------初始化------#
     $this->_loadCore('Help_Page');
     $this->_loadCore('Help_SqlSearch');
     $helpSqlSearch = new Help_SqlSearch();
     $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object');
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     $qualityStatus = $this->_getGlobalData('quality_status');
     $qualityOptions = $this->_getGlobalData('quality_options');
     #------初始化------#
     $users = $this->_getGlobalData('user');
     $allUser = Model::getTtwoArrConvertOneArr($users, 'user_name', 'nick_name');
     $helpSqlSearch->set_tableName($this->_modelWorkOrderQa->tName());
     $helpSqlSearch->set_conditions('is_timeout=1');
     $helpSqlSearch->set_conditions('qa=1');
     $helpSqlSearch->set_orderBy('create_time desc');
     $helpSqlSearch->setPageLimit($_GET['page'], 20);
     $allConditions = $helpSqlSearch->get_conditions();
     //返回所有条件
     $helpPage = new Help_Page(array('total' => $this->_modelWorkOrderQa->findCount($allConditions), 'perpage' => 20));
     $sql = $helpSqlSearch->createSql();
     $dataList = $this->_modelWorkOrderQa->select($sql);
     if ($dataList) {
         Tools::import('Util_FontColor');
         foreach ($dataList as &$value) {
             $value['word_is_quality'] = $value['is_quality'] ? $users[$value['is_quality']]['nick_name'] : '<font color="#666666">未质检</font>';
             $value['word_reply_name'] = $allUser[$value['reply_name']];
             $value['create_time'] = date('Y-m-d H:i:s', $value['create_time']);
             $value['last_reply_time'] = date('Y-m-d H:i:s', $value['last_reply_time']);
             $value['url_detail'] = Tools::url('QualityCheck', 'Dialog', array('Id' => $value['work_order_id'], 'game_type_id' => $value['game_type_id'], 'operator_id' => $value['operator_id']));
             $value['content'] = strip_tags($value['content']);
         }
         $this->_view->assign('dataList', $dataList);
     }
     $this->_view->assign('pageBox', $helpPage->show());
     $this->_view->assign('js', $this->_view->get_curJs());
     $this->_utilMsg->createNavBar();
     $this->_view->display();
 }
 public function actionWorkOrderStatus()
 {
     $workOrderId = intval($_REQUEST['work_order_id']);
     if (!$workOrderId) {
         $this->_returnAjaxJson(array('status' => 0, 'info' => 'Work Order Id Empty', 'data' => null));
     }
     $this->_modelWorkOrder = $this->_getGlobalData('Model_WorkOrder', 'object');
     $gameId = intval($_REQUEST['game_id']);
     $sql_CheckWorkOrder = "select * from {$this->_modelWorkOrder->tName()} where Id={$workOrderId} and game_type={$gameId}";
     $workOrderData = $this->_modelWorkOrder->select($sql_CheckWorkOrder, 1);
     if (!$workOrderData) {
         $this->_returnAjaxJson(array('status' => 0, 'info' => 'workorder non-exist', 'data' => null));
     }
     //if($workOrderData['is_read'] == 0){
     //	$this->_modelWorkOrder->update(array('is_read'=>1),"Id={$workOrderId}");//更改已读状态
     //}
     $workOrderData['status'] = min(3, $workOrderData['status']);
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     $sql = "select work_order_id,content,create_time from " . $this->_modelWorkOrderQa->tName() . " where work_order_id={$workOrderId} order by create_time ";
     $dataList = $this->_modelWorkOrderQa->select($sql, 1);
     $dataList['status'] = $workOrderData['status'];
     $this->_returnAjaxJson(array('status' => 1, 'info' => CONTROL . '_' . ACTION, 'data' => $dataList));
 }
Example #7
0
 /**
  * 统计并且存入表.
  * key=0的为总数,其它的都会user_id,统计完成后会自动入库.
  * @param int $startTime
  * @param int $endTime
  */
 public function user($startTime, $endTime)
 {
     $addArrs = array();
     $this->_modelWorkOrder = $this->_getGlobalData('Model_WorkOrder', 'object');
     $workOrderList = $this->_modelWorkOrder->select("select * from {$this->_modelWorkOrder->tName()} where create_time between {$startTime} and {$endTime}");
     if ($workOrderList) {
         foreach ($workOrderList as $list) {
             $addArrs[0]['game_type_num'][$list['game_type']]++;
             $addArrs[0]['question_type_num'][$list['question_type']]++;
             $addArrs[0]['source_num'][$list['source']]++;
             $addArrs[0]['operator_num'][$list['operator_id']]++;
             $addArrs[0]['vip_level_num'][$list['vip_level']]++;
             $addArrs[0]['evaluation_num'][$list['evaluation_status']]++;
             $curUserId = $list['owner_user_id'];
             $addArrs[$curUserId]['game_type_num'][$list['game_type']]++;
             //游戏类型计数
             $addArrs[$curUserId]['question_type_num'][$list['question_type']]++;
             //问题类型计数
             $addArrs[$curUserId]['source_num'][$list['source']]++;
             //来源计数
             $addArrs[$curUserId]['operator_num'][$list['operator_id']]++;
             //运营商计数
             $addArrs[$curUserId]['vip_level_num'][$list['vip_level']]++;
             //VIP等级计数
             $addArrs[$curUserId]['evaluation_num'][$list['evaluation_status']]++;
             //评价计数
         }
     }
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     $workOrderQaList = $this->_modelWorkOrderQa->select("select * from {$this->_modelWorkOrderQa->tName()} where create_time between {$startTime} and {$endTime} and qa=1");
     if ($workOrderQaList) {
         foreach ($workOrderQaList as $list) {
             $curUserId = $list['user_id'];
             $list['is_quality'] = $list['is_quality'] ? '1' : '0';
             $addArrs[0]['reply_quality_num'][$list['is_quality']]++;
             //总数,被质检增加
             $addArrs[$curUserId]['reply_quality_num'][$list['is_quality']]++;
             //用户被质检数增加
             if ($list['is_timeout'] != null) {
                 $addArrs[0]['reply_timeout_num'][$list['is_timeout']]++;
                 //总数超时,增加
                 $addArrs[$curUserId]['reply_timeout_num'][$list['is_timeout']]++;
                 //用户超时,增加
             }
         }
     }
     $this->_modelQuality = $this->_getGlobalData('Model_Quality', 'object');
     $qualityList = $this->_modelQuality->select("select * from {$this->_modelQuality->tName()} where quality_time between {$startTime} and {$endTime}");
     if ($qualityList) {
         foreach ($qualityList as $list) {
             $curUserId = $list['quality_user_id'];
             $addArrs[0]['quality_option_num'][$list['option_id']]++;
             $addArrs[0]['quality_status_num'][$list['status']]++;
             $addArrs[$curUserId]['quality_option_num'][$list['option_id']]++;
             $addArrs[$curUserId]['quality_status_num'][$list['status']]++;
             if ($list['scores'] > 0) {
                 $addArrs[0]['quality_scores']['bonus'] += $list['scores'];
                 $addArrs[0]['quality_scores']['bonus_num']++;
                 $addArrs[$curUserId]['quality_scores']['bonus'] += $list['scores'];
                 $addArrs[$curUserId]['quality_scores']['bonus_num']++;
             } else {
                 $addArrs[0]['quality_scores']['deeduction'] += $list['scores'];
                 $addArrs[0]['quality_scores']['deeduction_num']++;
                 $addArrs[$curUserId]['quality_scores']['deeduction'] += $list['scores'];
                 $addArrs[$curUserId]['quality_scores']['deeduction_num']++;
             }
         }
     }
     $insertArr = array();
     foreach ($addArrs as $key => $list) {
         if ($key === '' || $key === null) {
             continue;
         }
         $list['user_id'] = $key;
         $list['create_time'] = $startTime;
         $list['game_type_num'] = serialize((array) $list['game_type_num']);
         $list['question_type_num'] = serialize((array) $list['question_type_num']);
         $list['source_num'] = serialize((array) $list['source_num']);
         $list['operator_num'] = serialize((array) $list['operator_num']);
         $list['vip_level_num'] = serialize((array) $list['vip_level_num']);
         $list['evaluation_num'] = serialize((array) $list['evaluation_num']);
         $list['reply_quality_num'] = serialize((array) $list['reply_quality_num']);
         $list['reply_timeout_num'] = serialize((array) $list['reply_timeout_num']);
         $list['quality_option_num'] = serialize((array) $list['quality_option_num']);
         $list['quality_status_num'] = serialize((array) $list['quality_status_num']);
         $list['quality_scores'] = serialize((array) $list['quality_scores']);
         $this->add($list);
         array_push($insertArr, $list);
     }
 }
Example #8
0
 /**
  * 查看工单详细
  */
 public function actionDetail()
 {
     $dataList = $this->_modelWorkOrder->findByIdToDetail($_GET['Id']);
     $dialogList = $this->_modelWorkOrderQa->findByWorkOrderId($_GET['Id']);
     #------载入缓存------#
     $gameTypeArr = Model::getTtwoArrConvertOneArr($this->_modelSysconfig->getValueToCache('game_type'), 'Id', 'name');
     //游戏类型
     $workOrderSourceArr = $this->_modelSysconfig->getValueToCache('workorder_source');
     //工单来源
     $workOrderStatusArr = $this->_modelSysconfig->getValueToCache('workorder_status');
     //工单状态
     $gameServerList = $this->_getGlobalData('gameser_list');
     $gameServerList = Model::getTtwoArrConvertOneArr($gameServerList, 'Id', 'server_name');
     $operatorList = $this->_getGlobalData('operator_list');
     $operatorList = Model::getTtwoArrConvertOneArr($operatorList, 'Id', 'operator_name');
     $user = $this->_getGlobalData('user');
     $departmentList = $this->_getGlobalData('department');
     $departmentList = Model::getTtwoArrConvertOneArr($departmentList, 'Id', 'name');
     #------载入缓存------#
     #------跟椐ID转换文字显示------#
     $dataList['word_status'] = $workOrderStatusArr[$dataList['status']];
     $dataList['word_game_type'] = $gameTypeArr[$dataList['game_type']];
     $dataList['word_source'] = $workOrderSourceArr[$dataList['source']];
     $dataList['word_game_server_id'] = $gameServerList[$dataList['game_server_id']];
     $dataList['word_operator_id'] = $operatorList[$dataList['operator_id']];
     $dataList['create_time'] = date('Y-m-d H:i', $dataList['create_time']);
     $dataList['word_quality_id'] = $dataList['quality_id'] < 0 ? $user[$dataList['quality_id']]['nick_name'] . "[{$departmentList[$user[$dataList['quality_id']]['department_id']]}]" : '未质检';
     #------跟椐ID转换文字显示------#
     $user = Model::getTtwoArrConvertOneArr($user, 'user_name', 'full_name');
     foreach ($dialogList as &$list) {
         $list['create_time'] = date('Y-m-d H:i:s', $list['create_time']);
         $list['word_reply_name'] = $user[$list['reply_name']];
     }
     $workOrderDetailArr = unserialize($dataList['content']);
     //获取工单的详细信息
     $userData = $workOrderDetailArr['user_data'];
     //获取提交工单用户的详细信息
     $userData['register_date'] = $userData['register_date'] ? date('Y-m-d H:i:s', $userData['register_date']) : '';
     if ($dataList['evaluation_status'] != 0) {
         //如果已经评价
         $playerEvaluation = $this->_getGlobalData('player_evaluation');
         $evaluation = $playerEvaluation[$dataList['evaluation_status']];
         $evaluation = $evaluation['title'];
         if ($dataList['evaluation_status'] == 3) {
             $evaluation .= ':&nbsp;' . $workOrderDetailArr['other']['ev'];
         }
         $this->_view->assign('evaluation', $evaluation);
     }
     if ($dataList['source'] != 2) {
         //如果工单不是从游戏里面来的话
         $userQuestionDetail = $workOrderDetailArr['form_detail'];
         //获取提问类型工单的值
         $questionDetail = $this->_modelQuestionType->findById($dataList['question_type']);
         //查找问题类型
         $dataList['word_question_type'] = $questionDetail['title'];
         //获取问题类型的中文名称以方便显示
         $questionDetail = $questionDetail['form_table'];
         //获取问题类型的表单配置值
         $userQuestionDetailArr = array();
         //初始化显示提交问题类型数组
         if ($questionDetail) {
             foreach ($questionDetail as $value) {
                 //将表单转换为key/value方式,方便显示
                 if ($value['type'] == 'game_server_list') {
                     continue;
                 }
                 //如果为服务器列表将跳过,因为已经在工单上面有了.
                 switch ($value['type']) {
                     case 'select':
                         $userQuestionDetailArr[$value['title']] = $value['options'][$userQuestionDetail[$value['name']]];
                         break;
                     default:
                         $userQuestionDetailArr[$value['title']] = $userQuestionDetail[$value['name']];
                         break;
                 }
             }
         }
     }
     unset($workOrderStatusArr[1]);
     //删除待处理状态
     unset($workOrderStatusArr[4]);
     //删除被玩家删除状态
     $this->_view->assign('workOrderStatusArr', $workOrderStatusArr);
     $this->_view->assign('userData', $userData);
     $this->_view->assign('userQuestionDetailArr', $userQuestionDetailArr);
     //问题类型显示
     $this->_view->assign('dialogArr', $dialogList);
     //对话详细
     $this->_view->assign('data', $dataList);
     //表单详细信息
     $this->_view->assign('js', $this->_view->get_curJs());
     $this->_url['Verify_OrderVerify'] = Tools::url('Verify', 'OrderVerify', array('work_order_id' => $_GET['Id'], 'game_type_id' => $dataList['game_type'], 'operator_id' => $dataList['operator_id'], 'game_server_id' => $dataList['game_server_id'], 'game_user_id' => $userData['user_id'], 'user_account' => urlencode($userData['user_account']), 'user_nickname' => urlencode($userData['user_nickname'])));
     $this->_view->assign('url', $this->_url);
     $this->_utilMsg->createNavBar();
     $this->_view->display();
     /*
     		#----------第一种方式----------#
     		$dataList = $this->_modelWorkOrder->findByIdDetail ( $_GET ['Id'] ); //获取工单整个数组,包括关联表
     		$dialogArr = $dataList; //列表详细
     		$dataList = $dataList [0]; //客服与用户的对话数组
     		#------载入缓存------#
     		$gameTypeArr = Model::getTtwoArrConvertOneArr ( $this->_modelSysconfig->getValueToCache ( 'game_type' ), 'Id', 'name' ); //游戏类型
     		$workOrderSourceArr = $this->_modelSysconfig->getValueToCache ( 'workorder_source' ); //工单来源
     		$workOrderStatusArr = $this->_modelSysconfig->getValueToCache ( 'workorder_status' ); //工单状态
     		$gameSerList = $this->_modelGameSerList->findById ( $dataList ['game_server_id'] );
     		$operatorList = $this->_modelOperatorList->findById ( $dataList ['operator_id'] );
     		#------载入缓存------#
     
     
     		foreach ( $dialogArr as &$list ) {
     			$list ['qa_time'] = date ( 'Y-m-d H:i:s', $list ['qa_time'] );
     		}
     
     		$workOrderDetailArr = unserialize ( $dataList ['detail'] ); //获取工单的详细信息
     		$userData = $workOrderDetailArr ['user_data']; //获取提交工单用户的详细信息
     		$userQuestionDetail = $workOrderDetailArr ['form_detail']; //获取提问类型工单的值
     		$questionDetail = $this->_modelQuestionType->findById ( $dataList ['question_type'] ); //查找问题类型
     		$user=$this->_getGlobalData('user');
     		$departmentList=$this->_getGlobalData('department');
     		$departmentList=Model::getTtwoArrConvertOneArr($departmentList,'Id','name');
     
     
     
     		#------跟椐ID转换文字显示------#
     		$dataList ['word_question_type'] = $questionDetail ['title']; //获取问题类型的中文名称以方便显示
     		$dataList ['word_game_type'] = $gameTypeArr [$dataList ['game_type']];
     		$dataList ['word_source'] = $workOrderSourceArr [$dataList ['source']];
     		$dataList ['word_status'] = $workOrderStatusArr [$dataList ['status']];
     		$dataList ['word_game_server_id'] = $gameSerList ['server_name'];
     		$dataList ['word_operator_id'] = $operatorList ['operator_name'];
     		$dataList ['create_time'] = date ( 'Y-m-d H:i', $dataList ['create_time'] );
     		$dataList['word_quality_id']=($dataList['quality_id']<0)?$user[$dataList['quality_id']]['nick_name']."[{$departmentList[$user[$dataList['quality_id']]['department_id']]}]":'未质检';
     		#------跟椐ID转换文字显示------#
     
     		$questionDetail = $questionDetail ['form_table']; //获取问题类型的表单配置值
     		$userQuestionDetailArr = array (); //初始化显示提交问题类型数组
     		if ($questionDetail) {
     			foreach ( $questionDetail as $value ) { //将表单转换为key/value方式,方便显示
     				if ($value ['type'] == 'game_server_list')
     					continue; //如果为服务器列表将跳过,因为已经在工单上面有了.
     				switch ($value ['type']) {
     					case 'select' :
     						{
     							$userQuestionDetailArr [$value ['title']] = $value ['options'] [$userQuestionDetail [$value ['name']]];
     							break;
     						}
     					default :
     						{
     							$userQuestionDetailArr [$value ['title']] = $userQuestionDetail [$value ['name']];
     							break;
     						}
     				}
     			}
     		}
     
     		$this->_view->assign ( 'workOrderStatusArr', $workOrderStatusArr );
     		$this->_view->assign ( 'userData', $userData );
     		$this->_view->assign ( 'userQuestionDetailArr', $userQuestionDetailArr ); //问题类型显示
     		$this->_view->assign ( 'dialogArr', $dialogArr ); //对话详细
     		$this->_view->assign ( 'data', $dataList ); //表单详细信息
     		$this->_view->assign ( 'js', $this->_view->get_curJs () );
     		$this->_url ['Verify_OrderVerify']=Tools::url('Verify','OrderVerify',array('work_order_id'=>$_GET ['Id']));
     		$this->_view->assign('url',$this->_url);
     		$this->_view->display ();*/
     #----------第一种方式----------#
 }
Example #9
0
 /**
  * 根据用户统计 
  */
 private function _getStatusUser()
 {
     if (is_array($this->_users)) {
         $users = implode(',', $this->_users);
     } else {
         $users = $this->_users;
     }
     $addArrs = array();
     $this->_modelWorkOrder = $this->_getGlobalData('Model_WorkOrder', 'object');
     $sql = "select Id,game_type,question_type,source,operator_id,vip_level,evaluation_status,evaluation_desc,create_time from {$this->_modelWorkOrder->tName()} where create_time between {$this->_statsTime['start']} and {$this->_statsTime['end']} and owner_user_id in (" . $users . ")";
     $gameType = NULL;
     if ($this->_gameType) {
         if (is_array($this->_gameType)) {
             $gameType = implode(',', $this->_gameType);
         }
         $sql .= " and game_type in ({$gameType})";
     }
     $workOrderList = $this->_modelWorkOrder->select($sql);
     if ($workOrderList) {
         //1游戏BUG
         //2游戏设置不满意
         //3回复不清晰
         //4回复错误
         //5客服服务态度恶劣
         //6其他
         $evaluationDesc = array(1 => 32, 2 => 32, 3 => 3, 4 => 3, 5 => 3, 6 => 32, '' => 3);
         //32扩展为游戏差评、3保留为服务差评
         foreach ($workOrderList as $list) {
             $addArrs['game_type_num'][$list['game_type']]++;
             $addArrs['question_type_num'][$list['question_type']]++;
             $addArrs['source_num'][$list['source']]++;
             $addArrs['operator_num'][$list['operator_id']]++;
             $addArrs['vip_level_num'][$list['vip_level']]++;
             //对差评进行扩展
             if ($list['evaluation_status'] == 3) {
                 $addArrs['evaluation_num'][$evaluationDesc[$list['evaluation_desc']]]++;
                 $addArrs['evaluation_desc_num'][$list['evaluation_desc']]++;
             } else {
                 $addArrs['evaluation_num'][$list['evaluation_status']]++;
             }
             //				$addArrs['evaluation_num'][$list['evaluation_status']]++;
             //				if ($list['evaluation_desc'])$addArrs['evaluation_desc_num'][$list['evaluation_desc']]++;
         }
         $isEvNum = $addArrs['evaluation_num'][1] + $addArrs['evaluation_num'][2] + $addArrs['evaluation_num'][3] + $addArrs['evaluation_num'][32];
         $addArrs['evaluation_num']['satisfaction'] = $addArrs['evaluation_num'][1] / ($isEvNum - $addArrs['evaluation_num'][32]) * 100;
         //服务满意度
         $totalEvNum = $addArrs['evaluation_num'][0] + $isEvNum;
         $addArrs['evaluation_num']['ev_percentage'] = $isEvNum / $totalEvNum * 100;
         //评价率
     }
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     $sql = "select Id,is_quality,is_timeout,create_time from {$this->_modelWorkOrderQa->tName()} where create_time between {$this->_statsTime['start']} and {$this->_statsTime['end']} and qa=1 and user_id in (" . $users . ")";
     if ($gameType) {
         $sql .= " and game_type_id in ({$gameType})";
     }
     $workOrderQaList = $this->_modelWorkOrderQa->select($sql);
     if ($workOrderQaList) {
         foreach ($workOrderQaList as $list) {
             $list['is_quality'] = $list['is_quality'] ? '1' : '0';
             $addArrs['reply_quality_num'][$list['is_quality']]++;
             //总数,被质检增加
             if ($list['is_timeout'] != null) {
                 $addArrs['reply_timeout_num'][$list['is_timeout']]++;
                 //总数超时,增加
             }
         }
     }
     $this->_modelQuality = $this->_getGlobalData('Model_Quality', 'object');
     $sql = "select option_id,status,scores from {$this->_modelQuality->tName()} where quality_time between {$this->_statsTime['start']} and {$this->_statsTime['end']} and  (quality_user_id in ({$users}) or reply_user_id in ({$users})) ";
     if ($gameType) {
         $sql .= " and game_type_id in ({$gameType})";
     }
     $qualityList = $this->_modelQuality->select($sql);
     if ($qualityList) {
         foreach ($qualityList as $list) {
             $addArrs['quality_option_num'][$list['option_id']]++;
             $addArrs['quality_status_num'][$list['status']]++;
             if ($list['scores'] > 0) {
                 $addArrs['quality_scores']['bonus'] += $list['scores'];
                 $addArrs['quality_scores']['bonus_num']++;
             } elseif ($list['scores'] < 0) {
                 $addArrs['quality_scores']['deeduction'] += $list['scores'];
                 $addArrs['quality_scores']['deeduction_num']++;
             }
         }
     }
     foreach ($addArrs as $key => &$list) {
         $list['game_type_num'] = (array) $list['game_type_num'];
         $list['question_type_num'] = (array) $list['question_type_num'];
         $list['source_num'] = (array) $list['source_num'];
         $list['operator_num'] = (array) $list['operator_num'];
         $list['vip_level_num'] = (array) $list['vip_level_num'];
         $list['evaluation_num'] = (array) $list['evaluation_num'];
         $list['reply_quality_num'] = (array) $list['reply_quality_num'];
         $list['reply_timeout_num'] = (array) $list['reply_timeout_num'];
         $list['quality_option_num'] = (array) $list['quality_option_num'];
         $list['quality_status_num'] = (array) $list['quality_status_num'];
         $list['quality_scores'] = (array) $list['quality_scores'];
     }
     return $addArrs;
 }
Example #10
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;
 }
Example #11
0
 /**
  * 未发送致服务器的回复
  * @todo 新增动作
  */
 public function actionNotSendReply()
 {
     #------初始化------#
     $this->_loadCore('Help_Page');
     $this->_loadCore('Help_SqlSearch');
     $helpSqlSearch = new Help_SqlSearch();
     $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object');
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     $qualityStatus = $this->_getGlobalData('quality_status');
     $qualityOptions = $this->_getGlobalData('quality_options');
     $gameTypes = $this->_getGlobalData('game_type');
     $gameTypes = Model::getTtwoArrConvertOneArr($gameTypes, 'Id', 'name');
     #------初始化------#
     $selected = array();
     //模板默认值
     $users = $this->_getGlobalData('user');
     $helpSqlSearch->set_tableName($this->_modelWorkOrderQa->tName());
     $helpSqlSearch->set_conditions('qa=1');
     if ($_REQUEST['game_type_id']) {
         $helpSqlSearch->set_conditions("game_type_id={$_REQUEST['game_type_id']}");
         $selected['game_type_id'] = $_REQUEST['game_type_id'];
     }
     if ($_REQUEST['reply_user_id'] != '') {
         $helpSqlSearch->set_conditions("user_id={$_REQUEST['reply_user_id']}");
         $selected['reply_user_id'] = $_REQUEST['reply_user_id'];
     }
     if ($_REQUEST['start_time'] && $_REQUEST['end_time']) {
         $startTime = strtotime($_REQUEST['start_time']);
         $endTime = strtotime($_REQUEST['end_time']);
         $helpSqlSearch->set_conditions("create_time between {$startTime} and {$endTime}");
         $selected['start_time'] = $_REQUEST['start_time'];
         $selected['end_time'] = $_REQUEST['end_time'];
     }
     $helpSqlSearch->set_conditions('content like \'<em>%\' ');
     $helpSqlSearch->set_orderBy('create_time desc');
     $helpSqlSearch->setPageLimit($_GET['page']);
     $allConditions = $helpSqlSearch->get_conditions();
     //返回所有条件
     $helpPage = new Help_Page(array('total' => $this->_modelWorkOrderQa->findCount($allConditions), 'perpage' => PAGE_SIZE));
     $sql = $helpSqlSearch->createSql();
     $dataList = $this->_modelWorkOrderQa->select($sql);
     if ($dataList) {
         Tools::import('Util_FontColor');
         foreach ($dataList as &$value) {
             $value['word_game_type_id'] = $gameTypes[$value['game_type_id']];
             $value['word_is_quality'] = $value['is_quality'] ? $users[$value['is_quality']]['nick_name'] : '<font color="#666666">未质检</font>';
             $value['word_reply_name'] = $users[$value['user_id']]['nick_name'];
             $value['create_time'] = date('Y-m-d H:i:s', $value['create_time']);
             $value['last_reply_time'] = date('Y-m-d H:i:s', $value['last_reply_time']);
             $value['url_detail'] = Tools::url('QualityCheck', 'Dialog', array('Id' => $value['work_order_id'], 'game_type_id' => $value['game_type_id'], 'operator_id' => $value['operator_id']));
             $value['content'] = strip_tags($value['content']);
         }
         $this->_view->assign('dataList', $dataList);
     }
     $gameTypes[''] = '所有';
     $this->_view->assign('gameTypes', $gameTypes);
     $this->_view->assign('users', $users);
     $this->_view->assign('selected', $selected);
     $this->_view->assign('pageBox', $helpPage->show());
     $this->_utilMsg->createNavBar();
     $this->_view->display();
 }
Example #12
0
 /**
  * 运营商按天数统计
  */
 public function actionOperatorDay()
 {
     $operatorList = $this->_getGlobalData('operator_list');
     $operatorList = Model::getTtwoArrConvertOneArr($operatorList, 'Id', 'operator_name');
     $gameTypeList = $this->_getGlobalData('game_type');
     $gameTypeList = Model::getTtwoArrConvertOneArr($gameTypeList, 'Id', 'name');
     $this->_modelGameOperator = $this->_getGlobalData('Model_GameOperator', 'object');
     $gameOperatorIndex = $this->_modelGameOperator->findAll();
     foreach ($gameOperatorIndex as &$value) {
         $value['word_operator_id'] = $operatorList[$value['operator_id']];
     }
     if ($this->_isPost()) {
         if (empty($_POST['date'])) {
             $this->_utilMsg->showMsg('统计日期不能为空', -2);
         }
         if (empty($_POST['game_type_id']) || !count($_POST['operator_id'])) {
             $this->_utilMsg->showMsg('请选译游戏,和运营商', -2);
         }
         $curDate = $_POST['date'];
         $this->_view->assign('selectedGameTypeId', $_POST['game_type_id']);
         $selectedOperatorList = array();
         foreach ($_POST['operator_id'] as $operatorId) {
             if (array_key_exists($operatorId, $operatorList)) {
                 $selectedOperatorList[$operatorId] = $operatorList[$operatorId];
             }
         }
         $this->_view->assign('selectedOperatorIds', $_POST['operator_id']);
         $this->_view->assign('selectedOperatorList', $selectedOperatorList);
         $this->_view->assign('selectedDate', $curDate);
         $date['start'] = strtotime($curDate);
         $date['end'] = $date['start'] + 24 * 60 * 60 - 1;
         $this->_modelWorkOrder = $this->_getGlobalData('Model_WorkOrder', 'object');
         $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
         $this->_modelReplyQulity = $this->_getGlobalData('Model_ReplyQulity', 'object');
         $workOrderTotal = $this->_modelWorkOrder->getOperatorDayStatsNum($_POST['game_type_id'], $_POST['operator_id'], $date);
         $workOrderQaTotal = $this->_modelWorkOrderQa->getOperatorDayStatsNum($_POST['game_type_id'], $_POST['operator_id'], $date);
         $replyQulityTotal = $this->_modelReplyQulity->getOperatorDayStatsNum($_POST['game_type_id'], $_POST['operator_id'], $date);
         if (is_array($workOrderQaTotal) && is_array($replyQulityTotal) && is_array($workOrderTotal)) {
             $total = array();
             for ($i = 0; $i <= 23; $i++) {
                 if (!$workOrderQaTotal[$i]) {
                     $workOrderQaTotal[$i] = array();
                 }
                 if (!$replyQulityTotal[$i]) {
                     $replyQulityTotal[$i] = array();
                 }
                 if (!$workOrderTotal[$i]) {
                     $workOrderTotal[$i] = array();
                 }
                 $total[$i] = array_merge($workOrderQaTotal[$i], $replyQulityTotal[$i], $workOrderTotal[$i]);
             }
             if (!$workOrderQaTotal['total']) {
                 $workOrderQaTotal['total'] = array();
             }
             if (!$replyQulityTotal['total']) {
                 $replyQulityTotal['total'] = array();
             }
             if (!$workOrderTotal['total']) {
                 $workOrderTotal['total'] = array();
             }
             $total['total'] = array_merge($workOrderQaTotal['total'], $replyQulityTotal['total'], $workOrderTotal['total']);
         }
         $this->_view->assign('total', $total);
         $this->_view->assign('displayTrue', true);
     }
     $this->_view->assign('js', $this->_view->get_curJs());
     $this->_view->assign('gameOperatorIndex', json_encode($gameOperatorIndex));
     $this->_view->assign('gameTypeList', $gameTypeList);
     $this->_utilMsg->createNavBar();
     $this->_view->display();
 }
Example #13
0
 private function _saveSource4()
 {
     $orderArr = array();
     $orderArr['game_type'] = intval($_POST['game_id']);
     $orderArr['is_vip'] = intval($_GET['is_vip']);
     $orderArr['user_account'] = $_POST['user_account'] ? $_POST['user_account'] : 0;
     $orderArr['user_nickname'] = trim($_POST['user_nickname']);
     $orderArr['money'] = intval($_POST['money_total']);
     $orderArr['source'] = intval(4);
     //工单来源
     $orderArr['title'] = strip_tags($_POST['title']);
     $orderArr['question_type'] = intval($_POST['question_type']);
     $orderArr['question_num'] = 1;
     $orderArr['create_time'] = CURRENT_TIME;
     $orderArr['game_user_id'] = trim($_POST['user_id']);
     if ($_FILES['image']) {
         $updateInfo = $this->_upload();
         //如果有上传图片就上传文件
     }
     $serverMarking = trim($_POST['server_marking']);
     $gameServerList = $this->_modelGameSerList->findByMarking($_POST['game_id'], $serverMarking, $_POST['server_name']);
     if (!$gameServerList) {
         //未找到服务器
         $this->_utilMsg->showMsg("game server non-existent", 1);
         //			$this->_returnAjaxJson ( array ('status' => 0, 'info' => 'game server non-existent', 'data' => null ) );
     }
     $this->_modelGameOperator = $this->_getGlobalData('Model_GameOperator', 'object');
     $gameOperatorIndex = $this->_modelGameOperator->findByGidOId($_POST['game_id'], $gameServerList['operator_id']);
     //找到此运营商的详细 资料.
     if (!$gameOperatorIndex) {
         //未找到游戏与运营商的索引
         $this->_utilMsg->showMsg("game server or operator non-existent", 1);
         //			$this->_returnAjaxJson ( array ('status' => 0, 'info' => 'game server or operator non-existent', 'data' => null ) );
     }
     //vip等级,如果从游戏中有传$_POST['vip_level']过来,就使用$_POST['vip_level'],否则使用配置值
     $orderArr['vip_level'] = isset($_REQUEST['vip']) ? intval($_REQUEST['vip']) : $this->_modelGameOperator->getVipLevel($gameOperatorIndex['vip_setup']['vip_pay'], $_POST['money_total']);
     $orderArr['vip_level'] = min(6, $orderArr['vip_level']);
     $orderArr['timeout'] = $this->_modelGameOperator->getTimeOut($gameOperatorIndex['vip_setup']['vip_timeout'], $orderArr['vip_level']);
     $orderArr['timeout'] *= 60;
     //换成秒
     $orderArr['is_verify'] = 0;
     $orderArr['operator_id'] = $gameServerList['operator_id'];
     $orderArr['game_server_id'] = $gameServerList['Id'];
     $orderArr['is_read'] = 0;
     if ($gameServerList['room_id']) {
         $orderArr['room_id'] = $gameServerList['room_id'];
     }
     if (!$this->_modelWorkOrder->add($orderArr)) {
         //创建表单失败
         $this->_returnAjaxJson(array('status' => 0, 'info' => 'Failure to create order', 'data' => null));
     }
     $workOrderId = $this->_modelWorkOrder->returnLastInsertId();
     //获取工单id
     #------追加日志------#
     $this->_modelOrderLog = $this->_getGlobalData('Model_OrderLog', 'object');
     $this->_modelOrderLog->addLog(array('game_type_id' => $orderArr['game_type'], 'operator_id' => $orderArr['operator_id'], 'server_id' => $orderArr['game_server_id'], 'Id' => $workOrderId), Model_OrderLog::ASK);
     #------追加日志------#
     #------增加新的工单到队列------#
     if ($orderArr['room_id']) {
         $addOrder = array('Id' => $workOrderId, 'vip_level' => $orderArr['vip_level'], 'room_id' => $orderArr['room_id'], 'game_type_id' => $orderArr['game_type'], 'operator_id' => $orderArr['operator_id']);
         $this->_utilWorkOrder = $this->_getGlobalData('Util_WorkOrder', 'object');
         $orderManageClass = $this->_utilWorkOrder->getOrderManage();
         $orderManageClass->addOrder($addOrder);
         $orderManageClass = null;
     }
     #------增加新的工单到队列------#
     $orderDetail = array();
     $orderDetail['form_detail'] = array();
     $orderDetail['user_data'] = array('user_id' => $_POST['user_id'], 'user_account' => $_POST['user_account'], 'user_nickname' => $_POST['user_nickname'], 'money_total' => isset($_POST['money_total']) ? $_POST['money_total'] : -1, 'money_month' => isset($_POST['money_month']) ? $_POST['money_month'] : -1, 'register_date' => !$_POST['register_date'] || $_POST['register_date'] == 'null' ? null : $_POST['register_date'], 'ip' => $_POST['ip']);
     //钻类型
     if (isset($_POST['flatType'])) {
         $orderDetail['ext']['flatType']['desc'] = '钻类型';
         switch ($_POST['flatType']) {
             case '1':
                 $orderDetail['ext']['flatType']['value'] = '<font color="#FF9900">黄钻</font>';
                 break;
             case '10':
                 $orderDetail['ext']['flatType']['value'] = '<font color="#0000FF">蓝钻</font>';
                 break;
             default:
                 $orderDetail['ext']['flatType']['value'] = '<font color="#999999">无</font>';
         }
     }
     //钻等级
     if (isset($_POST['diamondLevel'])) {
         $orderDetail['ext']['diamondLevel'] = array('desc' => '钻等级', 'value' => $_POST['diamondLevel']);
     }
     //是否年费黄钻
     if (isset($_POST['yearDiamond'])) {
         $orderDetail['ext']['yearDiamond'] = array('desc' => '是否年费', 'value' => $_POST['yearDiamond'] ? '是' : '否');
     }
     //游戏VIP等级
     if (isset($_POST['vip'])) {
         $orderDetail['ext']['vip'] = array('desc' => '游戏VIP等级', 'value' => $_POST['vip']);
     }
     $orderDetail = serialize($orderDetail);
     $this->_modelWorkOrderDetail = $this->_getGlobalData('Model_WorkOrderDetail', 'object');
     $this->_modelWorkOrderDetail->add(array('work_order_id' => $workOrderId, 'content' => $orderDetail));
     #-----插入对话表------#
     $retArr = array('order_id' => $workOrderId);
     $this->_modelWorkOrderQa = $this->_getGlobalData('Model_WorkOrderQa', 'object');
     $content = strip_tags($_POST['content']);
     $content = str_replace(array('\\r\\n', '\\r'), chr(10), $content);
     $orderDialog = array('user_id' => 0, 'game_type_id' => $_POST['game_id'], 'operator_id' => $orderArr['operator_id'], 'work_order_id' => $workOrderId, 'qa' => '0', 'content' => $content, 'create_time' => CURRENT_TIME);
     if ($updateInfo && is_array($updateInfo)) {
         $_imgArr = array();
         $i = '';
         foreach ($updateInfo as $img) {
             $retArr["image_path{$i}"] = $img['web_path'];
             $i++;
             $_imgArr[] = str_replace(__ROOT__, '', $img["web_path"]);
         }
         $orderDialog['image'] = json_encode($_imgArr);
     }
     $this->_modelWorkOrderQa->add($orderDialog);
     //$orderArr["room_id"]
     if ($orderArr['room_id'] && $gameServerList['server_url'] && $_POST['user_id']) {
         $this->_autoreply($orderArr, $gameServerList['server_url']);
     }
     #-----插入对话表------#
     eaccelerator_rm('question_' . $orderArr['user_account']);
     eaccelerator_put('question_' . $orderArr['user_account'], md5($orderArr['user_account'] . $orderArr['title']), 60);
     $this->_utilMsg->showMsg("提交成功", 1);
 }