function detail()
 {
     $uid = $this->_getid('uid');
     $showAll = $this->_getid('all', 0);
     if (!$uid) {
         $this->returnJson = false;
         showError('用户参数丢失');
     }
     $rs = D('member')->getUserInfoById($uid, 'all');
     if ($rs) {
         $rs['village_name'] = $rs['village_id'] ? parent::getVillageName($rs['village_id']) : '';
     }
     $this->assign(array('rs' => $rs, 'sex' => $this->sex, 'showAll' => $showAll));
     $this->display();
 }
 public function report()
 {
     $startTime = $this->_get('stime', '');
     //开始时间
     $endTime = $this->_get('etime', '');
     //结束时间
     $serviceId = $this->_getid('service_id', 0);
     //服务社
     $isOutput = $this->_getid('is_output', 0);
     //是否导出数据
     $cateId = $this->_getid('cid', 0);
     //类目
     $cateList = array(275 => '半成品菜', 273 => '预定下午茶');
     if (!isset($cateList[$cateId])) {
         showError('抱歉,该类目不允许查看');
     }
     if (!parent::_checkIsAdmin()) {
         if ($cateId != 275 || steadmin::$adminInfo['user_id'] != 291) {
             //半成品菜店长
             showError('抱歉,暂无权限');
         }
     }
     //取类目及所有子类目
     $cateAllList = M('ste_goods_cate')->where(array('city_id' => steadmin::$adminInfo['city_id'], 'is_del' => 0))->order('sort DESC')->select('id');
     $tidList = D('tree')->getSubs($cateAllList, $cateId, true);
     $cateId = $tidList['list'] ? implode(',', $tidList['list']) : $cateId;
     //默认报表时间为今天
     $today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
     $stime = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'));
     if (!$startTime) {
         $startTime = date('Y-m-d', $stime);
     }
     if (!$endTime) {
         $endTime = date('Y-m-d', $stime);
     }
     if ($startTime && $endTime) {
         $startTime = inTime($startTime);
         $endTime = inTime($endTime) + 60 * 60 * 24 - 1;
     }
     if ($serviceId) {
         $where = ' AND a.service_id=' . $serviceId;
         $sWhere = ' AND service_id=' . $serviceId;
     } else {
         $where = '';
         $sWhere = '';
     }
     if ($startTime < $today) {
         $statusList = '1,3,4,5,6,7,8,9,10,11';
     } else {
         $statusList = '1,3,4,5,6,7,8,9,10,11';
         //搜索状态:已支付、已审核、正在配货
     }
     //根据类目搜索所有的商品gid
     $where = '';
     $rs = M('ste_order')->query('SELECT a.order_id,a.order_sn,a.order_type,a.service_id,a.village_id,a.uid,a.address,a.phone,a.username,' . 'a.desc,a.arrive_date,a.arrive_time,a.order_source,a.status,a.order_time,a.goods_counts AS goods_total,b.gid,b.shop_id,b.goods_name,b.goods_counts,b.goods_price' . ' FROM __TABLE__ AS a LEFT JOIN __PRE__ste_order_goods AS b ON a.order_id=b.order_id WHERE a.arrive_date>=' . $startTime . ' AND a.arrive_date<=' . $endTime . ' AND a.status IN (' . $statusList . ') AND b.gid IN (
         SELECT gid FROM __PRE__ste_goods WHERE cate_id IN (' . $cateId . ') ' . $sWhere . '
         )' . $where . ' ORDER BY service_id ASC');
     //        z(M('ste_order')->getAllSql());
     //        z($rs);
     $orderList = array();
     $orderTotal = array();
     $serviceList = array();
     if ($rs) {
         foreach ($rs as $val) {
             //统计各个菜的数量
             $goodsName = md5($val['goods_name']);
             if (!isset($orderTotal[$goodsName])) {
                 $orderTotal[$goodsName] = array('name' => $val['goods_name'], 'counts' => $val['goods_counts'], 'item' => array());
             } else {
                 $orderTotal[$goodsName]['counts'] += $val['goods_counts'];
             }
             if (!isset($orderTotal[$goodsName]['item'][$val['service_id']])) {
                 $orderTotal[$goodsName]['item'][$val['service_id']] = array('name' => $this->serviceData[$val['service_id']]['stitle'], 'counts' => $val['goods_counts']);
             } else {
                 $orderTotal[$goodsName]['item'][$val['service_id']]['counts'] += $val['goods_counts'];
             }
             //按服务社统计菜单
             if (!isset($serviceList[$val['service_id']])) {
                 $serviceList[$val['service_id']] = array('service_name' => $this->serviceData[$val['service_id']]['stitle'], 'counts' => $val['goods_counts'], 'item' => array());
             } else {
                 $serviceList[$val['service_id']]['counts'] += $val['goods_counts'];
             }
             if (!isset($serviceList[$val['service_id']]['item'][$val['gid']])) {
                 $serviceList[$val['service_id']]['item'][$val['gid']] = array('name' => $val['goods_name'], 'counts' => $val['goods_counts']);
             } else {
                 $serviceList[$val['service_id']]['item'][$val['gid']]['counts'] += $val['goods_counts'];
             }
             //按订单号归类商品
             if (!isset($orderList[$val['order_id']])) {
                 $orderList[$val['order_id']] = array('order_id' => $val['order_id'], 'order_sn' => $val['order_sn'], 'order_type' => $val['order_type'], 'service_id' => $val['service_id'], 'service_name' => $this->serviceData[$val['service_id']]['stitle'], 'village_id' => $val['village_id'], 'village_name' => parent::getVillageName($val['village_id']), 'address' => $val['address'], 'phone' => $val['phone'], 'username' => $val['username'], 'desc' => $val['desc'], 'arrive_date' => $val['arrive_date'], 'arrive_time' => $val['arrive_time'], 'order_source' => $val['order_source'], 'status' => $val['status'], 'order_time' => $val['order_time'], 'goods_total' => $val['goods_total'], 'select_goods_total' => 0, 'list' => array());
             }
             $orderList[$val['order_id']]['list'][] = array('goods_name' => $val['goods_name'], 'goods_counts' => $val['goods_counts'], 'goods_price' => $val['goods_price']);
             $orderList[$val['order_id']]['select_goods_total'] += $val['goods_counts'];
         }
     }
     //        z($orderTotal);
     //        z($serviceList);
     if ($isOutput) {
         $dataList = array();
         $title = array('订单号', '收货人', '手机', '地址', '配送时间', '商品列表', '留言', '混合订单');
         foreach ($orderList as $val) {
             $list = array();
             foreach ($val['list'] as $v) {
                 $list[] = $v['goods_name'] . ' (x ' . $v['goods_counts'] . ')';
             }
             $dataList[] = array($val['order_sn'], $val['username'], $val['phone'], $val['address'], outTime($val['arrive_date'], 2) . ' ' . $val['arrive_time'], implode("\r\n", $list), $val['desc'], $val['goods_total'] == $val['select_goods_total'] ? '否' : '是');
         }
         if (isset($this->serviceData[$serviceId])) {
             $tname = $this->serviceData[$serviceId]['stitle'];
         } else {
             $tname = '全部';
         }
         $dataList[] = array('', '', '', '', '', '', '', '');
         $dataList[] = array('', '', '', '', '', '', '', '');
         $dataList[] = array('品类', '详细', '数量', '', '', '', '', '');
         //将统计信息附加到报表中
         foreach ($orderTotal as $val) {
             $list = array();
             foreach ($val['item'] as $v) {
                 $list[] = $v['name'] . ' (' . $v['counts'] . '份)';
             }
             $dataList[] = array($val['name'], implode('、', $list), $val['counts'], '', '', '', '', '');
         }
         $dataList[] = array('', '', '', '', '', '', '', '');
         $dataList[] = array('', '', '', '', '', '', '', '');
         $dataList[] = array('服务社', '详细', '数量', '', '', '', '', '');
         //将统计信息附加到报表中
         foreach ($serviceList as $val) {
             $list = array();
             foreach ($val['item'] as $v) {
                 $list[] = $v['name'] . ' (' . $v['counts'] . '份)';
             }
             $dataList[] = array($val['service_name'], implode("\r\n", $list), $val['counts'], '', '', '', '', '');
         }
         load('csv');
         $csv = new csv();
         $csv->write($title, $dataList, $cateList[$cateId] . '订单_' . $tname . date('Y-m-d H/i/s'));
     } else {
         $this->assign(array('rs' => $orderList, 'orderTotal' => $orderTotal, 'cid' => $cateId, 'service_id' => $serviceId, 'startTime' => $startTime, 'endTime' => $endTime, 'serviceList' => $serviceList, 'service' => $this->serviceData, 'setting' => $this->steSetting));
         $this->display();
     }
 }
 /**
  * 详细
  */
 public function detail()
 {
     $id = $this->_getid('id', 0);
     $orderSn = $this->_get('order_sn', '');
     if (!$id && !$orderSn) {
         showError('参数丢失');
     }
     if ($orderSn) {
         $where = array('order_sn' => $orderSn);
     } else {
         $where = array('order_id' => $id);
     }
     $rs = M('ste_order')->where($where)->find();
     if (!$rs) {
         showError('订单不存在');
     }
     if (parent::_checkIsPresident()) {
         //社长
         if ($rs['service_id'] != steadmin::$adminInfo['service_id']) {
             showError('没有操作权限!');
         }
     } elseif (!parent::_checkIsAdmin()) {
         showError('没有操作权限');
     }
     $rs['serviceName'] = isset($this->serviceData[$rs['service_id']]) ? $this->serviceData[$rs['service_id']]['stitle'] : '';
     $rs['userName'] = getUser($rs['uid']);
     $rs['villageName'] = parent::getVillageName($rs['village_id']);
     $rs['service_user'] = parent::_getAdminName($rs['service_uid'], 'real_name');
     $rs['deployment_user'] = parent::_getAdminName($rs['deployment_uid'], 'real_name');
     $rs['worker_user'] = parent::_getAdminName($rs['worker_uid'], 'real_name');
     $orderRefund = array();
     if ($rs['status'] == 10) {
         //有退款的
         $orderRefund = M('ste_order_refund')->where(array('order_id' => $rs['order_id']))->find();
         $orderRefund['actualUserNmae'] = parent::_getAdminName($orderRefund['user_id']);
     }
     $comment = array();
     if ($rs['status'] == 11) {
         //已评价
         $comment = M('ste_order_comment')->where(array('order_id' => $rs['order_id']))->find();
         $comment['complainList'] = $comment['complain'] ? explode(',', $comment['complain']) : array();
     }
     //订单商品数据
     $goods = M('ste_order_goods')->where(array('order_id' => $rs['order_id']))->findAll(false);
     foreach ($goods as $k => $v) {
         $goods[$k]['shopName'] = parent::_getShopName($v['shop_id']);
     }
     //        z($rs);
     $this->assign(array('rs' => $rs, 'orderRefund' => $orderRefund, 'isEdit' => in_array($rs['status'], array(2, 7, 9, 10, 11)) ? 0 : 1, 'goods' => $goods, 'setting' => $this->steSetting, 'comment' => $comment));
     $this->display();
 }