diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index f201a56a..3cd43148 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -19,7 +19,6 @@ use App\Utils\Payments\PayJs; use App\Utils\Payments\PayPal; use App\Utils\Payments\Stripe; use App\Utils\Payments\THeadPay; -use Auth; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -90,6 +89,7 @@ class PaymentController extends Controller { $goods_id = $request->input('goods_id'); $coupon_sn = $request->input('coupon_sn'); + $coupon = null; self::$method = $request->input('method'); $credit = $request->input('amount'); $pay_type = $request->input('pay_type'); @@ -126,12 +126,11 @@ class PaymentController extends Controller // 使用优惠券 if ($coupon_sn) { - $ret = (new CouponService($coupon_sn))->search($goods); // 检查券合规性 + $coupon = (new CouponService($coupon_sn))->search($goods); // 检查券合规性 - if (! $ret instanceof Coupon) { - return $ret; + if (! $coupon instanceof Coupon) { + return $coupon; } - $coupon = $ret; // 计算实际应支付总价 $amount = $coupon->type === 2 ? $goods->price * $coupon->value / 100 : $goods->price - $coupon->value; @@ -149,7 +148,7 @@ class PaymentController extends Controller if (Order::uid()->whereStatus(0)->exists()) { return Response::json(['status' => 'fail', 'message' => '订单创建失败:尚有未支付的订单,请先去支付']); } - } elseif (Auth::getUser()->credit < $amount) { // 验证账号余额是否充足 + } elseif (auth()->user()->credit < $amount) { // 验证账号余额是否充足 return Response::json(['status' => 'fail', 'message' => '您的余额不足,请先充值']); } @@ -169,7 +168,7 @@ class PaymentController extends Controller 'sn' => date('ymdHis').random_int(100000, 999999), 'user_id' => auth()->id(), 'goods_id' => $credit ? null : $goods_id, - 'coupon_id' => $coupon->id ?? null, + 'coupon_id' => $coupon?->id, 'origin_amount' => $credit ?: ($goods->price ?? 0), 'amount' => $amount, 'pay_type' => $pay_type, diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 7be145ac..60385c7b 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -416,16 +416,16 @@ class UserController extends Controller return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.coupon.error.unknown')]); } - $ret = (new CouponService($coupon_sn))->search($good); // 检查券合规性 + $coupon = (new CouponService($coupon_sn))->search($good); // 检查券合规性 - if (! $ret instanceof Coupon) { - return $ret; + if (! $coupon instanceof Coupon) { + return $coupon; } $data = [ - 'name' => $ret->name, - 'type' => $ret->type, - 'value' => $ret->type === 2 ? $ret->value : Helpers::getPriceTag($ret->value), + 'name' => $coupon->name, + 'type' => $coupon->type, + 'value' => $coupon->type === 2 ? $coupon->value : Helpers::getPriceTag($coupon->value), ]; return Response::json(['status' => 'success', 'data' => $data, 'message' => trans('common.applied', ['attribute' => trans('model.coupon.attribute')])]); diff --git a/app/Services/CouponService.php b/app/Services/CouponService.php index 3cb2a444..39a716f8 100644 --- a/app/Services/CouponService.php +++ b/app/Services/CouponService.php @@ -21,7 +21,7 @@ class CouponService $this->user = Auth::getUser(); } - public function search(Goods $goods): JsonResponse|bool + public function search(Goods $goods): JsonResponse|Coupon { // 寻找合适的券 $coupons = Coupon::whereSn($this->code)->whereIn('type', [1, 2])->orderByDesc('priority')->get(); if ($coupons->isNotEmpty()) { @@ -31,11 +31,9 @@ class CouponService return $coupon; } } - - return $ret ?? $this->failedReturn(trans('common.failed'), trans('user.coupon.error.unknown')); } - return $this->failedReturn(trans('common.failed'), trans('user.coupon.error.unknown')); + return $ret ?? $this->failedReturn(trans('common.failed'), trans('user.coupon.error.unknown')); } private function check(Goods $goods, Coupon $coupon): JsonResponse|bool diff --git a/app/Utils/IP.php b/app/Utils/IP.php index 7dc3a09a..2318afed 100644 --- a/app/Utils/IP.php +++ b/app/Utils/IP.php @@ -40,19 +40,19 @@ class IP $source++; } } else { - while ($source <= 10 && $ret === null) { // 中文ipv6 + while ($source <= 9 && $ret === null) { // 中文ipv6 $ret = match ($source) { - 0 => self::userAgentInfo($ip), - 1 => self::baiduBce($ip), - 2 => self::TenAPI($ip), - 3 => self::TaoBao($ip), - 4 => self::fkcoder($ip), - 5 => self::ipApi($ip), - 6 => self::juHe($ip), - 7 => self::Baidu($ip), - 8 => self::ipGeoLocation($ip), - 9 => self::ip2Region($ip), - 10 => self::IPIP($ip), + 0 => self::baiduBce($ip), + 1 => self::TenAPI($ip), + 2 => self::TaoBao($ip), + 3 => self::fkcoder($ip), + 4 => self::ipApi($ip), + 5 => self::juHe($ip), + 6 => self::Baidu($ip), + 7 => self::ipGeoLocation($ip), + 8 => self::ip2Region($ip), + 9 => self::IPIP($ip), + //10 => self::userAgentInfo($ip), // 无法查外网的ip }; $source++; } @@ -125,8 +125,8 @@ class IP $url = "https://qifu-api.baidubce.com/ip/geo/v1/district?ip=$ip"; } $response = Http::timeout(15)->get($url); + $data = $response->json(); if ($response->ok()) { - $data = $response->json(); if ($data['code'] === 'Success') { return [ 'country' => $data['data']['country'], @@ -141,7 +141,7 @@ class IP Log::error('【baiduBce】IP查询失败:'.$data['msg'] ?? ''); } else { - Log::error('【baiduBce】查询无效:'.$ip); + Log::error('【baiduBce】查询无效:'.$ip.var_export($data, true)); } return null; @@ -264,7 +264,7 @@ class IP ]; } - Log::error('【userAgentInfo】IP查询失败:'.$data['desc'] ?? ''); + Log::error('【userAgentInfo】IP查询失败:'.$data ?? ''); } else { Log::error('【userAgentInfo】查询无效:'.$ip); } diff --git a/database/migrations/2023_06_04_224713_update_paypal.php b/database/migrations/2023_06_04_224713_update_paypal.php index f1e3c6e9..41ec52ee 100644 --- a/database/migrations/2023_06_04_224713_update_paypal.php +++ b/database/migrations/2023_06_04_224713_update_paypal.php @@ -1,5 +1,6 @@ $config]); - } - foreach (self::$dropConfigs as $config) { - Config::destroy(['name' => $config]); + if (Config::exists()) { + foreach (self::$newConfigs as $config) { + Config::insert(['name' => $config]); + } + foreach (self::$dropConfigs as $config) { + Config::destroy(['name' => $config]); + } } }