globalUser->UserID ?? $request->input('userID', 0)); if ($userId <= 0) { return apiReturnFail('Invalid userID'); } $logic = new CouponLogic(); $data = $logic->getList($userId); return apiReturnSuc($data); } /** * 预估优惠券赠送金额(充值前调用) * * 用户在充值页面选择优惠券后,可调用此接口查看预计赠送金额。 * * POST /api/coupon/preview * 参数: userID (必填), coupon_id (必填), payAmt (必填, 充值金额元) * * 响应: * { * "code": 200, * "msg": "success", * "data": { * "coupon_id": 1, * "bonus_amount": 10.00, // 赠送金额(元) * "bonus_coins": 1000, // 赠送金币(分) * "total_amount": 60.00 // 到账总额(元) = 充值 + 赠送 * } * } */ public function preview(Request $request) { // game.php 中间件设置 globalUser;api.php 使用 userID 参数 $userId = (int) ($request->globalUser->UserID ?? $request->input('userID', 0)); $couponId = (int) $request->input('coupon_id'); $payAmt = (float) $request->input('payAmt'); if ($userId <= 0 || $couponId <= 0 || $payAmt <= 0) { return apiReturnFail('Invalid parameters'); } $logic = new CouponLogic(); $coupon = $logic->validateForPayment($couponId, $userId, $payAmt); if ($coupon === false) { return apiReturnFail($logic->getError()); } $couponService = new \App\Services\CouponService(); $bonusCoins = $couponService->calcBonusCoins($coupon, $payAmt); $bonusAmount = $bonusCoins / 100; // 分转元 return apiReturnSuc([ 'coupon_id' => $couponId, 'bonus_amount' => round($bonusAmount, 2), 'bonus_coins' => $bonusCoins, 'total_amount' => round($payAmt + $bonusAmount, 2), ]); } }