Example #1
0
 public function ProcessComplainDetail($Complain)
 {
     $oMenCache = new Base_Cache_Memcache("Complaint");
     $Setting = $oMenCache->get('setting');
     $oCategory = new Kubao_Category();
     $oOperator = new Kubao_Operator();
     $oQtype = new Kubao_Qtype();
     $QuestionDetail = $this->GetQuestionDetail($Complain['QuestionId']);
     //获取到问题详情
     if ($QuestionDetail['QuestionId'] > 0) {
         //如果问题尚未被转换分类
         if ($QuestionDetail['Transformed'] != 1) {
             //如果问题被设置为隐藏
             if ($QuestionDetail['Hidden'] == 1) {
                 return $QuestionDetail;
             } else {
                 $QuestionType = "complain";
                 //获取问题分类内容
                 $CategoryInfo = $oCategory->getCategoryByQuestionType($QuestionType);
                 $QuestionDetail['CategoryName'] = $CategoryInfo['id'] ? $CategoryInfo['name'] : "未设置分类";
                 $QuestionDetail['QuestionType'] = ucfirst($QuestionType);
                 $QuestionDetail['PageTitle'] = $QuestionDetail['CategoryName'] . "详情";
                 //获取问题主分类内容
                 $QtypeInfo = $oQtype->getQtypeById($QuestionDetail['QtypeId'], 'id,name');
                 $QuestionDetail['QtypeName'] = $QtypeInfo['id'] ? $QtypeInfo['name'] : "未设置分类";
                 //如果回答中包含客服账号
                 if ($QuestionDetail['Answer']['OperatorName']) {
                     $List = 'id,photo,login_name,cno,QQ,mobile,weixin,weixinPicUrl,tel,name';
                     $M = $oMenCache->get('OperatorInfo_' . $QuestionDetail['Answer']['OperatorName'] . "_" . md5($List));
                     if ($M) {
                         $OperatorInfo = json_decode($M, true);
                         //如果获取到的客服信息不合法
                         if (!$OperatorInfo['login_name']) {
                             //从主站获取客服信息
                             $OperatorInfo = $oOperator->getOperatorFromVadmin($QuestionDetail['Answer']['OperatorName'], $List);
                             $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                         }
                     } else {
                         //从主站获取客服信息
                         $OperatorInfo = $oOperator->getOperatorFromVadmin($QuestionDetail['Answer']['OperatorName'], $List);
                         //如果没有从主站获取到客服信息
                         if ($OperatorInfo['login_name']) {
                             //格式化显示信息
                             $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                             $oMenCache->set('OperatorInfo_' . $QuestionDetail['Answer']['OperatorName'] . "_" . md5($List), json_encode($OperatorInfo), 60);
                         }
                     }
                     //如果获取到的客服信息合法
                     if ($OperatorInfo['OperatorName']) {
                         $oMenCache->set('OperatorInfo_' . $QuestionDetail['Answer']['OperatorName'] . "_" . md5($List), json_encode($OperatorInfo), 60);
                         $QuestionDetail['Answer']['OperatorInfo'] = $OperatorInfo;
                     } else {
                         unset($QuestionDetail['Answer']['OperatorInfo']);
                     }
                 }
                 //如果包含接单客服账号
                 if ($QuestionDetail['AcceptOperatorName']) {
                     $List = 'id,photo,login_name,cno,QQ,mobile,weixin,weixinPicUrl,tel,name';
                     //$M = $oMenCache -> get('OperatorInfo_'.$QuestionDetail['AcceptOperatorName']."_".md5($List));
                     if ($M) {
                         $OperatorInfo = json_decode($M, true);
                         //如果获取到的客服信息不合法
                         if (!$OperatorInfo['login_name']) {
                             //从主站获取客服信息
                             $OperatorInfo = $oOperator->getOperatorFromVadmin($QuestionDetail['AcceptOperatorName'], $List);
                             $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                         }
                     } else {
                         //从主站获取客服信息
                         $OperatorInfo = $oOperator->getOperatorFromVadmin($QuestionDetail['AcceptOperatorName'], $List);
                         //如果没有从本地获取到客服信息
                         if ($OperatorInfo['login_name']) {
                             //格式化显示信息
                             $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                         }
                     }
                     //如果获取到的客服信息合法
                     if ($OperatorInfo['OperatorName']) {
                         $oMenCache->set('OperatorInfo_' . $QuestionDetail['AcceptOperatorName'] . "_" . md5($List), json_encode($OperatorInfo), 60);
                         $QuestionDetail['AcceptOperatorInfo'] = $OperatorInfo;
                     } else {
                         unset($QuestionDetail['AcceptOperatorInfo']);
                     }
                 }
                 //如果问题状态为 已同步至投诉 并且 状态不是已撤销 并且 问题状态未初始创建 或者 开关允许任何状态撤销
                 if ($QuestionDetail['Sync'] == 1 && $QuestionDetail['QuestionStauts'] != 5 && $QuestionDetail['QuestionStatus'] != 5 && ($QuestionDetail['QuestionStauts'] == 0 || $QuestionDetail['QuestionStatus'] == 0 || $Setting['complainSwitch'])) {
                     //允许问题撤销
                     $QuestionDetail['Revoke'] = 1;
                 }
                 unset($QuestionDetail['CatagoryId'], $QuestionDetail['QtypeId']);
                 return $QuestionDetail;
             }
         } else {
             //如果问题被转换为咨询/建议
             if (in_array($QuestionDetail['QuestionType'], array('ask', 'suggest'))) {
                 return $QuestionDetail;
             } else {
                 return false;
             }
         }
     } else {
         return false;
     }
 }
