/** * 订单走势 */ 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(); }
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; }