예제 #1
0
 /**
  * 区域分析之地图数据
  */
 public function area_mapOp()
 {
     $model = Model('stat');
     $where = array();
     $searchtime_arr = explode('|', $_GET['t']);
     $where['add_time'] = array('between', $searchtime_arr);
     //$where['order_state'] = array(array('neq',ORDER_STATE_CANCEL),array('neq',ORDER_STATE_NEW),'and');
     $where['order_state'] = array('neq', ORDER_STATE_NEW);
     //去除未支付订单
     $where['refund_state'] = array('exp', "!(order_state = '" . ORDER_STATE_CANCEL . "' and refund_state = 0)");
     //没有参与退款的取消订单,不记录到统计中
     $where['payment_code'] = array('exp', "!([order].payment_code='offline' and order_state <> '" . ORDER_STATE_SUCCESS . "')");
     //货到付款订单,订单成功之后才计入统计
     $memberlist = array();
     //查询统计数据
     $field = ' order_common.reciver_province_id ';
     switch ($_GET['type']) {
         case 'orderamount':
             $field .= ' ,count(*) as ordernum,sum([order].order_amount) as orderamount ';
             $orderby = 'orderamount desc';
             break;
         case 'ordernum':
             $field .= ' ,count(*) as ordernum ';
             $orderby = 'ordernum desc';
             break;
         default:
             $_GET['type'] = 'membernum';
             $field .= ' ,count(DISTINCT [order].buyer_id) as membernum ';
             $orderby = 'membernum desc';
             break;
     }
     $orderby .= ',order_common.reciver_province_id';
     $statlist_tmp = $model->statByOrderCommon($where, $field, 10, 0, $orderby, 'order_common.reciver_province_id');
     // 地区
     require_once BASE_DATA_PATH . '/area/area.php';
     //地图显示等级数组
     $level_arr = array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9), array(10, 11, 12));
     $statlist = array();
     foreach ((array) $statlist_tmp as $k => $v) {
         $v['level'] = 4;
         //排名
         foreach ($level_arr as $lk => $lv) {
             if (in_array($k + 1, $lv)) {
                 $v['level'] = $lk;
                 //排名
             }
         }
         $province_id = intval($v['reciver_province_id']);
         $statlist[$province_id] = $v;
     }
     $stat_arr = array();
     foreach ((array) $area_array as $k => $v) {
         if ($statlist[$k]) {
             switch ($_GET['type']) {
                 case 'orderamount':
                     $des = ",下单金额:{$statlist[$k]['orderamount']}";
                     break;
                 case 'ordernum':
                     $des = ",下单量:{$statlist[$k]['ordernum']}";
                     break;
                 default:
                     $des = ",下单客户数:{$statlist[$k]['membernum']}";
                     break;
             }
             $stat_arr[] = array('cha' => $k, 'name' => $v['area_name'], 'des' => $des, 'level' => $statlist[$k]['level']);
         } else {
             $des = ",无订单数据";
             $stat_arr[] = array('cha' => $k, 'name' => $v['area_name'], 'des' => $des, 'level' => 4);
         }
     }
     $stat_json = getStatData_Map($stat_arr);
     Tpl::output('stat_field', $_GET['type']);
     Tpl::output('stat_json', $stat_json);
     Tpl::showpage('stat.map', 'null_layout');
 }
예제 #2
0
파일: stat_store.php 프로젝트: noikiy/ejia
 /**
  * 地区分布
  */
 public function storeareaOp()
 {
     $model = Model('stat');
     //获得搜索的开始时间和结束时间
     $searchtime_arr = $model->getStarttimeAndEndtime($this->search_arr);
     $where = array();
     if (trim($_GET['search_time'])) {
         $where['store_time'] = array('elt', strtotime($_GET['search_time']));
     }
     $search_sclass = intval($_REQUEST['search_sclass']);
     if ($search_sclass > 0) {
         $where['sc_id'] = $search_sclass;
     }
     $field = ' province_id, COUNT(*) as storenum ';
     $statlist_tmp = $model->statByStore($where, $field, 0, 0, 'storenum desc,province_id', 'province_id');
     // 地区
     $province_array = Model('area')->getTopLevelAreas();
     //地图显示等级数组
     $level_arr = array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9), array(10, 11, 12));
     $statlist = array();
     foreach ((array) $statlist_tmp as $k => $v) {
         $v['level'] = 4;
         //排名
         foreach ($level_arr as $lk => $lv) {
             if (in_array($k + 1, $lv)) {
                 $v['level'] = $lk;
                 //排名
             }
         }
         $province_id = intval($v['province_id']);
         $v['sort'] = $k + 1;
         $v['provincename'] = ($t = $province_array[$province_id]) ? $t : '其他';
         $statlist[$province_id] = $v;
     }
     $stat_arr = array();
     foreach ((array) $province_array as $k => $v) {
         if ($statlist[$k]) {
             $stat_arr[] = array('cha' => $k, 'name' => $v, 'des' => ",店铺量:{$statlist[$k]['storenum']}", 'level' => $statlist[$k]['level']);
         } else {
             $stat_arr[] = array('cha' => $k, 'name' => $v, 'des' => ',无订单数据', 'level' => 4);
         }
     }
     $stat_json = getStatData_Map($stat_arr);
     Tpl::output('stat_json', $stat_json);
     Tpl::output('statlist', $statlist);
     $actionurl = 'index.php?act=stat_store&op=showstore&type=storearea';
     if (trim($_GET['search_time'])) {
         $actionurl = $actionurl . '&t=0|' . strtotime($_GET['search_time']);
     }
     if ($search_sclass > 0) {
         $actionurl .= "&scid={$search_sclass}";
     }
     Tpl::output('actionurl', $actionurl);
     Tpl::output('top_link', $this->sublink($this->links, 'storearea'));
     Tpl::showpage('stat.storearea');
 }
