コード例 #1
0
ファイル: Complain.php プロジェクト: eappl/prototype
 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;
     }
 }
コード例 #2
0
ファイル: Question.php プロジェクト: eappl/prototype
 function ApplyCancel($QuestionId)
 {
     $oOperator = new Kubao_Operator();
     //事务开启
     $this->db->begin();
     //获取问题
     $QuestionInfo = $this->getQuestion($QuestionId, "id,status,js_kf,pid");
     //问题存在
     if ($QuestionInfo['id']) {
         //如果已经被接手
         if ($QuestionInfo['js_kf'] != '') {
             //如果尚未被回答或尚未完结
             if ($QuestionInfo['status'] < 2) {
                 //标识未被分单
                 $updateArr = array("is_hawb" => 0, "js_kf" => "", "receive_time" => 0);
                 $UpdateQuestion = $this->updateQuestion($QuestionInfo['id'], $updateArr);
                 //减去单量
                 if ($QuestionInfo['pid'] == 0) {
                     //更新首问数量
                     $UpdateAcceptedNum = $oOperator->UpdateOperatorAccecpted($QuestionInfo['js_kf'], -1, 0);
                 } else {
                     //更新追问数量
                     $UpdateAcceptedNum = $oOperator->UpdateOperatorAccecpted($QuestionInfo['js_kf'], -1, 1);
                 }
                 if ($UpdateQuestion && $UpdateAcceptedNum) {
                     //事务成功,提交
                     $this->db->commit();
                     return true;
                 } else {
                     //事务失败,回滚
                     $this->db->rollback();
                     return false;
                 }
             } else {
                 //问题已被回答,回滚
                 $this->db->rollback();
                 return false;
             }
         } else {
             //问题无接手,回滚
             $this->db->rollback();
             return false;
         }
     } else {
         //问题未找到,回滚
         return false;
         $this->db->rollback();
     }
 }