Przeglądaj źródła

Merge branch 'dev' of http://gogs.hnwmzp.cn/chengwenliang/nshop into dev

chengwl 2 dni temu
rodzic
commit
6ab2c72b44

+ 9 - 8
packages/Longyi/RewardPoints/src/Listeners/OrderEvents.php

@@ -124,14 +124,15 @@ class OrderEvents
         }
 
         DB::transaction(function () use ($order) {
-            $histories = $this->rewardPointRepository->findWhere([
-                'customer_id' => $order->customer_id,
-                'history_order_id' => $order->id,
-                'type_of_transaction' => RewardActiveRule::TYPE_ORDER
-            ])->whereIn('status', [
-                RewardPointHistory::STATUS_PENDING,
-                RewardPointHistory::STATUS_COMPLETED
-            ])->get();
+            $histories = RewardPointHistory::query()
+                ->where('customer_id', $order->customer_id)
+                ->where('history_order_id', $order->id)
+                ->where('type_of_transaction', RewardActiveRule::TYPE_ORDER)
+                ->whereIn('status', [
+                    RewardPointHistory::STATUS_PENDING,
+                    RewardPointHistory::STATUS_COMPLETED
+                ])
+                ->get();
 
             foreach ($histories as $history) {
                 $this->processCancellationHistory($history, $order);

+ 32 - 0
packages/Webkul/Shop/src/Http/Controllers/API/CustomerController.php

@@ -2,13 +2,45 @@
 
 namespace Webkul\Shop\Http\Controllers\API;
 
+use Illuminate\Http\JsonResponse;
+use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Illuminate\Support\Facades\Cookie;
 use Illuminate\Support\Facades\Event;
+use Longyi\RewardPoints\Helpers\ApiResponse;
+use Webkul\Customer\Models\Customer;
 use Webkul\Shop\Http\Requests\Customer\LoginRequest;
 
 class CustomerController extends APIController
 {
+    /**
+     * 验证邮箱是否已注册(无需登录)
+     *
+     * GET /api/customer/check-email?email=xxx@example.com
+     *
+     * @param  Request  $request
+     * @return JsonResponse
+     */
+    public function checkEmail(Request $request): JsonResponse
+    {
+        $email = trim((string) $request->input('email', ''));
+
+        if ($email === '') {
+            return ApiResponse::validationError('email is required');
+        }
+
+        if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
+            return ApiResponse::validationError('email format is invalid');
+        }
+
+        $exists = Customer::query()->where('email', $email)->exists();
+
+        return ApiResponse::success([
+            'email'    => $email,
+            'exists'   => $exists,
+        ]);
+    }
+
     /**
      * Login Customer
      *

+ 9 - 0
packages/Webkul/Shop/src/Routes/api-token.php

@@ -3,6 +3,7 @@
 use Illuminate\Support\Facades\Route;
 use Webkul\Shop\Http\Controllers\API\BearerAddressController;
 use Webkul\Shop\Http\Controllers\API\CouponController;
+use Webkul\Shop\Http\Controllers\API\CustomerController;
 use Webkul\Shop\Http\Controllers\API\HomeController;
 use Webkul\Shop\Http\Controllers\API\OrderController;
 
@@ -23,6 +24,14 @@ Route::group(['prefix' => 'api'], function () {
             Route::get('home', 'index')->name('shop.api.home.index');
         });
 
+    /** 验证邮箱是否注册(Storefront Key 认证,无需登录) */
+    Route::controller(CustomerController::class)
+        ->middleware('storefront.key')
+        ->prefix('customer')
+        ->group(function () {
+            Route::get('check-email', 'checkEmail')->name('shop.api.customer.check-email');
+        });
+
     /** 客户地址管理(Bearer Token 认证) */
     Route::controller(BearerAddressController::class)
         ->middleware('bearer.token')