count(); // 商品数量 $awaitpay_count = Order::where('status', 1)->count(); // 待付款数量 $awaitdelivery_count = Order::where('status', 2)->count(); // 待交付数量 $awaitclose_count = Order::where('status', 3)->count(); // 待结算数量 $complete_count = Order::where('status', 4)->count(); // 已完成数量 $close_count = Order::where('status', 5)->count(); // 关闭数量 $yesterday_start = date('Y-m-d 00:00:00', strtotime("-1 day")); $yesterday_end = date('Y-m-d 23:59:59', strtotime("-1 day")); // 交易总额 订单总额 $deal_money = Order::whereTime('paymenttime', 'between', [$yesterday_start, $yesterday_end])->where('pay_status', 2)->sum('total_money'); $total_service_charge = Order::whereTime('paymenttime', 'between', [$yesterday_start, $yesterday_end])->where('pay_status', 2)->sum('total_service_charge'); $order_money = $deal_money - $total_service_charge; // 文化数据数量 $deal_goods_count = Order::alias('order')->join('order_goods_detail detail', 'order.batchcode = detail.batchcode')->where('order.status', 'in', '2,3,4')->whereTime('order.createtime', 'between', [$yesterday_start, $yesterday_end])->where('detail.is_deleted', 0)->count(); // 上架数量 $shelf_count = Goods::whereTime('createtime', 'between', [$yesterday_start, $yesterday_end])->count(); // 委托期满文化数据 $out_count = Goods::whereTime('contractualtime_end_time', 'between', [$yesterday_start, $yesterday_end])->where('goods_status', 4)->count(); //新增订单 $yester_order_count = Order::whereTime('createtime', 'between', [$yesterday_start, $yesterday_end])->where('status', 'in', '2,3,4')->count(); //已完成订单 $yester_complete_count = Order::whereTime('completetime', 'between', [$yesterday_start, $yesterday_end])->where('status', 4)->count(); $right_date = [date('Y-m-01 00:00:00'), date('Y-m-31 23:59:59')]; if($rightDate == "year"){ $right_date = [date('Y-01-01 00:00:00',strtotime('-4 year')), date('Y-12-31 23:59:59')]; }elseif($rightDate == "month"){ $right_date = [date('Y-01-01 00:00:00'), date('Y-12-31 23:59:59')]; } // 委托方排名 $limit = 10; // $total_ranking = Goods::where('is_deleted', 0)->whereTime('createtime', 'between', $right_date)->field('sale_count+click_count count')->limit($limit)->order('count desc')->group('user_islicode')->value('count'); // $entrust_ranking = Goods::where('is_deleted', 0)->whereTime('createtime', 'between', $right_date)->field('user_islicode,sale_count+click_count count')->limit($limit)->order('count desc')->group('user_islicode')->select(); $total_ranking = 0; $entrust_ranking = Goods::where('is_deleted', 0)->whereTime('createtime', 'between', $right_date)->field('user_islicode,sum(sale_count+click_count) count')->limit($limit)->order('count desc')->group('user_islicode')->select(); $entrust_ranking->each(function ($item) use(&$total_ranking){ $total_ranking += $item['count']; $userService = new UserService(); $user = $userService->getApiUser($item['user_islicode']); if(isset($user['name'])){ $item['username'] = $user['name']; }else{ $item['username'] = $item['user_islicode']; } return $item; }); $saleRanking_date = [date('Y-m-01 00:00:00'), date('Y-m-31 23:59:59')]; if($saleRankingDate == "year"){ $saleRanking_date = [date('Y-01-01 00:00:00',strtotime('-4 year')), date('Y-12-31 23:59:59')]; }elseif($saleRankingDate == "month"){ $saleRanking_date = [date('Y-01-01 00:00:00'), date('Y-12-31 23:59:59')]; } // 委托方排名 $limit = 10; $total_sale_ranking = OrderGoodsDetail::alias('detail')->join('order order', 'order.batchcode = detail.batchcode')->where('order.status', 'in', '2,3,4')->where('detail.is_deleted', 0)->whereTime('detail.createtime', 'between', $saleRanking_date)->limit($limit)->order('total_money desc')->group('detail.entrust_islicode')->sum('detail.money'); $entrust_sale_ranking = OrderGoodsDetail::alias('detail')->join('order order', 'order.batchcode = detail.batchcode')->where('order.status', 'in', '2,3,4')->where('detail.is_deleted', 0)->whereTime('detail.createtime', 'between', $saleRanking_date)->field('detail.entrust_islicode,sum(detail.money) total_money')->limit($limit)->order('total_money desc')->group('detail.entrust_islicode')->select(); // $entrust_sale_ranking = OrderGoodsDetail::where('is_deleted', 0)->whereTime('createtime', 'between', $saleRanking_date)->field('entrust_islicode,sum(money) total_money')->limit($limit)->order('total_money desc')->group('entrust_islicode')->select(); $entrust_sale_ranking->each(function ($item){ $userService = new UserService(); $user = $userService->getApiUser($item['entrust_islicode']); if(isset($user['name'])){ $item['username'] = $user['name']; }else{ $item['username'] = $item['entrust_islicode']; } $item['total_money'] = $this->doFormatMoney($item['total_money']); return $item; }); $tree_map = []; $lables = []; if($leftDate == "year"){ // 近五年 for($i = 4;$i >= 0;$i--){ $year = date('Y',strtotime('-'.$i.' year')); $money = $this->getDateMoney(date("{$year}-01-01 00:00:00"), date("{$year}-12-31 23:59:59")); $tree_map[0]['data'][] = $money[0]; $tree_map[1]['data'][] = $money[1]; $lables[] = "{$year}年"; } }elseif($leftDate == "month"){ // 12月 for($i = 1;$i <= 12;$i++){ $money = $this->getDateMoney(date("Y-{$i}-01 00:00:00"), date("Y-{$i}-31 23:59:59")); $tree_map[0]['data'][] = $money[0]; $tree_map[1]['data'][] = $money[1]; $lables[] = "{$i}月"; } }else{ // 30天 for($i = 1;$i <= date('t');$i++){ $money = $this->getDateMoney(date("Y-m-{$i} 00:00:00"), date("Y-m-{$i} 23:59:59")); $tree_map[0]['data'][] = $money[0]; $tree_map[1]['data'][] = $money[1]; $lables[] = "{$i}"; } } $tree_map[0]['label'] = "订单金额总额"; $tree_map[1]['label'] = "标的价款总额"; $result = []; $result['goods_count'] = $goods_count; $result['awaitpay_count'] = $awaitpay_count; $result['awaitdelivery_count'] = $awaitdelivery_count; $result['awaitclose_count'] = $awaitclose_count; $result['complete_count'] = $complete_count; $result['close_count'] = $close_count; $result['deal_money'] = $this->doFormatMoney($deal_money); $result['order_money'] = $this->doFormatMoney($order_money); $result['deal_goods_count'] = $deal_goods_count; $result['shelf_count'] = $shelf_count; $result['out_count'] = $out_count; $result['yester_order_count'] = $yester_order_count; $result['yester_complete_count'] = $yester_complete_count; $result['entrust_ranking'] = $entrust_ranking->toArray(); $result['entrust_sale_ranking'] = $entrust_sale_ranking->toArray(); $result['treeMap'] = $tree_map; $result['label'] = $lables; $result['total_sale_ranking'] = $total_sale_ranking; $result['total_ranking'] = $total_ranking; return $result; } function doFormatMoney($money) { $float_money = ""; if(strpos($money, '.') !== false){ $money_arr = explode('.', $money); $money = $money_arr[0]; $float_money = '.'.$money_arr[1]; } $tmp_money = strrev($money); $format_money = ""; for ($i = 3; $i < strlen($money); $i += 3) { $format_money .= substr($tmp_money, 0, 3) . ","; $tmp_money = substr($tmp_money, 3); } $format_money .= $tmp_money; $format_money = strrev($format_money); $format_money .= $float_money; return $format_money; } public function getDateMoney($start, $end){ $deal_money = Order::whereTime('paymenttime', 'between', [$start, $end])->where('pay_status', 2)->sum('total_money'); $total_service_charge = Order::whereTime('paymenttime', 'between', [$start, $end])->where('pay_status', 2)->sum('total_service_charge'); $order_money = $deal_money - $total_service_charge; return [ round($deal_money, 2), round($order_money, 2) ]; } }