예제 #3
0
 /**
  * 区域分析之地图数据
  */
 public function area_mapOp()
 {
     $model = Model('stat');
     $where = array();
     $where['order_isvalid'] = 1;
     //计入统计的有效订单
     $searchtime_arr_tmp = explode('|', $this->search_arr['t']);
     foreach ((array) $searchtime_arr_tmp as $k => $v) {
         $searchtime_arr[] = intval($v);
     }
     $where['order_add_time'] = array('between', $searchtime_arr);
     $memberlist = array();
     //查询统计数据
     $field = ' reciver_province_id ';
     switch ($_GET['type']) {
         case 'orderamount':
             $field .= ' ,SUM(order_amount) as orderamount ';
             $orderby = 'orderamount desc';
             break;
         case 'ordernum':
             $field .= ' ,COUNT(*) as ordernum ';
             $orderby = 'ordernum desc';
             break;
         default:
             $_GET['type'] = 'membernum';
             $field .= ' ,COUNT(DISTINCT buyer_id) as membernum ';
             $orderby = 'membernum desc';
             break;
     }
     $orderby .= ',reciver_province_id';
     $statlist_tmp = $model->statByStatorder($where, $field, 10, 0, $orderby, 'reciver_province_id');
     // 地区
     $province_array = Model('area')->getTopLevelAreas();
     //地图显示等级数组
     $level_arr = array(array(1, 2, 3), array(4, 5, 6), array(7, 8, 9), array(10, 11, 12));
     $statlist = array();
     foreach ((array) $statlist_tmp as $k => $v) {
         $v['level'] = 4;
         //排名
         foreach ($level_arr as $lk => $lv) {
             if (in_array($k + 1, $lv)) {
                 $v['level'] = $lk;
                 //排名
             }
         }
         $province_id = intval($v['reciver_province_id']);
         $statlist[$province_id] = $v;
     }
     $stat_arr = array();
     foreach ((array) $province_array as $k => $v) {
         if ($statlist[$k]) {
             switch ($_GET['type']) {
                 case 'orderamount':
                     $des = ",下单金额:{$statlist[$k]['orderamount']}";
                     break;
                 case 'ordernum':
                     $des = ",下单量:{$statlist[$k]['ordernum']}";
                     break;
                 default:
                     $des = ",下单会员数:{$statlist[$k]['membernum']}";
                     break;
             }
             $stat_arr[] = array('cha' => $k, 'name' => $v, 'des' => $des, 'level' => $statlist[$k]['level']);
         } else {
             $des = ",无订单数据";
             $stat_arr[] = array('cha' => $k, 'name' => $v, 'des' => $des, 'level' => 4);
         }
     }
     $stat_json = getStatData_Map($stat_arr);
     Tpl::output('stat_field', $_GET['type']);
     Tpl::output('stat_json', $stat_json);
     Tpl::showpage('stat.map', 'null_layout');
 }
