/**
  * 订单走势
  */
 public function orderTrend()
 {
     /**
      * $mouth_solt_trades = [
      *   ['k'=>[
      *       'trades' => [
      *           'k'=>['itemid'=>int,'amount'=>int],
      *       ],
      *       'trade_total'=>int,
      *       'trade_amount'=>int,
      *       'mouth_name'=>data("Y-m",time),
      *       'mouth_solt'=>[
      *           'start'=>['ts'=>timestrap,'date'=>'Y-m'],
      *           'end'=>['ts'=>timestrap,'date'=>'Y-m']
      *       ]
      *   ]]
      * ];
      */
     //按照统计
     //        $mouth_solt = get_day_solt($this->month_start,$this->month_end);
     //        $model = D('Trade');
     //        foreach ($mouth_solt as $k => $v) {
     //            $map['addtime'] = [['gt', $v['start']['ts']], ['lt', $v['end']['ts']]];
     //            $map['status'] = ['in', '2,3,4'];
     //            $mouth_solt_trades[$k]['trades'] = $model->field('itemid,amount')->where($map)->select();
     //            $x = count($mouth_solt_trades[$k]['trades']);
     //            $x = $x==0?'':$x;
     //            $mouth_solt_trades[$k]['trade_total'] = $x;
     //            $y = get_arr_k_amount($mouth_solt_trades[$k]['trades'],'amount');
     //            $y = $y==0?'':$y;
     //            $mouth_solt_trades[$k]['trade_amount'] = $y;
     //            $mouth_solt_trades[$k]['mouth_solt'] = $v;
     //            $mouth_solt_trades[$k]['mouth_name'] = date("Y-m", $v['start']['ts']);
     //            unset($mouth_solt_trades[$k]['trades']);
     //        }
     //        $this->assign(['mouth_solt_trades' => $mouth_solt_trades]);
     //        $this->display();
     //按照天数统计
     $day_solt = get_day_solt($this->day_start, $this->day_end);
     $model = D('Trade');
     foreach ($day_solt as $k => $v) {
         $map['addtime'] = [['gt', $v['start']['ts']], ['lt', $v['end']['ts']]];
         $map['status'] = ['in', '2,3,4'];
         $day_solt_trades[$k]['trades'] = $model->field('itemid,amount')->where($map)->select();
         $x = count($day_solt_trades[$k]['trades']);
         $x = $x == 0 ? '' : $x;
         $day_solt_trades[$k]['trade_total'] = $x;
         $y = get_arr_k_amount($day_solt_trades[$k]['trades'], 'amount');
         $y = $y == 0 ? '' : $y;
         $day_solt_trades[$k]['trade_amount'] = $y;
         $day_solt_trades[$k]['day_solt'] = $v;
         $day_solt_trades[$k]['day_name'] = date("Y-m-d", $v['start']['ts']);
         unset($day_solt_trades[$k]['trades']);
     }
     $this->assign(['day_solt_trades' => $day_solt_trades]);
     $this->display();
 }
 /**
  * 价格区间分布图(销量 产品数量 交易额 订单总数)
  */
 public function price_range_information()
 {
     $map['status'] = 3;
     $map['price'] = ['gt', 0];
     $Product = D('Product');
     $Trade = D('Trade');
     $products = $Product->where($map)->field(['itemid', 'price'])->select();
     $trades = $Trade->where(['status' => ['in', [2, 3, 4]]])->field(['itemid', 'p_id', 'price', 'total', 'amount'])->select();
     // 订单
     foreach ($this->price_range as $k => $v) {
         $price_range_data[$k] = $v;
         // 产品数量
         $product_ids = $this->getPriceRangeProductIDs($products, $v);
         $price_range_data[$k]['product_count'] = count($product_ids);
         $sel_trades = $this->getPriceRangeTrades($trades, $v);
         // 订单总数
         $price_range_data[$k]['trade_count'] = count($sel_trades);
         // 销量
         $price_range_data[$k]['trade_total'] = get_arr_k_amount($sel_trades, 'total');
         // 交易额
         $price_range_data[$k]['trade_amount'] = get_arr_k_amount($sel_trades, 'amount');
     }
     // 数据重组
     /*$xAxis_data = "'产品数量','订单总数','销量','交易额'";
       $legend_data = Tools::getCols($this->price_range,'range_name',true);
       foreach($price_range_data as $k => $v){
           $sel_trades[] = "{name:'".$v['range_name']."',type:'bar',data:[".$v['product_count'].",".$v['trade_count'].",".$v['trade_total'].",".$v['trade_amount']."]}";
       }
       $series = Tools::arr2str($sel_trades);
       $this->assign(['legend_data'=>$legend_data,'xAxis_data'=>$xAxis_data,'series'=>$series]);*/
     $legend_data = ['产品数量', '订单总数', '销量', '交易额'];
     $xAxis_data = Tools::arr2str(Tools::getCols($this->price_range, 'range_name', true));
     $series['product_count'] = Tools::arr2str(Tools::getCols($price_range_data, 'product_count'));
     $series['trade_count'] = Tools::arr2str(Tools::getCols($price_range_data, 'trade_count'));
     $series['trade_total'] = Tools::arr2str(Tools::getCols($price_range_data, 'trade_total'));
     $series['trade_amount'] = Tools::arr2str(Tools::getCols($price_range_data, 'trade_amount'));
     // 注入显示
     $this->assign(['legend_data' => $legend_data, 'xAxis_data' => $xAxis_data, 'series' => $series]);
     $this->display();
 }
 /**
  * 资讯/病虫害/农药中毒饼形图
  * @Edwin
  */
 public function ratioInformation()
 {
     $Information = D('Information');
     $map['addtime'] = [['gt', $this->month_start], ['lt', $this->month_end]];
     $month_start = strtotime('January 2013');
     //查询数据
     $mouth_solt = get_month_solt($month_start, $this->month_end);
     foreach ($mouth_solt as $k => $v) {
         $map['addtime'] = [['gt', $v['start']['ts']], ['lt', $v['end']['ts']]];
         $mouth_solt_information[$k]['mouth_solt'] = $v;
         $x = $Information->field('itemid')->where($map)->select();
         $mouth_solt_information[$k]['information_count'] = count($x);
     }
     /*
      * 月病虫害总量
      */
     $Pests = D('Pests');
     foreach ($mouth_solt as $k => $v) {
         $map['addtime'] = [['gt', $v['start']['ts']], ['lt', $v['end']['ts']]];
         $mouth_solt_pests[$k]['mouth_solt'] = $v;
         $x = $Pests->field('itemid')->where($map)->select();
         $mouth_solt_pests[$k]['pests_count'] = count($x);
     }
     /*
      * 月农药中毒总量
      */
     $Poisoning = D('Poisoning');
     foreach ($mouth_solt as $k => $v) {
         $map['addtime'] = [['gt', $v['start']['ts']], ['lt', $v['end']['ts']]];
         $mouth_solt_poisoning[$k]['mouth_solt'] = $v;
         $x = $Poisoning->field('itemid')->where($map)->select();
         $mouth_solt_poisoning[$k]['poisoning_count'] = count($x);
     }
     //重组数据_查询月份资讯总数据
     $series_data_inforamtion_information = get_arr_k_amount($mouth_solt_information, 'information_count');
     //重组数据_查询月份病虫害数总数据
     $series_data_inforamtion_pests = get_arr_k_amount($mouth_solt_pests, 'pests_count');
     //重组数据_查询月份农药中毒总数据
     $series_data_inforamtion_poisoning = get_arr_k_amount($mouth_solt_poisoning, 'poisoning_count');
     //注入显示
     $this->assign(['series_data_information' => $series_data_inforamtion_information, 'series_data_pests' => $series_data_inforamtion_pests, 'series_data_poisoning' => $series_data_inforamtion_poisoning]);
     $this->assign(['month_start' => $month_start]);
     $this->display();
 }
 /**
  * 终端注册饼形图
  */
 public function memberRegAppChart()
 {
     $Member = D('Member');
     $field = ['userid', 'comefrom'];
     /*
      * pc注册的数量
      */
     $map['comefrom'] = 'web';
     $sel_AppChart_list = $Member->where($map)->field($field)->select();
     $cat_group = Tools::groupBy($sel_AppChart_list, 'userid');
     foreach ($cat_group as $k => $v) {
         $x_pc[$k]['userid'] = $v[0]['userid'];
         $x_pc[$k]['count'] = count($v);
     }
     sort($x_pc);
     /*
      * 手机注册的数量
      */
     $map['comefrom'] = 'touch';
     $sel_AppChart_list = $Member->where($map)->field($field)->select();
     $cat_group = Tools::groupBy($sel_AppChart_list, 'userid');
     foreach ($cat_group as $k => $v) {
         $x_mobel[$k]['userid'] = $v[0]['userid'];
         $x_mobel[$k]['count'] = count($v);
     }
     sort($x_mobel);
     //重组数据
     $appChart_pc = get_arr_k_amount($x_pc, 'count');
     $appChart_mobel = get_arr_k_amount($x_mobel, 'count');
     //注入显示
     $this->assign(['appChart_pc' => $appChart_pc, 'appChart_mobel' => $appChart_mobel]);
     $this->display();
 }
 /**
  * 合作商提成月走势图
  * @author Edwin <*****@*****.**>
  */
 public function partnerTrend()
 {
     $Agent = D('Partner');
     $map['status'] = ['in', '2,3,4'];
     //查询数据
     $month_start = strtotime('September 2013');
     $month_solt = get_month_solt($month_start, $this->month_end);
     foreach ($month_solt as $k => $v) {
         $map['addtime'] = [['gt', $v['start']['ts']], ['lt', $v['end']['ts']]];
         $mouth_solt_partner[$k]['mouth_solt'] = $v;
         $x = $Agent->field('money')->where($map)->select();
         $mouth_solt_partner[$k]['mouth_name'] = date("Y-m", $v['start']['ts']);
         $mouth_solt_partner[$k]['partner_sum'] = get_arr_k_amount($x, 'money');
     }
     //重组数据_月资讯数据
     $xAxis_data = Tools::arr2str(Tools::getCols($mouth_solt_partner, 'mouth_name', true));
     $series_data = Tools::arr2str(Tools::getCols($mouth_solt_partner, 'partner_sum'));
     //注入显示
     $this->assign(['xAxis_data' => $xAxis_data, 'series_data' => $series_data]);
     $this->assign(['month_start' => $month_start]);
     $this->display();
 }
 /**
  * 月付款同期对比
  * @author wodrow
  */
 public function sameMouthAnnually()
 {
     $Trade = D('Trade');
     $map['paytime'] = $this->mapYearRange;
     $map['status'] = ['in', '2,3,4'];
     $trades = $Trade->where($map)->field("paytime,amount")->select();
     for ($i = 1; $i <= 12; $i++) {
         $xAxis[] = $i;
     }
     $xAxis_data = "'" . implode("','", $xAxis) . "'";
     $year_solt = get_year_solt($this->year_start, $this->year_end);
     foreach ($year_solt as $k => $v) {
         $legend[] = $v['start']['year'];
     }
     $legend_data = "'" . implode("','", $legend) . "'";
     foreach ($year_solt as $k => $v) {
         foreach ($xAxis as $k1 => $v1) {
             foreach ($trades as $k2 => $v2) {
                 if (date("m", $v2['paytime']) == $v1) {
                     if ($v2['paytime'] > $v['start']['ts'] && $v2['paytime'] < $v['end']['ts']) {
                         $same_year_trades[$v['start']['year']][$v1]['mouth_name'] = $v1;
                         $same_year_trades[$v['start']['year']][$v1]['mouth_trades'][] = $v2;
                     }
                 }
             }
         }
     }
     foreach ($same_year_trades as $k => $v) {
         unset($x);
         foreach ($v as $k1 => $v1) {
             $same_year_trades[$k][$k1]['mouth_amount'] = get_arr_k_amount($v1['mouth_trades'], 'amount');
             $x[$k1] = $same_year_trades[$k][$k1]['mouth_amount'];
             unset($same_year_trades[$k][$k1]);
         }
         foreach ($xAxis as $k2 => $v2) {
             if (!$x[$v2]) {
                 $x[$v2] = '';
             }
         }
         ksort($x);
         $same_year_trades[$k]['year_data'] = "'" . implode("','", $x) . "'";
     }
     $this->assign(['xAxis' => $xAxis, 'xAxis_data' => $xAxis_data, 'legend' => $legend, 'legend_data' => $legend_data, 'same_year_trades' => $same_year_trades]);
     $this->display();
 }
Beispiel #7
0
function getTotalMoney($agareaid = 0)
{
    $Trade = D('Trade');
    $map['a.status'] = array('in', '2,3,4');
    $map['b.areaid'] = array('eq', $agareaid);
    $total = $Trade->cache(true)->alias('a')->field('SUM(a.amount) AS totalmoney')->join(C('BUSINESS_DB_TABLE_PREFIX') . 'address b on a.addressid = b.itemid')->where($map)->select();
    $x = get_arr_k_amount($total, 'totalmoney');
    $data = $x;
    return $data;
}