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(isset($ngv['now_total_num'])){ }else{ $ngv['now_total_num'] = 0; } 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']; $OrderGoodsCategoryInfos = 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.id,gc.`name` ,gc.pid,sum( og.goods_num) total_num') ->where($where)->where($ogcwhere) ->group('gc.name') ->select()->toArray(); $OrderGoodsCategoryInfo = []; foreach($OrderGoodsCategoryInfos as &$ogcv){ $pid = $ogcv['pid']; $id = $ogcv['id']; $new_data=[]; $name = $ogcv['name']; $total_num = $ogcv['total_num']; while($pid){ if($pid == 0){ break; }else{ $categoryInfo = GoodsCategoryModel::find($pid); $pid = $categoryInfo['pid']; $id = $categoryInfo['id']; $name = $categoryInfo['name']; } } if(isset($OrderGoodsCategoryInfo[$id])){ $new_total_num = $OrderGoodsCategoryInfo[$id]['total_num']+$total_num; $OrderGoodsCategoryInfo[$id]['total_num'] = $new_total_num; }else{ $new_data['total_num'] = $total_num; $new_data['name'] = $name; $OrderGoodsCategoryInfo[$id] = $new_data; } } $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://admin.gxsmlt.com/'; // $demain = 'http://zhgx.asset.deom.com/'; $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; } } } $total_asset_num = $unlease + $leaseing + $leaseend; $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; $asset_infos['total_asset_num']=$total_asset_num; $data['asset_info'] = $asset_infos; $data['asset_lease_info'] = json_encode($a_data['pay_info']); /**资产数据 end**/ /* 社会化服务 start*/ $user_service_demain = 'https://info.gxsmlt.com/'; // $user_service_demain = 'http://www.zhgx.info.com/'; $user_service_url = $user_service_demain.'/adminapi/agricultural_machinery.UserService/getUserServiceData'; $user_service_info = httpRequest($user_service_url); // dump($user_service_info);die; $service_info = json_decode($user_service_info,true); $service_data['cate_name'] = json_encode($service_info['data']['cate_name']); $service_data['cate_value'] = json_encode($service_info['data']['cate_value']); $service_data['user_service_value'] = json_encode($service_info['data']['user_service_value']); $service_data['SupplyDemandInfo'] = json_encode($service_info['data']['SupplyDemandInfo']); $service_data['supply_cate_name'] = json_encode($service_info['data']['supply_cate_name']); $service_data['supply_cate_value'] = json_encode($service_info['data']['supply_cate_value']); $supply_first_cate_list = $service_info['data']['supply_first_cate_name']; $list = $service_info['data']['SupplyDemandInfo']; $con = ['co01','co03','co02','co05','co04']; foreach($list as &$lv){ $randomKey = array_rand($con); $lv['co'] = $con[$randomKey]; } $service_data['SupplyDemandList'] = $list ; $cons = ['co01','co03','co02','co05','co04']; foreach($supply_first_cate_list as &$sfcl){ $randomKeys = array_rand($cons); $sfcl['co'] = $cons[$randomKeys]; } $service_data['supply_first_cate_list'] = $supply_first_cate_list ; $service_data['monthData'] = json_encode($service_info['data']['monthData']); $service_data['agricultural_data'] = json_encode($service_info['data']['agricultural_data']); $service_data['bake_data'] = json_encode($service_info['data']['bake_data']); $service_data['air_data'] = json_encode($service_info['data']['air_data']); $data['service_info'] = $service_data; /* 社会化服务 end*/ return view('/count/index', $data); } }