Example #2
0
 function ProcessQuestionDetail($Question)
 {
     $oMenCache = new Base_Cache_Memcache("Complaint");
     $Setting = $oMenCache->get('setting');
     $oCategory = new Kubao_Category();
     $oOperator = new Kubao_Operator();
     $oQtype = new Kubao_Qtype();
     //根据问题ID判断问题是否属于历史数据库
     $HistoryMapping = $this->GetHistoryMap($Question['QuestionId'], 'ask');
     $QuestionDetail = $this->GetQuestionDetail($Question['QuestionId'], intval($HistoryMapping['year']));
     //获取到问题详情
     if ($QuestionDetail['QuestionId'] > 0) {
         //如果问题尚未被转换分类
         if ($QuestionDetail['Transformed'] != 1) {
             //获取问题分类内容
             $CategoryInfo = $oCategory->getCategory($QuestionDetail['CatagoryId'], 'id,name,question_type');
             $QuestionDetail['CategoryName'] = $CategoryInfo['id'] ? $CategoryInfo['name'] : "未设置分类";
             $QuestionDetail['QuestionType'] = ucfirst($CategoryInfo['question_type']);
             $QuestionDetail['PageTitle'] = $QuestionDetail['CategoryName'] . "详情";
             //获取问题主分类内容
             $QtypeInfo = $oQtype->getQtypeById($QuestionDetail['QtypeId'], 'id,name');
             $QuestionDetail['QtypeName'] = $QtypeInfo['id'] ? $QtypeInfo['name'] : "未设置分类";
             //如果回答中包含客服账号
             if ($QuestionDetail['Answer']['OperatorName']) {
                 $List = 'id,photo,login_name,cno,QQ,tel,mobile,weixin,weixinPicUrl,xnGroupId,name';
                 $M = $oMenCache->get('OperatorInfo_' . $QuestionDetail['Answer']['OperatorName'] . "_" . md5($List));
                 if ($M) {
                     $OperatorInfo = json_decode($M, true);
                     //如果获取到的客服信息合法
                     if (!$OperatorInfo['OperatorId']) {
                         //获取相关客服信息
                         $OperatorInfo = $oOperator->getOperatorByName($QuestionDetail['Answer']['OperatorName'], $List);
                         //格式化显示信息
                         $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                     }
                 } else {
                     //获取相关客服信息
                     $OperatorInfo = $oOperator->getOperatorByName($QuestionDetail['Answer']['OperatorName'], $List);
                     //格式化显示信息
                     $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                 }
                 //如果获取到的客服信息合法
                 if ($OperatorInfo['OperatorId']) {
                     $oMenCache->set('OperatorInfo_' . $QuestionDetail['Answer']['OperatorName'] . "_" . md5($List), json_encode($OperatorInfo), 60);
                     $QuestionDetail['Answer']['OperatorInfo'] = $OperatorInfo;
                 } else {
                     unset($QuestionDetail['Answer']['OperatorInfo']);
                 }
             }
             //处理追问内数据
             foreach ($QuestionDetail['SubQuestionList'] as $key => $SubQuestion) {
                 //如果回答中包含客服账号
                 if ($SubQuestion['Answer']['OperatorName']) {
                     $List = 'id,photo,login_name,cno,QQ,tel,mobile,weixin,weixinPicUrl,xnGroupId,name';
                     $M = $oMenCache->get('OperatorInfo_' . $SubQuestion['Answer']['OperatorName'] . "_" . md5($List));
                     if ($M) {
                         $OperatorInfo = json_decode($M, true);
                         //如果获取到的客服信息不合法
                         if (!$OperatorInfo['OperatorId']) {
                             //获取相关客服信息
                             $OperatorInfo = $oOperator->getOperatorByName($SubQuestion['Answer']['OperatorName'], $List);
                             //格式化显示信息
                             $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                         }
                     } else {
                         //获取相关客服信息
                         $OperatorInfo = $oOperator->getOperatorByName($SubQuestion['Answer']['OperatorName'], $List);
                         //格式化显示信息
                         $OperatorInfo = $oOperator->processOperatorInfo($OperatorInfo);
                     }
                     //如果获取到的客服信息不合法
                     if ($OperatorInfo['OperatorId']) {
                         $oMenCache->set('OperatorInfo_' . $SubQuestion['Answer']['OperatorName'] . "_" . md5($List), json_encode($OperatorInfo), 60);
                         $QuestionDetail['SubQuestionList'][$key]['OperatorInfo'] = $OperatorInfo;
                     } else {
                         unset($QuestionDetail['SubQuestionList'][$key]['OperatorInfo']);
                     }
                 }
             }
             //如果评价次数为正数且达到上限
             if ($Setting['limit_assess_num'] <= $QuestionDetail['AssessCount'] && $Setting['limit_assess_num'] >= 0) {
                 //取消评价资格
                 $QuestionDetail['Assess'] = 0;
             }
             //删除不必要的字段
             unset($QuestionDetail['CatagoryId'], $QuestionDetail['QtypeId']);
             return $QuestionDetail;
         } else {
             //如果问题被转换为投诉
             if ($QuestionDetail['QuestionType'] == "complain") {
                 return $QuestionDetail;
             } else {
                 return false;
             }
         }
     } else {
         return false;
     }
 }