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") . '....' ; } /** 商品统计 end **/ return view('/count/index', ['newGoodsData' => $newGoodsData]); } }