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**/ return view('/count/index', $data); } }