예제 #4
0
	/**
	 * 地区分布
	 */
	public function areaOp(){
	    if(!$this->search_arr['search_type']){
			$this->search_arr['search_type'] = 'day';
		}
		$model = Model('stat');
		//获得搜索的开始时间和结束时间
		$searchtime_arr = $model->getStarttimeAndEndtime($this->search_arr);
		$where = array();
		$where['store_id'] = $_SESSION['store_id'];
		$where['order_isvalid'] = 1;//计入统计的有效订单
		$where['order_add_time'] = array('between',$searchtime_arr);
		$memberlist = array();
		//查询统计数据
		$field = ' reciver_province_id,SUM(order_amount) as orderamount,COUNT(*) as ordernum,COUNT(DISTINCT buyer_id) as membernum ';
		$orderby = 'reciver_province_id';
		$statlist = $model->statByStatorder($where, $field, 10, 0, $orderby, 'reciver_province_id');
		$datatype = array('orderamount'=>'下单金额','ordernum'=>'下单量','membernum'=>'下单会员数');
		//处理数组,将数组按照$datatype分组排序
		$statlist_tmp = array();
		foreach ((array)$statlist as $k=>$v){
		    foreach ((array)$datatype as $t_k=>$t_v){
		        $statlist_tmp[$t_k][$k] = $v[$t_k];
		    }
		}
		foreach ((array)$statlist_tmp as $t_k=>$t_v){
		    arsort($statlist_tmp[$t_k]);
		}
		$statlist_tmp2 = $statlist_tmp;
		$statlist_tmp = array();
		foreach ((array)$statlist_tmp2 as $t_k=>$t_v){
		    foreach ($t_v as $k=>$v){
		        $statlist[$k]['orderamount'] = floatval($statlist[$k]['orderamount']);
		        $statlist[$k]['ordernum'] = intval($statlist[$k]['ordernum']);
		        $statlist[$k]['membernum'] = intval($statlist[$k]['membernum']);
		        $statlist_tmp[$t_k][] = $statlist[$k];
		    }
		}
		// 地区
        $province_array = Model('area')->getTopLevelAreas();
        //地图显示等级数组
        $level_arr = array(array(1,2,3),array(4,5,6),array(7,8,9),array(10,11,12));
        $statlist = array();
        $stat_arr_bar = array();
		foreach ((array)$statlist_tmp as $t_k=>$t_v){
		    foreach ((array)$t_v as $k=>$v){
    		    $v['level'] = 4;//排名
    		    foreach ($level_arr as $lk=>$lv){
    		        if (in_array($k+1,$lv)){
    		            $v['level'] = $lk;//排名
    		        }
    		    }
    		    $province_id = intval($v['reciver_province_id']);
    		    $statlist[$t_k][$province_id] = $v;
		        if ($province_id){
		            //数据
        		    $stat_arr_bar[$t_k]['series'][0]['data'][] = array('name'=>strval($province_array[$province_id]),'y'=>$v[$t_k]);
            		//横轴
            		$stat_arr_bar[$t_k]['xAxis']['categories'][] = strval($province_array[$province_id]);
		        } else {
		            //数据
        		    $stat_arr_bar[$t_k]['series'][0]['data'][] = array('name'=>'未知','y'=>$v[$t_k]);
            		//横轴
            		$stat_arr_bar[$t_k]['xAxis']['categories'][] = '未知';
		        }
		    }
		}
		$stat_arr_map = array();
	    foreach ((array)$province_array as $k=>$v){
		    foreach ($datatype as $t_k=>$t_v){
		        if ($statlist[$t_k][$k][$t_k]){
		            $des = ",{$t_v}:{$statlist[$t_k][$k][$t_k]}";
		            $stat_arr_map[$t_k][] = array('cha'=>$k,'name'=>$v,'des'=>$des,'level'=>$statlist[$t_k][$k]['level']);
		        } else {
		            $des = ",无订单数据";
	                $stat_arr_map[$t_k][] = array('cha'=>$k,'name'=>$v,'des'=>$des,'level'=>4);
		        }
		    }
		}
		$stat_json_map = array();
		$stat_json_bar = array();
		if ($statlist){
    		foreach ($datatype as $t_k=>$t_v){
    		    //得到地图数据
    		    $stat_json_map[$t_k] = getStatData_Map($stat_arr_map[$t_k]);
    		    //得到统计图数据
    		    $stat_arr_bar[$t_k]['series'][0]['name'] = $t_v;
        		$stat_arr_bar[$t_k]['title'] = "地区排行";
        		$stat_arr_bar[$t_k]['legend']['enabled'] = false;
                $stat_arr_bar[$t_k]['yAxis']['title']['text'] = $t_v;
                $stat_arr_bar[$t_k]['yAxis']['title']['align'] = 'high';
        		$stat_json_bar[$t_k] = getStatData_Basicbar($stat_arr_bar[$t_k]);
    		}
		}
		Tpl::output('stat_json_map',$stat_json_map);
		Tpl::output('stat_json_bar',$stat_json_bar);
		self::profile_menu('area');
		Tpl::showpage('stat.sale.area');
	}