public function view_messageStatisticsAli()
 {
     $starttime = isset($_GET['starttime']) ? trim($_GET['starttime']) : '';
     $endtime = isset($_GET['endtime']) ? trim($_GET['endtime']) : '';
     $type = isset($_GET['type']) ? trim($_GET['type']) : 'order';
     $wheresql = '';
     date_default_timezone_set('America/Los_Angeles');
     //转换成洛杉矶时间
     $start_stamp = strtotime($starttime);
     $end_stamp = strtotime($endtime) + 84600;
     date_default_timezone_set('Asia/Shanghai');
     if (!empty($starttime)) {
         $wheresql .= ' and createtimestamp > ' . $start_stamp;
     }
     if (!empty($endtime)) {
         $wheresql .= ' and createtimestamp < ' . $end_stamp;
     }
     $localuser = new GetLoacalUserModel();
     $mysql_obj = new MysqlModel();
     $cat_obj = new messagecategoryModel();
     $list = $cat_obj->getAllCategoryInfoList('', 2);
     //         print_r($list);
     $userGroup = array();
     foreach ($list as $lival) {
         $cat_name = trim($lival['category_name']);
         $nameBreak = explode("--", $cat_name);
         $userName = array_pop($nameBreak);
         if (array_key_exists($userName, $userGroup)) {
             $userGroup[$userName][] = $lival['id'];
         } else {
             $userGroup[$userName] = array($lival['id']);
         }
     }
     $userName2loginName = array('韩庆新' => '*****@*****.**', '王丽娟' => '*****@*****.**', '王玲' => '*****@*****.**', '王铭' => '*****@*****.**', '喻情' => '*****@*****.**', '黄海娣' => '*****@*****.**', '袁岸' => '*****@*****.**', '潘小红' => '*****@*****.**', '陈小燕' => '*****@*****.**', '肖奇生' => '*****@*****.**', '戴霞' => '*****@*****.**', '温健玲' => '*****@*****.**', '肖庚莲' => '*****@*****.**');
     $name2id = $localuser->getUserId($userName2loginName);
     //中文名称到系统用户id的映射关系
     //         print_r($name2id);
     if ($type == 'order') {
         //处理订单留言
         $sql = "select fieldId , hasread,count(*) as num from msg_aliordermessage where role=1 and hasread in (0,1)\n                       {$wheresql} group by fieldId, hasread\n                    ";
         //             echo $sql;exit;
         $resultList = $mysql_obj->getQueryResult($sql);
         $statistics = array();
         //统计数据
         foreach ($userGroup as $username => $ids) {
             if (!array_key_exists($username, $statistics)) {
                 $statistics[$username] = array(0 => 0, 1 => 0);
             }
             foreach ($resultList as $row) {
                 if (in_array($row['fieldId'], $ids)) {
                     if ($row['hasread'] == 0) {
                         //累加未回复留言
                         $statistics[$username][0] += $row['num'];
                     } elseif ($row['hasread'] == 1) {
                         //累加已读留言
                         $statistics[$username][1] += $row['num'];
                     }
                 }
             }
         }
         foreach ($statistics as $key => $item) {
             $total = array_sum($item);
             $statistics[$key]['total'] = $total;
         }
         //             print_r($statistics);
         $replyedStatistics = array();
         //已回复留言统计
         $userIdSql = implode(', ', $name2id);
         $sqlre = "select replyer, count(*) as num from msg_aliordermessage where role=1 and replyer in ({$userIdSql}) \n                                    and hasread=2 {$wheresql}  group by replyer";
         //             echo $sqlre;exit;
         $replyResult = $mysql_obj->getQueryResult($sqlre);
         $replyList = array();
         foreach ($replyResult as $reRow) {
             $replyList[$reRow['replyer']] = $reRow['num'];
         }
         $totalNohandle = 0;
         //未处理的留言总数
         $totalRead = 0;
         //已读留言总数
         $totalReply = 0;
         //已回复留言总数
         foreach ($statistics as $r) {
             $totalNohandle += $r[0];
             $totalRead += $r[1];
             $totalReply += $r[2];
         }
         global $dbConn;
         $accountGroup = $this->getAliAccountGroup();
         $gropAmount = array();
         foreach ($accountGroup as $key => $group) {
             $sql_str = implode("', '", $group);
             $sql = "select count(1) as num from msg_aliordermessage where receiverid in ('{$sql_str}') {$wheresql}";
             $row = $dbConn->fetch_first($sql);
             $gropAmount[$key] = $row['num'];
         }
         $filpNameId = array_flip($name2id);
         foreach ($statistics as $user => $rows) {
             $userId = isset($name2id[$user]) ? $name2id[$user] : -1;
             if (isset($replyList[$userId])) {
                 $statistics[$user][2] = $replyList[$userId];
             } else {
                 $statistics[$user][2] = 0;
             }
         }
         $thirdmenue = 1;
     } else {
         //处理站内信
         $sql = "select fieldId , hasread, count(*) as num from msg_alisitemessage where role=1 and hasread in (0,1)\n                      {$wheresql}  group by fieldId, hasread\n                    ";
         $resultList = $mysql_obj->getQueryResult($sql);
         $statistics = array();
         // 统计数据
         foreach ($userGroup as $username => $ids) {
             if (!array_key_exists($username, $statistics)) {
                 $statistics[$username] = array(0 => 0, 1 => 0);
             }
             foreach ($resultList as $row) {
                 if (in_array($row['fieldId'], $ids)) {
                     if ($row['hasread'] == 0) {
                         // 累加未回复留言
                         $statistics[$username][0] += $row['num'];
                     } elseif ($row['hasread'] == 1) {
                         // 累加已读留言
                         $statistics[$username][1] += $row['num'];
                     }
                 }
             }
         }
         foreach ($statistics as $key => $item) {
             $total = array_sum($item);
             $statistics[$key]['total'] = $total;
         }
         //             print_r($statistics);
         $replyedStatistics = array();
         // 已回复留言统计
         $userIdSql = implode(', ', $name2id);
         $sqlre = "select replyer, count(*) as num from msg_alisitemessage where role=1 and replyer in ({$userIdSql}) \n                                  and hasread=2 {$wheresql} group by replyer";
         //             echo $sqlre;exit;
         $replyResult = $mysql_obj->getQueryResult($sqlre);
         $replyList = array();
         foreach ($replyResult as $reRow) {
             $replyList[$reRow['replyer']] = $reRow['num'];
         }
         $totalNohandle = 0;
         // 未处理的留言总数
         $totalRead = 0;
         // 已读留言总数
         $totalReply = 0;
         // 已回复留言总数
         foreach ($statistics as $r) {
             $totalNohandle += $r[0];
             $totalRead += $r[1];
             $totalReply += $r[2];
         }
         global $dbConn;
         $accountGroup = $this->getAliAccountGroup();
         $gropAmount = array();
         foreach ($accountGroup as $key => $group) {
             $sql_str = implode("', '", $group);
             $sql = "select count(1) as num from msg_alisitemessage where receiverid in ('{$sql_str}') {$wheresql}";
             $row = $dbConn->fetch_first($sql);
             $gropAmount[$key] = $row['num'];
         }
         //             print_r($gropAmount);exit;
         $filpNameId = array_flip($name2id);
         //             print_r($filpNameId);
         foreach ($statistics as $user => $rows) {
             $userId = isset($name2id[$user]) ? $name2id[$user] : -1;
             if (isset($replyList[$userId])) {
                 $statistics[$user][2] = $replyList[$userId];
             } else {
                 $statistics[$user][2] = 0;
             }
         }
         //             print_r($statistics);exit;
         $thirdmenue = 2;
     }
     //         exit;
     //         print_r($data);exit;
     $this->smarty->assign('third_menue', $thirdmenue);
     $this->smarty->assign('starttime', $starttime);
     $this->smarty->assign('endtime', $endtime);
     $this->smarty->assign('totalNhandle', $totalNohandle);
     $this->smarty->assign('totalread', $totalRead);
     $this->smarty->assign('totalreply', $totalReply);
     $this->smarty->assign('type', $type);
     $this->smarty->assign('toplevel', 3);
     //         $this->smarty->assign('navlist', $navlist);
     $this->smarty->assign('statistics', $statistics);
     $this->smarty->assign('statistics_2', $gropAmount);
     $this->smarty->assign('sec_menue', 2);
     $this->smarty->display('msgstatisticsAliorder.htm');
 }
 public function view_messageStatistics()
 {
     $starttime = isset($_GET['starttime']) ? trim($_GET['starttime']) : '';
     $endtime = isset($_GET['endtime']) ? trim($_GET['endtime']) : '';
     $this->smarty->assign('starttime', $starttime);
     $this->smarty->assign('endtime', $endtime);
     $wheresql = '';
     if (!empty($starttime)) {
         $start_stamp = strtotime($starttime);
     } else {
         $start_stamp = strtotime(date('Y-m-d'));
         //没有开始时间就默认为当前日期
     }
     if (!empty($endtime)) {
         $end_stamp = strtotime($endtime);
     } else {
         $end_stamp = $start_stamp + 86399;
         //没有结束时间就默认为开始时间加到这天的最后一秒
     }
     if ($starttime == $endtime) {
         $end_stamp = $start_stamp + 86399;
     }
     $wheresql .= '(replytime between ' . $start_stamp . ' and ' . $end_stamp . ')';
     /*获得文件夹列表*/
     $cat_obj = new amazonmessagecategoryModel();
     $list = $cat_obj->getAllCategoryInfoList('');
     $catgroup = array();
     $finalcatgroup = array();
     //print_r($list);exit;
     /*----- 生成数组形式的客服及其所属分类id -----*/
     foreach ($list as $v) {
         $catname = $v['category_name'];
         $breakar = explode('-', $catname);
         if (isset($breakar[1])) {
             if (array_key_exists($breakar[1], $catgroup)) {
                 $catgroup[$breakar[1]][] = $v['id'];
             } else {
                 $catgroup[$breakar[1]] = array($v['id']);
             }
         }
     }
     //  print_r($catgroup);
     $localUser_obj = new GetLoacalUserModel();
     $userlist = array();
     $userlist = $localUser_obj->getUserInfo(74);
     //获得所有的74部门的成员
     $name2id = $localUser_obj->getUserId($userlist);
     $userlist_tmp = array_flip($name2id);
     //print_r($userlist_tmp);
     //这是防止创建人不是74部的
     foreach ($catgroup as $name => $cid) {
         if (in_array($name, $userlist_tmp)) {
             $finalcatgroup[$name] = $cid;
         }
     }
     // print_r($finalcatgroup);
     $idsql = implode(',', $name2id);
     //根据上边的全局id查询某个id回复了的邮件数
     $sql_user = "******";
     //echo $sql_user;
     $query_re = mysql_query($sql_user);
     $userReply = array();
     //为对应的全局id和回复的邮件数
     while ($urow = mysql_fetch_assoc($query_re)) {
         $userReply[$urow['replyuser_id']] = $urow['num'];
     }
     //print_r($userReply);
     /*----- 生成统计信息 -----*/
     /*----- 以下是先获取所有的邮件回复状况 -----*/
     $sql = "select classid, status, count(status) as num from msg_amazonmessage where ( {$wheresql} ) or replytime is null  group by classid , status";
     // echo $sql;
     $result = array();
     // result结构:array(分类id=>array(邮件状态值=>邮件数量))
     $finalresult = array();
     $final = array();
     //echo $sql;
     $qre = mysql_query($sql);
     while ($row = mysql_fetch_assoc($qre)) {
         if (array_key_exists($row['classid'], $result)) {
             if (!array_key_exists($row['status'], $result[$row['classid']])) {
                 $result[$row['classid']][$row['status']] = $row['num'];
             }
         } else {
             $result[$row['classid']] = array($row['status'] => $row['num']);
         }
     }
     // print_r($result);
     foreach ($finalcatgroup as $name => $cids) {
         foreach ($result as $classid => $status) {
             if (in_array($classid, $cids)) {
                 $finalresult[$name][] = $status;
             } else {
                 $finalresult[$name][] = array(0, 0, 0, 0);
             }
         }
     }
     //print_r($finalresult);
     //这里统计的是某个客服邮件的未回复,回复中,标记回复数
     foreach ($finalresult as $name => $status) {
         $final[$name] = array(0, 0, 0, 0);
         foreach ($status as $state) {
             $final[$name][0] += isset($state[0]) ? $state[0] : 0;
             $final[$name][1] += isset($state[1]) ? $state[1] : 0;
             $final[$name][2] += isset($state[2]) ? $state[2] : 0;
             $final[$name][3] += isset($state[3]) ? $state[3] : 0;
         }
         //名字必须在该部门,其回复的数量才会被记录,不然会被置为0
         $final[$name][2] = array_key_exists($name, $userlist) ? $final[$name][2] : 0;
         $final[$name][4] = $final[$name][0] + $final[$name][2];
         $final[$name]['name'] = $name;
     }
     //print_r($final);
     /*----- 处理排序 -----*/
     $noreply = array();
     //未回复
     $replyed = array();
     //已回复
     $replying = array();
     //回复中
     $markreply = array();
     //标记回复
     $total = array();
     //总数
     foreach ($final as $name => $item) {
         $noreply[$name] = $item[0];
         $replyed[$name] = $item[2];
         $replying[$name] = $item[1];
         $markreply[$name] = $item[3];
         $total[$name] = $item[4];
     }
     //print_r($total);exit;
     $total_noreply = array_sum($noreply);
     $total_replyed = array_sum($replyed);
     $total_replying = array_sum($replying);
     $total_markreply = array_sum($markreply);
     $total_total = array_sum($total);
     $this->smarty->assign('total_noreply', $total_noreply);
     $this->smarty->assign('total_replyed', $total_replyed);
     $this->smarty->assign('total_markreply', $total_markreply);
     $this->smarty->assign('total_replying', $total_replying);
     $this->smarty->assign('total_total', $total_total);
     $sort_no = isset($_GET['srtn']) ? $_GET['srtn'] == 'asc' ? $sortype = 'asc' : ($sortype = 'desc') : FALSE;
     //未回复
     $sort_h = isset($_GET['srth']) ? $_GET['srth'] == 'asc' ? $sortype = 'asc' : ($sortype = 'desc') : FALSE;
     //已回复
     $sort_i = isset($_GET['srti']) ? $_GET['srti'] == 'asc' ? $sortype = 'asc' : ($sortype = 'desc') : FALSE;
     //回复中
     $sort_m = isset($_GET['srtm']) ? $_GET['srtm'] == 'asc' ? $sortype = 'asc' : ($sortype = 'desc') : FALSE;
     //标记回复
     $sort_t = isset($_GET['srtt']) ? $_GET['srtt'] == 'asc' ? $sortype = 'asc' : ($sortype = 'desc') : FALSE;
     //总数
     if ($sort_no !== FALSE) {
         //未回复排序
         if ($sort_no == 'asc') {
             //升序
             asort($noreply);
         } else {
             //降序
             arsort($noreply);
         }
         $this->smarty->assign('condition', 'sort_no');
         $this->smarty->assign('sortindex', $noreply);
     } elseif ($sort_h !== FALSE) {
         //已回复
         if ($sort_h == 'asc') {
             asort($replyed);
         } else {
             arsort($replyed);
         }
         $this->smarty->assign('condition', 'sort_h');
         $this->smarty->assign('sortindex', $replyed);
     } elseif ($sort_i !== FALSE) {
         //回复中
         if ($sort_i == 'asc') {
             asort($replying);
         } else {
             arsort($replying);
         }
         $this->smarty->assign('condition', 'sort_i');
         $this->smarty->assign('sortindex', $replying);
     } elseif ($sort_m !== FALSE) {
         //标记回复
         if ($sort_m == 'asc') {
             asort($markreply);
         } else {
             arsort($markreply);
         }
         $this->smarty->assign('condition', 'sort_m');
         $this->smarty->assign('sortindex', $markreply);
     } elseif ($sort_t !== FALSE) {
         //总数量
         if ($sort_t == 'asc') {
             asort($total);
         } else {
             arsort($total);
         }
         $this->smarty->assign('condition', 'sort_t');
         $this->smarty->assign('sortindex', $total);
     } else {
         //默认按未回复数量降序排列
         if ($sort_no == 'asc') {
             //升序
             asort($noreply);
         } else {
             //降序
             arsort($noreply);
         }
         $this->smarty->assign('condition', 'sort_no');
         $this->smarty->assign('sortindex', $noreply);
     }
     //print_r($noreply);exit;
     $this->smarty->assign('sorttype', $sortype);
     /*----- 处理排序 -----*/
     $this->smarty->assign('sec_menue', 7);
     $navlist = array(array('url' => 'index.php?mod=msgCategoryAmazon&act=categoryList', 'title' => 'Amazon message系统'), array('url' => '', 'title' => 'Amazon message统计'));
     $isExport = isset($_GET['export']) ? TRUE : FALSE;
     if ($isExport) {
         $final[] = array($total_noreply, 0, $total_replyed, 0, $total_total, 'name' => '统计');
         $this->exportExcell($starttime, $endtime, $final);
         exit;
     }
     $this->smarty->assign('starttime', date('Y-m-d', $start_stamp));
     $this->smarty->assign('endtime', date('Y-m-d', $end_stamp));
     $this->smarty->assign('toplevel', 3);
     $this->smarty->assign('navlist', $navlist);
     $this->smarty->assign('statistics', $final);
     $this->smarty->assign('sec_menue', 3);
     $this->smarty->display('msgstatisticsAmazon.htm');
 }