leftJoin('order o','o.id = og.order_id') ->field('og.goods_id,og.goods_name name,sum(og.goods_num) last_total_num') ->where($where)->where($whereLastTime) ->group('og.goods_id,og.goods_name') ->order('last_total_num desc') ->select()->toArray(); //本月销量 $nowOrderGoodsInfo = OrderGoods::alias('og')->leftJoin('order o','o.id = og.order_id') ->field('og.goods_id,og.goods_name name,sum(og.goods_num) now_total_num') ->where($where)->where($whereNowTime) ->group('og.goods_id,og.goods_name') ->order('now_total_num desc') ->select()->toArray(); $newGoodsData = []; if(count($lastOrderGoodsInfo)>5){ foreach($lastOrderGoodsInfo as $lk=>$lv){ if($lk>4)break; foreach($nowOrderGoodsInfo as $nk=>$nv){ $lastOrderGoodsInfo[$lk]['now_total_num'] = 0; if($lv['goods_id'] == $nv['goods_id'] ){ $lv['now_total_num'] = $nv['now_total_num']; break; } } $newGoodsData[] =$lv; } } else{ if(empty($lastOrderGoodsInfo)){ foreach($nowOrderGoodsInfo as $nk=>$nv){ if($nk>4)break; $nv['last_total_num'] = 0; $newGoodsData[] = $nv; } }else{ $count = 0; $lastGoodsIdArr = []; foreach($lastOrderGoodsInfo as $lk=>$lv){ $count++; array_push($lastGoodsIdArr,$lv['goods_id']); if($lk>4)break; foreach($nowOrderGoodsInfo as $nk=>$nv){ $lv['now_total_num'] = 0; if($lv['goods_id'] == $nv['goods_id'] ){ $lv['now_total_num'] = $nv['now_total_num']; break; } } $newGoodsData[] =$lv; } if($count<5){ foreach($nowOrderGoodsInfo as &$nv){ if($count>=5) break; if(in_array($nv['goods_id'],$lastGoodsIdArr)) continue; $nv['last_total_num'] = 0; $nv['growth'] = '100%'; $nv['type'] = 1; $count ++; $newGoodsData[] = $nv; } } } } foreach ($newGoodsData as &$ngv){ if($ngv['last_total_num']==0){ $ngv['growth'] = '100%'; $ngv['type'] = 1; }else{ if($ngv['last_total_num'] < $ngv['now_total_num']){ $ngv['growth'] = round(($ngv['now_total_num'] - $ngv['last_total_num'])/$ngv['last_total_num']*100 ,0). '%'; $ngv['type'] = 1; }else if($ngv['last_total_num'] > $ngv['now_total_num']){ $ngv['growth'] = round(($ngv['last_total_num'] - $ngv['now_total_num'])/$ngv['last_total_num']*100 ,0). '%'; $ngv['type'] = 0; }else{ $ngv['growth'] = 0; $ngv['type'] = 1; } } $ngv['name'] = mb_substr( $ngv['name'], 0, 6, "UTF-8") . '....' ; } $data['newGoodsData'] = $newGoodsData; /** 商品统计 end **/ /** 分类销量排名 start**/ $ogcwhere = []; $ogcwhere[]=['gc.level','=','1']; $OrderGoodsCategoryInfo = OrderGoods::alias('og') ->leftJoin('order o','o.id = og.order_id') ->leftJoin('goods g','g.id = og.goods_id') ->leftJoin('goods_category_index gci','gci.goods_id=g.id') ->leftJoin('goods_category gc','gc.id = gci.category_id') ->field('gc.`name` ,sum( og.goods_num) total_num') ->where($where)->where($ogcwhere) ->group('gc.name') ->select()->toArray(); $goods_category_data = array_column($OrderGoodsCategoryInfo,'total_num'); $data['order_goods_category'] = $OrderGoodsCategoryInfo; $count = count($goods_category_data); while($count){ if($count<3 ) { array_push($goods_category_data,0); }else{ break; } $count = count($goods_category_data); } $data['goods_category_data'] = json_encode($goods_category_data); $ogcK = 0; $chars_category = []; foreach ($OrderGoodsCategoryInfo as $ogcv){ $ogcK++; $random_data = [30,20,50,40,100,200,300]; shuffle($random_data); $randomValue = $random_data[2]; $max = substr($ogcv['total_num'] + $randomValue, 0, -1).'0'; $ogcv['max'] = $max; unset($ogcv['total_num']); $chars_category[]=$ogcv; } while($ogcK){ $categorys['name']='填充'; $categorys['max']='0'; if($ogcK<3 ) { $chars_category[]=$categorys; }else{ break; } $ogcK++; } $data['chars_category'] = json_encode($chars_category); /** 分类销量排名 end**/ /** middle start **/ //商品数量 $goodswhere = [] ; $goodswhere[] = ['status','=',1]; $goodswhere[] = ['delete_time','=',NULL]; $goods_count = Goods::where($goodswhere)->count(); $middle['goods_number'] = $goods_count; //合作商 $diswhere = [] ; $diswhere[] = ['is_distribution','=',1]; $diswhere[] = ['delete_time','=',NULL]; $distribution_count = Distribution::where($diswhere)->count(); $middle['distribution_number'] = $distribution_count; //订单数 $order_where = [] ; $order_where[] = ['pay_status','=',1]; $order_count = Order::where($order_where)->count(); $middle['order_number'] = $order_count; //派送订单 $orderwhere = [] ; $orderwhere[] = ['order_status','=',2]; $order_delivery_count = Order::where($orderwhere)->count(); $middle['delivery_number'] = $order_delivery_count; //农资供应 $middle['agricultural_supply_number'] = 0; $nowYear = date('Y'); $nowMonth = date('n'); $monthData = []; $monthArr = []; for($i=1;$i<=$nowMonth;$i++){ array_push($monthArr,$i); $monthFat = $i.'月'; array_push($monthData,$monthFat); } $middle['YearData'] = $nowYear; $middle['MonthFormatData'] = json_encode($monthData); $month_data = []; foreach ($monthArr as $mv){ $date = getMonthFirstAndLastDay($nowYear,$mv); $startTime = strtotime($date['firstDay']); $endTime = strtotime($date['lastDay'].' 23:59:59'); $create_time_date = [$startTime,$endTime]; $salewhere = []; $salewhere[]=['create_time','between',$create_time_date]; $month_order_number = Order::alias('o')->where($where)->where($salewhere)->count(); array_push($month_data,$month_order_number); } $middle['MonthOrderData'] = json_encode($month_data); $nowTime = time(); $todayStartDate = date('Y-m-d'); $todaywhere= []; $todaywhere[]=['create_time','between',[strtotime($todayStartDate),$nowTime]]; $todayOrderInfo = Order::alias('o')->where($where)->where($todaywhere)->field('count(id) number,sum(total_amount) total_money')->find(); $middle['today_order_number']=$todayOrderInfo['number']; $middle['today_total_amount']=$todayOrderInfo['total_money']??0; $thisMonth = date('n'); $this_month_date = getMonthFirstAndLastDay($nowYear,$thisMonth); $startTime = strtotime($this_month_date['firstDay']); $endTime = strtotime($this_month_date['lastDay'].' 23:59:59'); $create_time_date = [$startTime,$endTime]; $thisMonthWhere = []; $thisMonthWhere[]=['create_time','between',$create_time_date]; $thisMonthOrderInfo = Order::alias('o')->where($where)->where($thisMonthWhere)->field('count(id) number,sum(total_amount) total_money')->find(); $middle['this_month_order_number']=$thisMonthOrderInfo['number']; $middle['this_month_total_amount']=$thisMonthOrderInfo['total_money']??0; $data['middle'] = $middle; /** middle end **/ return view('/count/index', $data); } }