initializeBackend($request); if ($response !== null) return $response; $now = time(); $todayStart = strtotime(date('Y-m-d', $now) . ' 00:00:00'); $yesterdayStart = $todayStart - 86400; $newPlayersToday = MallPlayxUserAsset::where('create_time', '>=', $todayStart) ->where('create_time', '<=', $now) ->count(); $yesterdayPointsClaimed = MallPlayxClaimLog::where('create_time', '>=', $yesterdayStart) ->where('create_time', '<', $todayStart) ->sum('claimed_amount'); $yesterdayRedeemQuery = MallPlayxOrder::where('create_time', '>=', $yesterdayStart) ->where('create_time', '<', $todayStart); $yesterdayRedeemCount = (clone $yesterdayRedeemQuery)->count(); $yesterdayRedeemPointsCostSum = (clone $yesterdayRedeemQuery)->sum('points_cost'); $yesterdayRedeemAmountSum = (clone $yesterdayRedeemQuery)->sum('amount'); $yesterdayRedeemCompletedCount = (clone $yesterdayRedeemQuery) ->where('status', MallPlayxOrder::STATUS_COMPLETED) ->count(); $yesterdayRedeemRejectedCount = (clone $yesterdayRedeemQuery) ->where('status', MallPlayxOrder::STATUS_REJECTED) ->count(); $yesterdayRedeemByItem = Db::name('mall_playx_order') ->alias('o') ->leftJoin('mall_item i', 'i.id = o.mall_item_id') ->where('o.create_time', '>=', $yesterdayStart) ->where('o.create_time', '<', $todayStart) ->group('o.mall_item_id, i.title') ->field([ 'o.mall_item_id', 'i.title', Db::raw('COUNT(*) as order_count'), Db::raw('SUM(o.points_cost) as points_cost_sum'), Db::raw('SUM(o.amount) as amount_sum'), Db::raw('SUM(CASE WHEN o.status = "COMPLETED" THEN 1 ELSE 0 END) as completed_count'), Db::raw('SUM(CASE WHEN o.status = "REJECTED" THEN 1 ELSE 0 END) as rejected_count'), ]) ->orderRaw('order_count DESC') ->select() ->toArray(); $pendingPhysicalToShip = MallPlayxOrder::where('type', MallPlayxOrder::TYPE_PHYSICAL) ->where('status', MallPlayxOrder::STATUS_PENDING) ->count(); $grantFailedRetryableCount = MallPlayxOrder::whereIn('type', [MallPlayxOrder::TYPE_BONUS, MallPlayxOrder::TYPE_WITHDRAW]) ->where('grant_status', MallPlayxOrder::GRANT_FAILED_RETRYABLE) ->count(); return $this->success('', [ 'remark' => get_route_remark(), 'playx' => [ 'time_range' => [ 'today_start' => $todayStart, 'yesterday_start' => $yesterdayStart, 'now' => $now, ], 'new_players_today' => $newPlayersToday, 'yesterday_points_claimed' => $yesterdayPointsClaimed, 'yesterday_redeem' => [ 'order_count' => $yesterdayRedeemCount, 'points_cost_sum' => $yesterdayRedeemPointsCostSum, 'amount_sum' => $yesterdayRedeemAmountSum, 'completed_count' => $yesterdayRedeemCompletedCount, 'rejected_count' => $yesterdayRedeemRejectedCount, 'by_item' => $yesterdayRedeemByItem, ], 'pending_physical_to_ship' => $pendingPhysicalToShip, 'grant_failed_retryable' => $grantFailedRetryableCount, ], ]); } }