whereIn('register_area_id',$area_ids) ->filter($filter) ->count('id'); // 押金用户 $depositUser = User::query() ->whereIn('register_area_id',$area_ids) ->where('is_deposit',User::DEPOSIT_OK) ->filter($filter) ->count('id'); //有效用户 $cardUser = User::query() ->whereIn('register_area_id',$area_ids) ->where('is_card_certified',User::CARD_OK) ->filter($filter) ->count('id'); //今日新增 $todayAddUser = User::query() ->whereIn('register_area_id',$area_ids) ->where('is_card_certified',User::CARD_OK) ->where('created_at','>',Carbon::today()) ->filter($filter) ->count('id'); // 今日活跃 $todayActiveOrder = Order::query() ->whereIn('area_id',$area_ids) ->where('created_at','>',Carbon::today()) ->filter($orderFilter) ->get(['user_id']) ->toArray(); $todayActiveUserArr = []; foreach ($todayActiveOrder as $v){ $todayActiveUserArr[] = $v['user_id']; } $todayActiveUser = count(array_unique($todayActiveUserArr)); //去重复后计算总数 $data1 = [ 'totalUser' => $totalUser ?? 0, 'depositUser' => $depositUser ?? 0, 'cardUser' => $cardUser ?? 0, 'todayAddUser' => $todayAddUser ?? 0, 'todayActiveUser' => $todayActiveUser ?? 0 ]; return $data1; } /** * bikeStatistics 车辆统计 * * @param BikeFilter $filter * @return array * @author Fx * */ public function bikeStatistics(BikeFilter $filter) { $data = []; $area_ids = self::$areaIds; // 总车辆数 $data['total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->count('id'); // 上线车辆数 $data['put_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('put_status', Bike::PUT_STATUS_YES) ->count('id'); // 在线车辆数 $data['line_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('is_link', Bike::LINK_ONLINE) ->count('id'); //故障车辆 $data['trouble_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('is_trouble', Bike::TROUBLE_YES) ->count('id'); //今日使用 $data['today_use_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('last_use_bike_end_time', '>', Carbon::today()) ->count('id'); //低电量 $data['low_battery_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('is_low_battery_power', Bike::BATTERY_POWER_LOW) ->count('id'); //骑行中 $data['riding_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('is_riding', Bike::RIDING_YES) ->count('id'); //未使用 $data['not_riding_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($filter) ->where('is_riding', Bike::RIDING_NO) ->count('id'); return $data; } /** * orderStatistics 订单统计 * * @param OrderFilter $filter * @return array * @author Fx * */ public function orderStatistics(OrderFilter $filter) { $area_ids = self::$areaIds; // 总订单数 $order_total = Order::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->count('id'); $order_rent_total = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->count('id'); $order_total += $order_rent_total; // 今日新增订单数 $today_add_order = Order::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('created_at', '>', Carbon::today()) ->where('status', Order::STATUS_COMPLETE_ORDER) ->count('id'); $today_add_order_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('pay_time', '>', Carbon::today()) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->count('id'); $today_add_order += $today_add_order_rent; // 骑行中订单数 $riding_status = [ Order::STATUS_RIDE_BIKE, // Order::STATUS_CLOSE_BIKE, // 待支付 Order::STATUS_PAUSE_BIKE, ]; $riding_order = Order::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->whereIn('status', $riding_status) ->count('id'); $riding_order_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('status', OrderRent::STATUS_RENT_BIKE) ->count('id'); $riding_order += $riding_order_rent; // 待支付 $waiting_pay_order = Order::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('status', Order::STATUS_CLOSE_BIKE) ->count('id'); $waiting_pay_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('status', OrderRent::STATUS_CLOSE_RENT_BIKE) ->count('id'); $waiting_pay_order += $waiting_pay_rent; // 今日新增收入 $today_add_money = Order::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('pay_time', '>', Carbon::today()) ->where('status', Order::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $today_add_money_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($filter) ->where('pay_time', '>', Carbon::today()) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $today_add_money += $today_add_money_rent; $order = [ 'order_total' => $order_total ?? 0, 'today_add_order' => $today_add_order ?? 0, 'riding_order' => $riding_order ?? 0, 'today_add_money' => $today_add_money ?? 0, 'waiting_pay' => $waiting_pay_order ?? 0, ]; return $order; } /** * workOrderStatistics 工单统计 * * @param WorkOrderFilter $filter * @return array * @author Fx * */ public function workOrderStatistics(WorkOrderFilter $filter) { $area_ids = self::$areaIds; $type_num = WorkOrder::query() ->whereIn('area_id', $area_ids) ->where('status', WorkOrder::STATUS_NO) ->filter($filter) ->groupBy(['type']) ->select('type', DB::raw('COUNT(id) as type_num')) ->get() ->toArray(); $data = [ 'charge_num' => 0, 'watch_num' => 0, 'power_failure_num' => 0, 'alert_num' => 0, 'steal_num' => 0, 'headman_num' => 0, 'trouble_num' => 0, 'help_num' => 0, 'other_num' => 0, 'offline_num' => 0, 'planned_meet_num' => 0, // 未认领 'planned_work_num' => 0, // 处理中 'planned_worked_num' => 0, // 已处理 'planned_over_num' => 0,// 完结 ]; foreach ($type_num as $v) { switch ($v['type']) { case WorkOrder::TYPE_CHARGE: $data['charge_num'] = $v['type_num']; break; case WorkOrder::TYPE_WATCH: $data['watch_num'] = $v['type_num']; break; case WorkOrder::TYPE_POWER_FAILURE: $data['power_failure_num'] = $v['type_num']; break; case WorkOrder::TYPE_ALERT: $data['alert_num'] = $v['type_num']; break; case WorkOrder::TYPE_STEAL: $data['steal_num'] = $v['type_num']; break; case WorkOrder::TYPE_HEADMAN: $data['headman_num'] = $v['type_num']; break; case WorkOrder::TYPE_TROUBLE: $data['trouble_num'] = $v['type_num']; break; case WorkOrder::TYPE_HELP: $data['help_num'] = $v['type_num']; break; case WorkOrder::TYPE_OFFLINE: $data['offline_num'] = $v['type_num']; break; case WorkOrder::TYPE_OTHER: $data['other_num'] = $v['type_num']; break; default; } } $planned_num = WorkOrder::query() ->filter($filter) ->groupBy('planned') ->select('planned', DB::raw('COUNT(id) as planned_num')) ->get() ->toArray(); foreach ($planned_num as $v) { switch ($v['planned']) { case WorkOrder::PLANNED_STATUS_MEET: $data['planned_meet_num'] = $v['planned_num']; break; case WorkOrder::PLANNED_STATUS_WORK: $data['planned_work_num'] = $v['planned_num']; break; case WorkOrder::PLANNED_STATUS_WORKED: $data['planned_worked_num'] = $v['planned_num']; break; case WorkOrder::PLANNED_STATUS_OVER: $data['planned_over_num'] = $v['planned_num']; break; default; } } return $data; } /** * orderProfitStatistics 订单收益统计 * * @param WalletLogFilter $walletLogFilter * @param DepositFilter $depositFilter * @param OrderFilter $orderFilter * @param OrderRentFilter $orderRentFilter * @return array * @author Fx * */ public function orderProfitStatistics(WalletLogFilter $walletLogFilter, DepositFilter $depositFilter, OrderFilter $orderFilter, OrderRentFilter $orderRentFilter) { $area_ids = self::$areaIds; $admin_type = Admin::user()->type; if ($admin_type == AdminUser::TYPE_WORKER) { $data = [ 'totalProfit' => $totalProfit ?? 0, 'depositTotal' => $depositTotal ?? 0, 'todayProfit' => $todayProfit ?? 0, 'depositToday' => $depositToday ?? 0, 'monthProfit' => $monthProfit ?? 0, ]; return $this->ok($data); } // 总收益 // $totalProfit = WalletLog::query() // ->whereIn('area_id', $area_ids) // ->filter($walletLogFilter) // ->whereIn('type', WalletLog::$subType) // ->sum('money'); $totalOrderProfit = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $totalOrderRentProfit = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $totalProfit = bcadd($totalOrderProfit, $totalOrderRentProfit, 0); // 总押金 $depositTotal = DepositOrder::query() ->where('pay_status', DepositOrder::PAY_STATUS_OK) ->where('is_refund', DepositOrder::REFUND_NO) ->whereIn('area_id', $area_ids) ->filter($depositFilter) ->sum('pay_money'); // 今日收益 // $todayProfit = WalletLog::query() // ->whereIn('area_id', $area_ids) // ->filter($walletLogFilter) // ->whereIn('type', WalletLog::$subType) // ->where('created_at', '>', Carbon::today()) // ->sum('money'); $todayOrderProfit = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()) ->sum('pay_money'); $todayOrderRentProfit = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()) ->sum('pay_money'); $todayProfit = bcadd($todayOrderProfit, $todayOrderRentProfit, 0); // 今日新增押金 $depositToday = DepositOrder::query() ->where('pay_status', DepositOrder::PAY_STATUS_OK) ->where('is_refund', DepositOrder::REFUND_NO) ->whereIn('area_id', $area_ids) ->filter($depositFilter) ->where('created_at', '>', Carbon::today()) ->sum('pay_money'); // 本月收益 // $monthProfit = WalletLog::query() // ->whereIn('area_id', $area_ids) // ->filter($walletLogFilter) // ->whereIn('type', WalletLog::$subType) // ->where('created_at', '>', Carbon::today()->format('Y-m-01 00:00:00')) // ->sum('money'); $monthOrderProfit = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()->format('Y-m-01 00:00:00')) ->sum('pay_money'); $monthOrderRentProfit = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()->format('Y-m-01 00:00:00')) ->sum('pay_money'); $monthProfit = bcadd($monthOrderProfit, $monthOrderRentProfit, 0); $data = [ 'totalProfit' => floor(abs($totalProfit)) ?? 0, 'depositTotal' => floor($depositTotal) ?? 0, 'todayProfit' => floor($todayProfit) ?? 0, 'depositToday' => floor($depositToday) ?? 0, 'monthProfit' => floor($monthProfit) ?? 0, ]; return $data; } public function statistics(UserFilter $filter,OrderFilter $orderFilter,BikeFilter $bikeFilter,WorkOrderFilter $workOrderFilter,WalletLogFilter $walletLogFilter, DepositFilter $depositFilter,OrderRentFilter $orderRentFilter){ $area_ids = self::$areaIds; // 总用户 $totalUser = User::query() ->whereIn('register_area_id',$area_ids) ->filter($filter) ->count('id'); // 押金用户 $depositUser = User::query() ->whereIn('register_area_id',$area_ids) ->where('is_deposit',User::DEPOSIT_OK) ->filter($filter) ->count('id'); //有效用户 $cardUser = User::query() ->whereIn('register_area_id',$area_ids) ->where('is_card_certified',User::CARD_OK) ->filter($filter) ->count('id'); //今日新增 $todayAddUser = User::query() ->whereIn('register_area_id',$area_ids) ->where('is_card_certified',User::CARD_OK) ->where('created_at','>',Carbon::today()) ->filter($filter) ->count('id'); // 今日活跃 $todayActiveOrder = Order::query() ->whereIn('area_id',$area_ids) ->where('created_at','>',Carbon::today()) ->filter($orderFilter) ->get(['user_id']) ->toArray(); $todayActiveUserArr = []; foreach ($todayActiveOrder as $v){ $todayActiveUserArr[] = $v['user_id']; } $todayActiveUser = count(array_unique($todayActiveUserArr)); //去重复后计算总数 $data1 = [ 'totalUser' => $totalUser ?? 0, 'depositUser' => $depositUser ?? 0, 'cardUser' => $cardUser ?? 0, 'todayAddUser' => $todayAddUser ?? 0, 'todayActiveUser' => $todayActiveUser ?? 0 ]; $data2['total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->count('id'); // 上线车辆数 $data2['put_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('put_status', Bike::PUT_STATUS_YES) ->count('id'); // 在线车辆数 $data2['line_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('is_link', Bike::LINK_ONLINE) ->count('id'); //故障车辆 $data2['trouble_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('is_trouble', Bike::TROUBLE_YES) ->count('id'); //今日使用 $data2['today_use_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('last_use_bike_end_time', '>', Carbon::today()) ->count('id'); //低电量 $data2['low_battery_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('is_low_battery_power', Bike::BATTERY_POWER_LOW) ->count('id'); //骑行中 $data2['riding_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('is_riding', Bike::RIDING_YES) ->count('id'); //未使用 $data2['not_riding_total_bikes'] = Bike::query() ->whereIn('put_area_id', $area_ids) ->filter($bikeFilter) ->where('is_riding', Bike::RIDING_NO) ->count('id'); // 总订单数 $order_total = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->count('id'); $order_rent_total = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->count('id'); $order_total += $order_rent_total; // 今日新增订单数 $today_add_order = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('created_at', '>', Carbon::today()) ->where('status', Order::STATUS_COMPLETE_ORDER) ->count('id'); $today_add_order_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('pay_time', '>', Carbon::today()) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->count('id'); $today_add_order += $today_add_order_rent; // 骑行中订单数 $riding_status = [ Order::STATUS_RIDE_BIKE, // Order::STATUS_CLOSE_BIKE, // 待支付 Order::STATUS_PAUSE_BIKE, ]; $riding_order = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->whereIn('status', $riding_status) ->count('id'); $riding_order_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('status', OrderRent::STATUS_RENT_BIKE) ->count('id'); $riding_order += $riding_order_rent; // 待支付 $waiting_pay_order = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_CLOSE_BIKE) ->count('id'); $waiting_pay_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('status', OrderRent::STATUS_CLOSE_RENT_BIKE) ->count('id'); $waiting_pay_order += $waiting_pay_rent; // 今日新增收入 $today_add_money = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('pay_time', '>', Carbon::today()) ->where('status', Order::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $today_add_money_rent = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('pay_time', '>', Carbon::today()) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $today_add_money += $today_add_money_rent; $order = [ 'order_total' => $order_total ?? 0, 'today_add_order' => $today_add_order ?? 0, 'riding_order' => $riding_order ?? 0, 'today_add_money' => $today_add_money ?? 0, 'waiting_pay' => $waiting_pay_order ?? 0, ]; $type_num = WorkOrder::query() ->whereIn('area_id', $area_ids) ->where('status', WorkOrder::STATUS_NO) ->filter($workOrderFilter) ->groupBy(['type']) ->select('type', DB::raw('COUNT(id) as type_num')) ->get() ->toArray(); $data = [ 'charge_num' => 0, 'watch_num' => 0, 'power_failure_num' => 0, 'alert_num' => 0, 'steal_num' => 0, 'headman_num' => 0, 'trouble_num' => 0, 'help_num' => 0, 'other_num' => 0, 'offline_num' => 0, 'planned_meet_num' => 0, // 未认领 'planned_work_num' => 0, // 处理中 'planned_worked_num' => 0, // 已处理 'planned_over_num' => 0,// 完结 ]; foreach ($type_num as $v) { switch ($v['type']) { case WorkOrder::TYPE_CHARGE: $data['charge_num'] = $v['type_num']; break; case WorkOrder::TYPE_WATCH: $data['watch_num'] = $v['type_num']; break; case WorkOrder::TYPE_POWER_FAILURE: $data['power_failure_num'] = $v['type_num']; break; case WorkOrder::TYPE_ALERT: $data['alert_num'] = $v['type_num']; break; case WorkOrder::TYPE_STEAL: $data['steal_num'] = $v['type_num']; break; case WorkOrder::TYPE_HEADMAN: $data['headman_num'] = $v['type_num']; break; case WorkOrder::TYPE_TROUBLE: $data['trouble_num'] = $v['type_num']; break; case WorkOrder::TYPE_HELP: $data['help_num'] = $v['type_num']; break; case WorkOrder::TYPE_OFFLINE: $data['offline_num'] = $v['type_num']; break; case WorkOrder::TYPE_OTHER: $data['other_num'] = $v['type_num']; break; default; } } $planned_num = WorkOrder::query() ->filter($workOrderFilter) ->groupBy('planned') ->select('planned', DB::raw('COUNT(id) as planned_num')) ->get() ->toArray(); foreach ($planned_num as $v) { switch ($v['planned']) { case WorkOrder::PLANNED_STATUS_MEET: $data['planned_meet_num'] = $v['planned_num']; break; case WorkOrder::PLANNED_STATUS_WORK: $data['planned_work_num'] = $v['planned_num']; break; case WorkOrder::PLANNED_STATUS_WORKED: $data['planned_worked_num'] = $v['planned_num']; break; case WorkOrder::PLANNED_STATUS_OVER: $data['planned_over_num'] = $v['planned_num']; break; default; } } $admin_type = Admin::user()->type; // if ($admin_type == AdminUser::TYPE_WORKER) { // // $data = [ // 'totalProfit' => $totalProfit ?? 0, // 'depositTotal' => $depositTotal ?? 0, // 'todayProfit' => $todayProfit ?? 0, // 'depositToday' => $depositToday ?? 0, // 'monthProfit' => $monthProfit ?? 0, // ]; // return $this->ok($data); // // } // 总收益 // $totalProfit = WalletLog::query() // ->whereIn('area_id', $area_ids) // ->filter($walletLogFilter) // ->whereIn('type', WalletLog::$subType) // ->sum('money'); $totalOrderProfit = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $totalOrderRentProfit = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->sum('pay_money'); $totalProfit = bcadd($totalOrderProfit, $totalOrderRentProfit, 0); // 总押金 $depositTotal = DepositOrder::query() ->where('pay_status', DepositOrder::PAY_STATUS_OK) ->where('is_refund', DepositOrder::REFUND_NO) ->whereIn('area_id', $area_ids) ->filter($depositFilter) ->sum('pay_money'); // 今日收益 // $todayProfit = WalletLog::query() // ->whereIn('area_id', $area_ids) // ->filter($walletLogFilter) // ->whereIn('type', WalletLog::$subType) // ->where('created_at', '>', Carbon::today()) // ->sum('money'); $todayOrderProfit = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()) ->sum('pay_money'); $todayOrderRentProfit = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()) ->sum('pay_money'); $todayProfit = bcadd($todayOrderProfit, $todayOrderRentProfit, 0); // 今日新增押金 $depositToday = DepositOrder::query() ->where('pay_status', DepositOrder::PAY_STATUS_OK) ->where('is_refund', DepositOrder::REFUND_NO) ->whereIn('area_id', $area_ids) ->filter($depositFilter) ->where('created_at', '>', Carbon::today()) ->sum('pay_money'); // 本月收益 // $monthProfit = WalletLog::query() // ->whereIn('area_id', $area_ids) // ->filter($walletLogFilter) // ->whereIn('type', WalletLog::$subType) // ->where('created_at', '>', Carbon::today()->format('Y-m-01 00:00:00')) // ->sum('money'); $monthOrderProfit = Order::query() ->whereIn('area_id', $area_ids) ->filter($orderFilter) ->where('status', Order::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()->format('Y-m-01 00:00:00')) ->sum('pay_money'); $monthOrderRentProfit = OrderRent::query() ->whereIn('area_id', $area_ids) ->filter($orderRentFilter) ->where('status', OrderRent::STATUS_COMPLETE_ORDER) ->where('created_at', '>', Carbon::today()->format('Y-m-01 00:00:00')) ->sum('pay_money'); $monthProfit = bcadd($monthOrderProfit, $monthOrderRentProfit, 0); $data3 = [ 'totalProfit' => floor(abs($totalProfit)) ?? 0, 'depositTotal' => floor($depositTotal) ?? 0, 'todayProfit' => floor($todayProfit) ?? 0, 'depositToday' => floor($depositToday) ?? 0, 'monthProfit' => floor($monthProfit) ?? 0, ]; $res = [ 'userData' => $data1, 'bikeData' => $data2, 'orderData' => $order, 'workOrderData' => $data, 'profitData' => $data3, ]; return $this->ok($res); } }