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 **/ /**下单退款 start**/ $order_refund['MonthData'] = json_encode($monthArr); $order_month_info = []; $refund_month_info = []; 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($order_month_info, $month_order_number); $salewhere[]=['status','in',[1,2]]; $month_refund_number = AfterSale::where($salewhere)->count(); array_push($refund_month_info,$month_refund_number); } $order_refund['order_month_info'] = json_encode($order_month_info); $order_refund['refund_month_info'] = json_encode($refund_month_info); $data['order_refund_info'] = $order_refund; /**下单退款 end **/ /**资产数据 start**/ $leave_unused_num = 0; $unused_rate = 0; $unlease = 0; $leaseing = 0; $leaseend = 0; $demain = 'https://zhgxlike.sdshengyuekeji.cn/'; $asset_url = $demain.'/adminapi/asset.asset/getAssetData'; $asset_info = httpRequest($asset_url); $asset_info = json_decode($asset_info,true); if($asset_info['code']==1){ $a_data = $asset_info['data']; $leave_unused_num = $a_data['leave_unused_num']; $unused_rate = $a_data['unused_rate']; foreach($a_data['asset_list'] as $asv){ switch ($asv['lease_status']){ case 1: $unlease = $asv['total_number']; break; case 2: $leaseing = $asv['total_number']; break; case 3: $leaseend = $asv['total_number']; break; } } } $asset_infos['leave_unused_num']=$leave_unused_num; $asset_infos['unused_rate']=round($unused_rate,0); $asset_infos['unlease']=$unlease; $asset_infos['leaseing']=$leaseing; $asset_infos['leaseend']=$leaseend; $data['asset_info'] = $asset_infos; /**资产数据 end**/ // dump($data); return view('/count/index', $data); } }