post('page', 1); // 默认第一页 $size = $request->post('size', 15); // 默认每页15条 $status = $request->post('status', 0); // 默认状态为0(全部) $time = $request->post('time', null); // 默认时间不做过滤 $userId = $request->data['id']; // 初始化查询构建器 $query = Withdraw::query(); // 根据状态过滤 if ($status != 0) { $query->where('status', $status); } // 根据时间过滤 if (!is_null($time)) { $todayStart = Carbon::now()->startOfDay(); // 今天的开始时间 (00:00:00) $todayEnd = Carbon::now()->endOfDay(); // 今天的结束时间 (23:59:59) $yesterdayStart = Carbon::now()->subDay()->startOfDay(); // 昨天的开始时间 $sevenDaysAgoStart = Carbon::now()->subDays(7)->startOfDay(); // 七天前的开始时间 switch ($time) { case 1: $query->whereBetween('createtime2', [$todayStart, $todayEnd]); break; case 2: $query->whereBetween('createtime2', [$yesterdayStart, $todayEnd]); break; case 3: $query->whereBetween('createtime2', [$sevenDaysAgoStart, $todayEnd]); break; } } // 添加用户ID过滤条件 $query->where('user_id', $userId); // 查询结果 $withdrawOrders = $query->orderBy('createtime2', 'desc') ->skip(($page - 1) * $size) ->take($size) ->get(); // 手动映射字段 // $withdrawOrders = $withdrawOrders->map(function ($item) { // // 将 money 字段映射为 amount // $item->amount = $item->money; // unset($item->money); // 删除原始的 money 字段 // return $item; // }); // $withdrawOrders->money = 100; // var_dump($withdrawOrders); // 返回成功响应 return ApiResponseApp::success($withdrawOrders); } /** * @Apidoc\Title("小于1000直接转账,大于1000生成审批") * @Apidoc\Url("api/withdraw/submit") * @Apidoc\Method("POST") */ public function submit(Request $request) { $money_no = $request->post('money'); //用户存了一个 转账信息 这里是用户转账信息的id $bank_id = $request->post('bank_id'); $user_id = $request->data['id']; $today = date('Y-m-d'); //判断用户今天提现几次 if (Withdraw::where('user_id', $user_id)->where('created_at', '>=', $today . " 00:00:00")->count() >= 3) { return ApiResponseApp::error(null, '每天只能提现三次'); } $user = User::find($user_id); //提现金额 $rate = ExchangeRate::where('type', 'BDT')->get(); $money = $money_no / 100 * $rate[0]['points']; $withdraw = Withdraw::create([ 'user_id' => $user_id, 'amount' => $money, 'status' => 1, 'createtime2' => date('Y-m-d H:i:s'), 'username' => $user->username, 'status_text' => '申请中', ]); //大于1000等待管理员审核 if ($money >= 1000) { return ApiResponseApp::success(null, '等待管理员审核'); } //用户积分减少$money UserRewardDao::base($user_id, 1, - ($money_no + 300), '提现'); $userbank = Userbank::where('id', $bank_id)->first(); //获取刚刚存入数据库的id(订单号) $orderId = $withdraw->id; $res = PaymentNew::pushMoney($money, $userbank->bank_username, $userbank->account, $userbank->bank_name, $orderId); // //逻辑错误需要修改 if ($res->Success) { $withdraw->update([ 'status' => 4, // 'status_text' => '等待银行打款', 'order_number' => $res->TrackingNumber ?? null, ]); return ApiResponseApp::success(null, '转账成功'); } else { if ($res->ErrorMessage == "PayeeAccountNumberFormatError") { return ApiResponseApp::error(null, '收款人帐号格式错误'); } return ApiResponseApp::error(null, '未知错误请联系客服'); } } /** * @Apidoc\Title("请求回调") * @Apidoc\Url("api/withdraw/callback") * @Apidoc\Method("POST") */ public function callback(Request $request) { $callbackData = $request->all(); // 记录回调数据以便调试 Log::info('Payment Callback Received:', $callbackData); $orderId = $callbackData['TrackingNumber'] ?? null; $failedMessage = $callbackData['FailedMessage'] ?? null; $withdraw = Withdraw::where('order_number', $orderId)->first(); //$failedMessage为null就是成功 if ($failedMessage != null) { $withdraw->update([ 'status' => 5, 'status_text' => '支付失败: ' . $failedMessage, ]); } } }