Jelajahi Sumber

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

chengwl 4 hari lalu
induk
melakukan
c68e2b4487

+ 8 - 0
config/filesystems.php

@@ -52,6 +52,14 @@ return [
             'throw'      => false,
         ],
 
+        'blog_cdn' => [
+            'driver'     => 'local',
+            'root'       => storage_path('app/public'),
+            'url'        => env('BLOG_CDN_URL', 'https://cdn.asteriahair.com'),
+            'visibility' => 'public',
+            'throw'      => false,
+        ],
+
         's3' => [
             'driver'                  => 's3',
             'key'                     => env('AWS_ACCESS_KEY_ID'),

+ 2 - 2
packages/Longyi/Blog/src/Models/Blog.php

@@ -71,7 +71,7 @@ class Blog extends Model implements BlogContract
             return;
         }
 
-        return Storage::url($this->src);
+        return Storage::disk('blog_cdn')->url($this->src);
     }
 
     /**
@@ -85,7 +85,7 @@ class Blog extends Model implements BlogContract
             return;
         }
 
-        return Storage::url($this->m_src);
+        return Storage::disk('blog_cdn')->url($this->m_src);
     }
 
     public function getAssignCategorysAttribute()

+ 20 - 18
packages/Longyi/Blog/src/Repositories/BlogRepository.php

@@ -6,11 +6,9 @@ use Carbon\Carbon;
 use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Event;
-use Illuminate\Support\Facades\Storage;
 use Longyi\Blog\Models\Category;
+use Longyi\ImageUpload\Services\ImageUploadService;
 use Webkul\Core\Eloquent\Repository;
-use Intervention\Image\ImageManager;
-use Illuminate\Support\Str;
 
 class BlogRepository extends Repository
 {
@@ -97,31 +95,33 @@ class BlogRepository extends Repository
      */
     public function uploadImages($data, $blog, $type = 'src')
     {
+        $imageUploadService = app(ImageUploadService::class);
+
         if (isset($data[$type])) {
             foreach ($data[$type] as $imageId => $image) {
                 $file = $type . '.' . $imageId;
 
-                $dir = 'blog-images/' . $blog->id;
-
                 if (request()->hasFile($file)) {
                     if ($blog->{$type}) {
-                        Storage::delete($blog->{$type});
+                        $imageUploadService->delete($blog->{$type});
                     }
 
-                    $manager = new ImageManager();
+                    $result = $imageUploadService->upload(
+                        request()->file($file)
+                    );
 
-                    $image = $manager->make(request()->file($file))->encode('webp');
-
-                    $blog->{$type} = 'blog-images/' . $blog->id . '/' . Str::random(40) . '.webp';
+                    if (! ($result['success'] ?? false)) {
+                        throw new \Exception($result['error'] ?? 'Blog image upload failed.');
+                    }
 
-                    Storage::put($blog->{$type}, $image);
+                    $blog->{$type} = $result['path'];
 
                     $blog->save();
                 }
             }
         } else {
             if ($blog->{$type}) {
-                Storage::delete($blog->{$type});
+                $imageUploadService->delete($blog->{$type});
             }
 
             $blog->{$type} = null;
@@ -140,13 +140,15 @@ class BlogRepository extends Repository
     {
         $blogItem = $this->find($id);
 
-        $blogItemImage = $blogItem->src;
+        $imageUploadService = app(ImageUploadService::class);
 
-        $blogItemMobileImage = $blogItem->m_src;
-
-        Storage::delete($blogItemImage);
+        if ($blogItem->src) {
+            $imageUploadService->delete($blogItem->src);
+        }
 
-        Storage::delete($blogItemMobileImage);
+        if ($blogItem->m_src) {
+            $imageUploadService->delete($blogItem->m_src);
+        }
 
         return $this->model->destroy($id);
     }
@@ -208,4 +210,4 @@ class BlogRepository extends Repository
 
         return $blogs;
     }
-}
+}

+ 4 - 3
packages/Webkul/BagistoApi/src/State/CustomerProfileProcessor.php

@@ -319,7 +319,8 @@ class CustomerProfileProcessor implements ProcessorInterface
      * spaces, hyphens, dots or parentheses):
      *   +1 2123165641, +86 138 0013 8000, (212) 316-5641, 2123165641
      *
-     * Returns the normalized number (e.g. "+12123165641") for storage.
+     * Returns the phone as-is (trimmed). Separators are preserved, so the
+     * stored value keeps the user's original formatting, e.g. "+1 530 996 4115".
      *
      * @throws InvalidInputException
      */
@@ -345,7 +346,7 @@ class CustomerProfileProcessor implements ProcessorInterface
             throw new InvalidInputException(__('bagistoapi::app.graphql.customer.phone-invalid-format'));
         }
 
-        // Normalize for storage: optional leading "+" followed by plain digits.
-        return (str_starts_with($phone, '+') ? '+' : '').$digits;
+        // No separator stripping: keep the user's input (trimmed) exactly as-is.
+        return $phone;
     }
 }

+ 9 - 3
packages/Webkul/BagistoApi/src/Validators/CustomerValidator.php

@@ -28,6 +28,11 @@ class CustomerValidator
             'password'   => 'min:6|required',
         ];
 
+        // Trim phone first so the unique check and the stored value always match.
+        if ($customer->phone !== null) {
+            $customer->phone = trim($customer->phone);
+        }
+
         $data = [
             'first_name'            => $customer->first_name,
             'last_name'             => $customer->last_name,
@@ -115,7 +120,8 @@ class CustomerValidator
      * spaces, hyphens, dots or parentheses):
      *   +1 2123165641, +86 138 0013 8000, (212) 316-5641, 2123165641
      *
-     * Returns the normalized number (e.g. "+12123165641") for storage.
+     * Returns the phone as-is (trimmed). Separators are preserved, so the
+     * stored value keeps the user's original formatting, e.g. "+1 530 996 4115".
      *
      * @throws InvalidInputException
      */
@@ -141,8 +147,8 @@ class CustomerValidator
             throw new InvalidInputException(__('bagistoapi::app.graphql.customer.phone-invalid-format'));
         }
 
-        // Normalize for storage: optional leading "+" followed by plain digits.
-        return (str_starts_with($phone, '+') ? '+' : '').$digits;
+        // No separator stripping: keep the user's input (trimmed) exactly as-is.
+        return $phone;
     }
 
     /**