From 9ee28acf64068bfd7896643f593ce3419a172b78 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 24 Mar 2023 12:59:35 +0800 Subject: [PATCH 001/198] fixed country list --- beike/Shop/Http/Controllers/Account/AddressController.php | 2 +- beike/Shop/Services/CheckoutService.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beike/Shop/Http/Controllers/Account/AddressController.php b/beike/Shop/Http/Controllers/Account/AddressController.php index f9236420..2a9e22a1 100644 --- a/beike/Shop/Http/Controllers/Account/AddressController.php +++ b/beike/Shop/Http/Controllers/Account/AddressController.php @@ -25,7 +25,7 @@ class AddressController extends Controller { $addresses = AddressRepo::listByCustomer(current_customer()); $data = [ - 'countries' => CountryRepo::all(), + 'countries' => CountryRepo::listEnabled(), 'addresses' => AddressResource::collection($addresses), ]; diff --git a/beike/Shop/Services/CheckoutService.php b/beike/Shop/Services/CheckoutService.php index 24ef1047..71ccfdd1 100644 --- a/beike/Shop/Services/CheckoutService.php +++ b/beike/Shop/Services/CheckoutService.php @@ -248,7 +248,7 @@ class CheckoutService ], 'country_id' => (int) system_setting('base.country_id'), 'customer_id' => $customer->id ?? null, - 'countries' => CountryRepo::all(), + 'countries' => CountryRepo::listEnabled(), 'addresses' => AddressResource::collection($addresses), 'shipping_methods' => $shipments, 'payment_methods' => $payments, From 3266cb492420f7a6d99c16c15b1891b92c37457a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?what=5F=E6=9D=91=E9=95=BF?= <178277164@qq.com> Date: Fri, 24 Mar 2023 08:26:18 +0000 Subject: [PATCH 002/198] =?UTF-8?q?!65=20=E5=9C=A8=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=99=A8=E4=B8=8A=E5=8A=A0=E5=85=A5@hook('fi?= =?UTF-8?q?le=5Fmanager.content.head.btns.after')=20*=201.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=20@hook('file=5Fmanager.content.head.btns.after')=20*?= =?UTF-8?q?=201.=E5=A2=9E=E5=8A=A0=20@hook('file=5Fmanager.content.head.bt?= =?UTF-8?q?ns.after')=20*=20=E5=9C=A8=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=99=A8=E4=B8=8A=E5=8A=A0=E5=85=A5@hook('file=5Fmanager.conte?= =?UTF-8?q?nt.head.btns.after')=20*=20=E5=A2=9E=E5=8A=A0hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/beike/admin/views/pages/file_manager/index.blade.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/beike/admin/views/pages/file_manager/index.blade.php b/resources/beike/admin/views/pages/file_manager/index.blade.php index 85d44934..0c8c3662 100644 --- a/resources/beike/admin/views/pages/file_manager/index.blade.php +++ b/resources/beike/admin/views/pages/file_manager/index.blade.php @@ -82,6 +82,7 @@ @click="openInputBox('image')" icon="el-icon-edit">{{ __('admin/file_manager.rename') }} {{ __('common.select_all') }} + @hook('admin.file_manager.content.head.btns.after')
{{ __('admin/file_manager.upload_files') }} @@ -202,6 +203,7 @@ image_total: 0, image_page: 1, per_page: 20, + @stack('admin.file_manager.vue.data') }, // 计算属性 computed: { @@ -559,6 +561,7 @@ }) } } + @stack('admin.file_manager.vue.method') }, created() { From 76edc24c779a2b22a429b191395c5f93908bec4c Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 24 Mar 2023 17:01:02 +0800 Subject: [PATCH 003/198] Add hook from mundosanjose --- .../Controllers/Account/LoginController.php | 38 ++++++++++++------- beike/Shop/Http/Resources/CartDetail.php | 4 +- beike/Shop/Http/Resources/SkuDetail.php | 4 +- .../views/pages/products/form/form.blade.php | 4 ++ 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/beike/Shop/Http/Controllers/Account/LoginController.php b/beike/Shop/Http/Controllers/Account/LoginController.php index 86552e40..2d4d5642 100644 --- a/beike/Shop/Http/Controllers/Account/LoginController.php +++ b/beike/Shop/Http/Controllers/Account/LoginController.php @@ -35,20 +35,30 @@ class LoginController extends Controller public function store(LoginRequest $request) { - $guestCartProduct = CartRepo::allCartProducts(0); - if (! auth(Customer::AUTH_GUARD)->attempt($request->only('email', 'password'))) { - throw new NotAcceptableHttpException(trans('shop/login.email_or_password_error')); + $data = [ + 'request_data' => $request->all(), + ]; + + try { + hook_action('shop.account.login.before', $data); + + $guestCartProduct = CartRepo::allCartProducts(0); + if (! auth(Customer::AUTH_GUARD)->attempt($request->only('email', 'password'))) { + throw new NotAcceptableHttpException(trans('shop/login.email_or_password_error')); + } + + $customer = current_customer(); + if ($customer && $customer->status != 1) { + Auth::guard(Customer::AUTH_GUARD)->logout(); + + throw new NotFoundHttpException(trans('shop/login.customer_inactive')); + } + + CartRepo::mergeGuestCart($customer, $guestCartProduct); + + return json_success(trans('shop/login.login_successfully')); + } catch (\Exception $e) { + return json_fail($e->getMessage()); } - - $customer = current_customer(); - if ($customer && $customer->status != 1) { - Auth::guard(Customer::AUTH_GUARD)->logout(); - - throw new NotFoundHttpException(trans('shop/login.customer_inactive')); - } - - CartRepo::mergeGuestCart($customer, $guestCartProduct); - - return json_success(trans('shop/login.login_successfully')); } } diff --git a/beike/Shop/Http/Resources/CartDetail.php b/beike/Shop/Http/Resources/CartDetail.php index e8645b68..0da5450a 100644 --- a/beike/Shop/Http/Resources/CartDetail.php +++ b/beike/Shop/Http/Resources/CartDetail.php @@ -26,7 +26,7 @@ class CartDetail extends JsonResource $subTotal = $price * $this->quantity; $image = $sku->image ?: $product->image; - return [ + $result = [ 'cart_id' => $this->id, 'product_id' => $this->product_id, 'sku_id' => $this->product_sku_id, @@ -44,5 +44,7 @@ class CartDetail extends JsonResource 'subtotal_format' => currency_format($subTotal), 'variant_labels' => trim($sku->getVariantLabel()), ]; + + return hook_filter('resource.cart.detail', $result); } } diff --git a/beike/Shop/Http/Resources/SkuDetail.php b/beike/Shop/Http/Resources/SkuDetail.php index 6f315747..db8b2683 100644 --- a/beike/Shop/Http/Resources/SkuDetail.php +++ b/beike/Shop/Http/Resources/SkuDetail.php @@ -17,7 +17,7 @@ class SkuDetail extends JsonResource { public function toArray($request): array { - return [ + $result = [ 'id' => $this->id, 'variants' => $this->variants ?: [], 'position' => $this->position, @@ -37,5 +37,7 @@ class SkuDetail extends JsonResource 'quantity' => $this->quantity, 'is_default' => $this->is_default, ]; + + return hook_filter('resource.sku.detail', $result); } } diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php index a5336d79..d72fcf89 100644 --- a/resources/beike/admin/views/pages/products/form/form.blade.php +++ b/resources/beike/admin/views/pages/products/form/form.blade.php @@ -107,9 +107,11 @@
{{ __('admin/product.stocks') }}
+ @hookwrapper('admin.product.edit.switch') + @endhookwrapper @@ -265,6 +267,7 @@
+ @hookwrapper('admin.product.edit.variable') + @endhookwrapper
From d233cd2fca897451b7abe3d2b385a83735eb6ec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=89=AF=E8=BE=B0?= Date: Fri, 24 Mar 2023 10:23:26 +0000 Subject: [PATCH 004/198] =?UTF-8?q?!67=20=E6=96=B0=E5=A2=9Ehook=20*=20add?= =?UTF-8?q?=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/default/layout/header.blade.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/themes/default/layout/header.blade.php b/themes/default/layout/header.blade.php index a20ed819..ee6ba922 100644 --- a/themes/default/layout/header.blade.php +++ b/themes/default/layout/header.blade.php @@ -58,6 +58,8 @@ @endhookwrapper
+ @hook('header.top.language.after') + @if (system_setting('base.telephone', '')) From 754ddb58a48d1abbfe3e6f7ca6ca2cd31114dfa9 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 27 Jun 2023 17:39:34 +0800 Subject: [PATCH 163/198] fixed validate database --- beike/Installer/Controllers/EnvironmentController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/beike/Installer/Controllers/EnvironmentController.php b/beike/Installer/Controllers/EnvironmentController.php index 0651e23d..8cb52a69 100644 --- a/beike/Installer/Controllers/EnvironmentController.php +++ b/beike/Installer/Controllers/EnvironmentController.php @@ -3,6 +3,7 @@ namespace Beike\Installer\Controllers; use Beike\Installer\Helpers\EnvironmentManager; +use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Routing\Redirector; @@ -75,9 +76,9 @@ class EnvironmentController extends BaseController * 数据库信息检测 * * @param Request $request - * @return array + * @return JsonResponse|array */ - public function validateDatabase(Request $request): array + public function validateDatabase(Request $request): JsonResponse|array { $this->checkInstalled(); $rules = config('installer.environment.form.rules'); From a531cc017317238a072b8ae2130b359bcca227d1 Mon Sep 17 00:00:00 2001 From: pushuo Date: Fri, 30 Jun 2023 08:15:51 +0000 Subject: [PATCH 164/198] !144 Fix single multi-specification delete problem * Fix single multi-specification delete problem --- resources/beike/admin/views/pages/products/form/form.blade.php | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php index 757156b2..ffbec235 100644 --- a/resources/beike/admin/views/pages/products/form/form.blade.php +++ b/resources/beike/admin/views/pages/products/form/form.blade.php @@ -810,6 +810,7 @@ // 用 cartesian 跟新 this.form.skus 中的 variants cartesian.forEach((c, i) => { + c = !Array.isArray(c) ? [c] : c; this.form.skus[i].variants = c.map(e => e + ''); }) }, From 7e3ee84096bc217ad5fac22999180414029d54b1 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 4 Jul 2023 18:25:09 +0800 Subject: [PATCH 165/198] Export csv --- beike/Shop/Http/Controllers/Controller.php | 26 ++++++ composer.json | 1 + composer.lock | 92 +++++++++++++++++++++- 3 files changed, 118 insertions(+), 1 deletion(-) diff --git a/beike/Shop/Http/Controllers/Controller.php b/beike/Shop/Http/Controllers/Controller.php index 1724858a..15d3e967 100644 --- a/beike/Shop/Http/Controllers/Controller.php +++ b/beike/Shop/Http/Controllers/Controller.php @@ -5,8 +5,34 @@ namespace Beike\Shop\Http\Controllers; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; +use League\Csv\CannotInsertRecord; class Controller extends \App\Http\Controllers\Controller { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + + /** + * @param $filename + * @param $header + * @param $records + * @return mixed + * @throws CannotInsertRecord + */ + public function downloadCsv($filename, $header, $records): mixed + { + if (!str_contains($filename, '.csv')) { + $filename = $filename . '-' . date('YmdHis') . '.csv'; + } + + $headers = [ + 'Content-Type' => 'application/octet-stream', + 'Content-Transfer-Encoding' => 'binary', + 'Content-Disposition' => 'attachment; filename=' . $filename, + ]; + + $csv = \League\Csv\Writer::createFromString(''); + $csv->insertOne($header); + $csv->insertAll($records); + return response($csv, 200, $headers); + } } diff --git a/composer.json b/composer.json index 9ffafa17..05a86d22 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,7 @@ "laravel/horizon": "^5.10", "laravel/socialite": "^5.5", "laravel/tinker": "^2.7", + "league/csv": "^9.8", "phpoffice/phpspreadsheet": "^1.28", "spatie/laravel-permission": "^5.5", "srmklive/paypal": "^3.0", diff --git a/composer.lock b/composer.lock index ac5c65b1..d9e2d03a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "38c9df2659b7e86eb82aa7be8552c013", + "content-hash": "1c71b8ebdb3694859ad0a09bc3798d35", "packages": [ { "name": "brick/math", @@ -2463,6 +2463,96 @@ ], "time": "2022-12-11T20:36:23+00:00" }, + { + "name": "league/csv", + "version": "9.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "friendsofphp/php-cs-fixer": "^v3.4.0", + "phpstan/phpstan": "^1.3.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpunit/phpunit": "^9.5.11" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2022-01-04T00:13:07+00:00" + }, { "name": "league/flysystem", "version": "3.15.1", From 5649d405608dc1b6e1cad8113cab8328fe1a8c87 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Wed, 5 Jul 2023 09:22:05 +0800 Subject: [PATCH 166/198] Code format --- beike/Shop/Http/Controllers/Controller.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/beike/Shop/Http/Controllers/Controller.php b/beike/Shop/Http/Controllers/Controller.php index 15d3e967..f10e5384 100644 --- a/beike/Shop/Http/Controllers/Controller.php +++ b/beike/Shop/Http/Controllers/Controller.php @@ -20,19 +20,20 @@ class Controller extends \App\Http\Controllers\Controller */ public function downloadCsv($filename, $header, $records): mixed { - if (!str_contains($filename, '.csv')) { + if (! str_contains($filename, '.csv')) { $filename = $filename . '-' . date('YmdHis') . '.csv'; } $headers = [ - 'Content-Type' => 'application/octet-stream', + 'Content-Type' => 'application/octet-stream', 'Content-Transfer-Encoding' => 'binary', - 'Content-Disposition' => 'attachment; filename=' . $filename, + 'Content-Disposition' => 'attachment; filename=' . $filename, ]; $csv = \League\Csv\Writer::createFromString(''); $csv->insertOne($header); $csv->insertAll($records); + return response($csv, 200, $headers); } } From 2ad26852f0d54639012bfc9ba10ae0d9294ad54c Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Wed, 5 Jul 2023 11:52:48 +0800 Subject: [PATCH 167/198] Optimize plugin API --- app/Http/Middleware/VerifyCsrfToken.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index b0201f98..a4f6e4fe 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -13,5 +13,6 @@ class VerifyCsrfToken extends Middleware */ protected $except = [ 'callback/*', + 'api/*', ]; } From ef14e65e312fbae11e0c3e1eb04fc54560c7ee9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?what=5F=E6=9D=91=E9=95=BF?= <178277164@qq.com> Date: Wed, 5 Jul 2023 07:00:13 +0000 Subject: [PATCH 168/198] =?UTF-8?q?!146=20=E5=A2=9E=E5=8A=A0=20hoot=20admi?= =?UTF-8?q?n.product.sku.edit.item.after=20*=20=E5=A2=9E=E5=8A=A0hook=20ad?= =?UTF-8?q?min.product.sku.edit.item.after=20,=E6=96=B9=E4=BE=BF=E5=9C=A8?= =?UTF-8?q?=E4=B8=8A=E9=9D=A2=E5=8A=A0=E4=B8=8A=E7=BF=BB=E8=AF=91=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E6=8C=89=E9=92=AE=20*=20=E5=A2=9E=E5=8A=A0hook=20admi?= =?UTF-8?q?n.product.sku.edit.item=20,=E6=96=B9=E4=BE=BF=E5=9C=A8=E4=B8=8A?= =?UTF-8?q?=E9=9D=A2=E5=8A=A0=E4=B8=8A=E7=BF=BB=E8=AF=91=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=8C=89=E9=92=AE=20*=20Merge=20branch=20'dev'=20of=20https://?= =?UTF-8?q?gitee.com/what520/beikeshop=20into=20dev=20*=20=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/beike/admin/views/pages/products/form/form.blade.php | 1 + themes/default/product/product.blade.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php index ffbec235..35b0d44c 100644 --- a/resources/beike/admin/views/pages/products/form/form.blade.php +++ b/resources/beike/admin/views/pages/products/form/form.blade.php @@ -469,6 +469,7 @@ > + @hook('admin.product.sku.edit.item.after') diff --git a/themes/default/product/product.blade.php b/themes/default/product/product.blade.php index 0255630b..e1fdb2ce 100644 --- a/themes/default/product/product.blade.php +++ b/themes/default/product/product.blade.php @@ -163,7 +163,6 @@ >{{ __('shop/products.buy_now') }} @endhookwrapper - @hook('product.detail.buy.after') From 9529d68d38655784bf8d98d45741755b765e826f Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Thu, 6 Jul 2023 18:05:54 +0800 Subject: [PATCH 169/198] Publish JD product. --- beike/Admin/Services/ProductService.php | 8 +-- composer.json | 1 + composer.lock | 81 ++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 5 deletions(-) diff --git a/beike/Admin/Services/ProductService.php b/beike/Admin/Services/ProductService.php index b03e36ad..ef13f809 100644 --- a/beike/Admin/Services/ProductService.php +++ b/beike/Admin/Services/ProductService.php @@ -26,10 +26,10 @@ class ProductService try { DB::beginTransaction(); - $data['brand_id'] = (int) $data['brand_id']; - $data['position'] = (int) $data['position']; - $data['weight'] = (float) $data['weight']; - $data['variables'] = json_decode($data['variables']); + $data['brand_id'] = (int) ($data['brand_id'] ?? 0); + $data['position'] = (int) ($data['position'] ?? 0); + $data['weight'] = (float) ($data['weight'] ?? 0); + $data['variables'] = json_decode($data['variables'] ?? ''); $product->fill($data); $product->updated_at = now(); $product->save(); diff --git a/composer.json b/composer.json index 05a86d22..547a3eac 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ "spatie/laravel-permission": "^5.5", "srmklive/paypal": "^3.0", "stripe/stripe-php": "^8.8", + "symfony/dom-crawler": "^6.0", "tormjens/eventy": "^0.8.0", "tymon/jwt-auth": "^2.0", "ultrono/laravel-sitemap": "^9.1", diff --git a/composer.lock b/composer.lock index d9e2d03a..57825179 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1c71b8ebdb3694859ad0a09bc3798d35", + "content-hash": "dc9edf92dba52d6800988b3ed8a5a69c", "packages": [ { "name": "brick/math", @@ -5346,6 +5346,85 @@ ], "time": "2022-01-02T09:55:41+00:00" }, + { + "name": "symfony/dom-crawler", + "version": "v6.0.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "622578ff158318b1b49d95068bd6b66c713601e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/622578ff158318b1b49d95068bd6b66c713601e9", + "reference": "622578ff158318b1b49d95068bd6b66c713601e9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^5.4|^6.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v6.0.19" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-20T17:44:14+00:00" + }, { "name": "symfony/error-handler", "version": "v6.0.19", From e1a4d1b3cc3d275d3c3deef18370141902d28f97 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 7 Jul 2023 09:57:45 +0800 Subject: [PATCH 170/198] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20blade=20hook=20?= =?UTF-8?q?=E4=BC=98=E5=85=88=E7=BA=A7=E8=A2=AB=E8=A6=86=E7=9B=96=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=8F=92=E4=BB=B6=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Hook/Hook.php | 23 +++++++++++++---------- beike/Hook/HookServiceProvider.php | 8 +++----- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/beike/Hook/Hook.php b/beike/Hook/Hook.php index e4394720..3386b125 100644 --- a/beike/Hook/Hook.php +++ b/beike/Hook/Hook.php @@ -49,10 +49,10 @@ class Hook } /** - * @param string $hook - * @param array $params + * @param string $hook + * @param array $params * @param callable|null $callback - * @param string $htmlContent + * @param string $htmlContent * @return string|void|null */ public function getHook(string $hook, array $params = [], callable $callback = null, string $htmlContent = '') @@ -64,12 +64,11 @@ class Hook return $this->get($hook, $params, $callback, $htmlContent); } - /** - * @param string $hook - * @param array $params + * @param string $hook + * @param array $params * @param callable|null $callback - * @param string $htmlContent + * @param string $htmlContent * @return string|void|null */ public function getWrapper(string $hook, array $params = [], callable $callback = null, string $htmlContent = '') @@ -114,11 +113,15 @@ class Hook $priority = null; } + if (isset($this->watch[$hook][$priority])) { + $priority++; + } + $this->watch[$hook][$priority] = [ 'function' => $function, 'caller' => [ - //'file' => $caller['file'], - //'line' => $caller['line'], + 'file' => $caller['file'], + 'line' => $caller['line'], 'class' => Arr::get($caller, 'class'), ], ]; @@ -192,7 +195,7 @@ class Hook * Return a new callback object. * * @param callable $callback function - * @param array $params parameters + * @param array $params parameters * * @return Callback */ diff --git a/beike/Hook/HookServiceProvider.php b/beike/Hook/HookServiceProvider.php index 9c7297cf..326ea2dc 100644 --- a/beike/Hook/HookServiceProvider.php +++ b/beike/Hook/HookServiceProvider.php @@ -19,7 +19,6 @@ class HookServiceProvider extends ServiceProvider }); } - public function boot() { $this->bootHookDirectives(); @@ -33,7 +32,7 @@ class HookServiceProvider extends ServiceProvider protected function bootHookDirectives() { Blade::directive('hook', function ($parameter) { - $parameter = trim($parameter, '()'); + $parameter = trim($parameter, '()'); $parameters = explode(',', $parameter); $name = trim($parameters[0], "'"); @@ -51,7 +50,6 @@ class HookServiceProvider extends ServiceProvider }); } - /** * 添加 blade wrapper hook 标签 * @@ -60,9 +58,9 @@ class HookServiceProvider extends ServiceProvider protected function bootWrapperHookDirectives() { Blade::directive('hookwrapper', function ($parameter) { - $parameter = trim($parameter, '()'); + $parameter = trim($parameter, '()'); $parameters = explode(',', $parameter); - $name = trim($parameters[0], "'"); + $name = trim($parameters[0], "'"); return ' Date: Fri, 7 Jul 2023 14:15:55 +0800 Subject: [PATCH 171/198] =?UTF-8?q?=E6=94=AF=E6=8C=81=20blade=20hook=20?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF=E4=BD=93=E4=BC=A0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Hook/HookServiceProvider.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/beike/Hook/HookServiceProvider.php b/beike/Hook/HookServiceProvider.php index 326ea2dc..f7c8d298 100644 --- a/beike/Hook/HookServiceProvider.php +++ b/beike/Hook/HookServiceProvider.php @@ -5,6 +5,7 @@ namespace Beike\Hook; use Beike\Hook\Console\HookListeners; use Illuminate\Support\Facades\Blade; use Illuminate\Support\ServiceProvider; +use Illuminate\Support\Str; class HookServiceProvider extends ServiceProvider { @@ -36,6 +37,7 @@ class HookServiceProvider extends ServiceProvider $parameters = explode(',', $parameter); $name = trim($parameters[0], "'"); + $definedVars = $this->parseParameters($parameters); return ' $__definedVars],function($data) { return null; }); if ($output) echo $output; @@ -84,4 +87,23 @@ class HookServiceProvider extends ServiceProvider ?>'; }); } + + /** + * Parse parameters from Blade + * + * @param $parameters + * @return string + */ + protected function parseParameters($parameters):string + { + $definedVars = ''; + foreach ($parameters as $paraItem) { + $paraItem = trim($paraItem); + if (Str::startsWith($paraItem,'$')) { + $paraKey = trim($paraItem, '$'); + $definedVars .= '$__definedVars["'.$paraKey.'"] = $'.$paraKey.';'; + } + } + return $definedVars; + } } From 2430791a2504265206fe1d2208355818dd89499a Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Mon, 10 Jul 2023 11:45:29 +0800 Subject: [PATCH 172/198] update order payment schema --- .../2023_05_11_055643_create_order_payments.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/database/migrations/2023_05_11_055643_create_order_payments.php b/database/migrations/2023_05_11_055643_create_order_payments.php index f30666f8..d46d6bec 100644 --- a/database/migrations/2023_05_11_055643_create_order_payments.php +++ b/database/migrations/2023_05_11_055643_create_order_payments.php @@ -16,10 +16,10 @@ return new class extends Migration { $table->id(); $table->integer('order_id'); $table->string('transaction_id')->nullable(); - $table->string('request')->nullable(); - $table->string('response')->nullable(); - $table->string('callback')->nullable(); - $table->string('receipt')->nullable(); + $table->text('request')->nullable(); + $table->text('response')->nullable(); + $table->text('callback')->nullable(); + $table->text('receipt')->nullable(); $table->timestamps(); }); } From 2e7d2b7cb2c6c17f38849f14df246ff2176cc982 Mon Sep 17 00:00:00 2001 From: pushuo Date: Mon, 10 Jul 2023 09:45:42 +0000 Subject: [PATCH 173/198] !148 Fix the problem of switching preview when editing tab-product module * wip * Fix the problem of switching preview when editing tab-product module --- .../pages/design/module/tab_product.blade.php | 26 +++++++++---------- themes/default/design/tab_product.blade.php | 6 ++--- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/resources/beike/admin/views/pages/design/module/tab_product.blade.php b/resources/beike/admin/views/pages/design/module/tab_product.blade.php index 6cfbe8ef..1220a6e1 100644 --- a/resources/beike/admin/views/pages/design/module/tab_product.blade.php +++ b/resources/beike/admin/views/pages/design/module/tab_product.blade.php @@ -9,7 +9,7 @@
{{ __('admin/builder.modules_content') }}
{{ __('admin/builder.modules_set_product') }}
- + { + $http.get('products/names?product_ids='+this.form.tabs[this.form.editableTabsValue].products.join(','), {hload: true}).then((res) => { this.loading = false; - this.form.tabs[this.editableTabsValue].products = res.data.map(e => e.id); + this.form.tabs[this.form.editableTabsValue].products = res.data.map(e => e.id); that.productData = res.data; }) }, @@ -127,34 +126,34 @@ Vue.component('module-editor-tab-product', { }, handleSelect(item) { - if (!this.form.tabs[this.editableTabsValue].products.find(v => v == item.id)) { - this.form.tabs[this.editableTabsValue].products.push(item.id * 1); + if (!this.form.tabs[this.form.editableTabsValue].products.find(v => v == item.id)) { + this.form.tabs[this.form.editableTabsValue].products.push(item.id * 1); this.productData.push(item); } this.keyword = "" }, itemChange(evt) { - this.form.tabs[this.editableTabsValue].products = this.productData.map(e => e.id * 1); + this.form.tabs[this.form.editableTabsValue].products = this.productData.map(e => e.id * 1); }, removeProduct(index) { this.productData.splice(index, 1) - this.form.tabs[this.editableTabsValue].products.splice(index, 1); + this.form.tabs[this.form.editableTabsValue].products.splice(index, 1); }, handleTabsEdit(targetName, action) { if (action === 'add') { this.form.tabs.push({title: languagesFill('Tab ' + (this.form.tabs.length + 1)), products: []}); - this.editableTabsValue = this.form.tabs.length - 1 + ''; + this.form.editableTabsValue = this.form.tabs.length - 1 + ''; } if (action === 'remove') { let tabs = this.form.tabs; tabs.splice(targetName, 1); - let activeName = this.editableTabsValue == 0 ? '0' : targetName * 1 - 1 + ''; + let activeName = this.form.editableTabsValue == 0 ? '0' : targetName * 1 - 1 + ''; - this.editableTabsValue = activeName; + this.form.editableTabsValue = activeName; this.form.tabs = tabs.filter(tab => tab.name !== targetName); } } @@ -171,6 +170,7 @@ Vue.component('module-editor-tab-product', { style: { background_color: '' }, + editableTabsValue: '0', floor: languagesFill(''), tabs: [{title: languagesFill('Tab 1'), products: []}], title: languagesFill('{{ __('admin/builder.text_module_title') }}'), diff --git a/themes/default/design/tab_product.blade.php b/themes/default/design/tab_product.blade.php index a6fbee7e..423bb0a0 100644 --- a/themes/default/design/tab_product.blade.php +++ b/themes/default/design/tab_product.blade.php @@ -7,12 +7,12 @@ @if ($content['tabs'] ?? false)
- @foreach ($content['tabs'] as $products) -
+ @foreach ($content['tabs'] as $key => $products) +
@if ($products['products']) @foreach ($products['products'] as $product) From f72b61a4a3ed080495bd7899a800a5bd5e2aea4d Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Mon, 10 Jul 2023 17:47:41 +0800 Subject: [PATCH 174/198] Fixed checkout for null sku https://gitee.com/beikeshop/beikeshop/issues/I7D59N?from=project-issue --- beike/Models/ProductSku.php | 5 +++++ beike/Shop/Services/CartService.php | 1 + 2 files changed, 6 insertions(+) diff --git a/beike/Models/ProductSku.php b/beike/Models/ProductSku.php index 21f5be12..ec241d6c 100644 --- a/beike/Models/ProductSku.php +++ b/beike/Models/ProductSku.php @@ -34,6 +34,11 @@ class ProductSku extends Base $product = $this->product; $localeCode = locale(); $variantLabel = ''; + + if(empty($product->variables)) { + return ''; + } + foreach ($product->variables as $index => $variable) { $valueIndex = $this->variants[$index]; $variantName = $variable['name'][$localeCode] ?? ''; diff --git a/beike/Shop/Services/CartService.php b/beike/Shop/Services/CartService.php index 77fca0c3..5d7182e0 100644 --- a/beike/Shop/Services/CartService.php +++ b/beike/Shop/Services/CartService.php @@ -44,6 +44,7 @@ class CartService $product = $item->product ?? null; if (empty($description) || empty($product)) { $item->delete(); + return false; } $cartQuantity = $item->quantity; From 69e9a051c1c3c1560b596c465536edabd0a983b8 Mon Sep 17 00:00:00 2001 From: pushuo Date: Mon, 10 Jul 2023 09:56:15 +0000 Subject: [PATCH 175/198] =?UTF-8?q?!149=20Fix=20configuration=20link=20sta?= =?UTF-8?q?tus=20disabled=20and=20display=20problems=20*=20wip=20*=20wip?= =?UTF-8?q?=20*=20Fix=20configuration=20link=20status=20disabled=20and=20d?= =?UTF-8?q?isplay=20problems=20->=20https:/=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Libraries/Url.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/beike/Libraries/Url.php b/beike/Libraries/Url.php index 9922eb6e..bd5ab0a0 100644 --- a/beike/Libraries/Url.php +++ b/beike/Libraries/Url.php @@ -65,7 +65,8 @@ class Url return $value->url ?? ''; } elseif ($type == 'page') { if (! $value instanceof \Beike\Models\Page) { - $value = \Beike\Models\Page::query()->find($value); + $page = \Beike\Models\Page::query()->find($value); + $value = $page->active ? $page : null; } return $value->url ?? ''; From d0c4bc77e734d6a61384cd0ffa86ae3f295df680 Mon Sep 17 00:00:00 2001 From: mengwb Date: Mon, 10 Jul 2023 12:47:41 +0000 Subject: [PATCH 176/198] =?UTF-8?q?!150=20=E5=AE=89=E8=A3=85=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E6=A3=80=E6=B5=8B=20*=20installer=20detect=20the=20ph?= =?UTF-8?q?p=20extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Installer/config.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/beike/Installer/config.php b/beike/Installer/config.php index 28fc32ed..c637e133 100644 --- a/beike/Installer/config.php +++ b/beike/Installer/config.php @@ -35,6 +35,8 @@ return [ 'Tokenizer', 'XML', 'ZIP', + 'GD', + 'PDO_MYSQL', ], 'apache' => [ 'mod_rewrite', From 2d28ca8e6869df0f5429989984d1f663eb86694b Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 11 Jul 2023 19:48:44 +0800 Subject: [PATCH 177/198] add product repo builder --- beike/Repositories/ProductRepo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beike/Repositories/ProductRepo.php b/beike/Repositories/ProductRepo.php index 7ab39b80..4a9c4e6b 100644 --- a/beike/Repositories/ProductRepo.php +++ b/beike/Repositories/ProductRepo.php @@ -197,7 +197,7 @@ class ProductRepo $order = $filters['order'] ?? 'desc'; $builder->orderBy($sort, $order); - return $builder; + return hook_filter('repo.product.builder', $builder); } public static function parseFilterParamsAttr($attr) From 1a3b7d134fdc67c9fc5a994edb0b67058db5e4ac Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Thu, 13 Jul 2023 14:16:33 +0800 Subject: [PATCH 178/198] Code format --- beike/Libraries/Url.php | 2 +- beike/Shop/Services/CartService.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/beike/Libraries/Url.php b/beike/Libraries/Url.php index bd5ab0a0..a404641a 100644 --- a/beike/Libraries/Url.php +++ b/beike/Libraries/Url.php @@ -65,7 +65,7 @@ class Url return $value->url ?? ''; } elseif ($type == 'page') { if (! $value instanceof \Beike\Models\Page) { - $page = \Beike\Models\Page::query()->find($value); + $page = \Beike\Models\Page::query()->find($value); $value = $page->active ? $page : null; } diff --git a/beike/Shop/Services/CartService.php b/beike/Shop/Services/CartService.php index 5d7182e0..6ee62260 100644 --- a/beike/Shop/Services/CartService.php +++ b/beike/Shop/Services/CartService.php @@ -44,6 +44,7 @@ class CartService $product = $item->product ?? null; if (empty($description) || empty($product)) { $item->delete(); + return false; } From df96ffafa52e5c31df4121faae962415267509fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E8=89=AF=E8=BE=B0?= Date: Fri, 14 Jul 2023 03:31:03 +0000 Subject: [PATCH 179/198] =?UTF-8?q?!151=20=E5=90=8E=E5=8F=B0=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=B7=BB=E5=8A=A0model=E5=92=8Cquantity=20=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9B=B4=E6=8E=A5=E4=BF=AE=E6=94=B9=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=9E=B6=E7=8A=B6=E6=80=81=20*=20cursor-pointer=20*?= =?UTF-8?q?=20admin=20products-list=20add=20switch=20to=20edit=20status=20?= =?UTF-8?q?*=20ProductResource=20add=20model=20and=20quantity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Admin/Http/Resources/ProductResource.php | 2 ++ .../admin/views/pages/products/index.blade.php | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/beike/Admin/Http/Resources/ProductResource.php b/beike/Admin/Http/Resources/ProductResource.php index b75a0cab..7e03794a 100644 --- a/beike/Admin/Http/Resources/ProductResource.php +++ b/beike/Admin/Http/Resources/ProductResource.php @@ -24,6 +24,8 @@ class ProductResource extends JsonResource return image_resize($image); }, $this->images ?? []), 'name' => $this->description->name ?? '', + 'model' => $masterSku->model, + 'quantity' => $masterSku->quantity, 'price_formatted' => currency_format($masterSku->price), 'active' => $this->active, 'position' => $this->position, diff --git a/resources/beike/admin/views/pages/products/index.blade.php b/resources/beike/admin/views/pages/products/index.blade.php index be35503d..472b618a 100644 --- a/resources/beike/admin/views/pages/products/index.blade.php +++ b/resources/beike/admin/views/pages/products/index.blade.php @@ -135,9 +135,9 @@ {{ $product['position'] }} @if ($type != 'trashed') - - {{ $product['active'] ? __('common.enable') : __('common.disable') }} - +
+ +
@endif @hook('admin.product.list.column_value') @@ -203,6 +203,17 @@ }, methods: { + turnOnOff() { + let id = event.currentTarget.getAttribute("data-id"); + let checked = event.currentTarget.getAttribute("data-active"); + let type = true; + if (checked) type = false; + $http.post('products/status', {ids: [id], status: type}).then((res) => { + layer.msg(res.message) + location.reload(); + }) + }, + batchDelete() { this.$confirm('{{ __('admin/product.confirm_batch_product') }}', '{{ __('common.text_hint') }}', { confirmButtonText: '{{ __('common.confirm') }}', From b3e70910ffda1e9386877397491f49ea57f43a23 Mon Sep 17 00:00:00 2001 From: pushuo Date: Fri, 14 Jul 2023 03:31:29 +0000 Subject: [PATCH 180/198] !152 Fix ThemeSeeder data error * wip * Fix ThemeSeeder data error --- database/seeders/ThemeSeeder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/database/seeders/ThemeSeeder.php b/database/seeders/ThemeSeeder.php index 94e5aeef..175550dd 100644 --- a/database/seeders/ThemeSeeder.php +++ b/database/seeders/ThemeSeeder.php @@ -870,6 +870,7 @@ class ThemeSeeder extends Seeder "zh_cn" => "", "en" => "" ], + "editableTabsValue" => "0", "tabs" => [ [ "title" => [ From 3063e764f9e1ef6b2e5bae0f2f5ea1afa428f23d Mon Sep 17 00:00:00 2001 From: mengwb Date: Fri, 14 Jul 2023 03:32:00 +0000 Subject: [PATCH 181/198] =?UTF-8?q?!153=20=E6=89=80=E6=9C=89model=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E7=BB=A7=E6=89=BFBASE=20*=20model=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=BB=A7=E6=89=BFBASE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- beike/Models/AdminUserToken.php | 3 +-- beike/Models/PageCategory.php | 3 +-- beike/Models/PageCategoryDescription.php | 3 +-- beike/Models/PageProduct.php | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/beike/Models/AdminUserToken.php b/beike/Models/AdminUserToken.php index af54b61a..e7275cd8 100644 --- a/beike/Models/AdminUserToken.php +++ b/beike/Models/AdminUserToken.php @@ -11,10 +11,9 @@ namespace Beike\Models; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -class AdminUserToken extends Model +class AdminUserToken extends Base { protected $fillable = ['admin_user_id', 'token']; diff --git a/beike/Models/PageCategory.php b/beike/Models/PageCategory.php index 1cda2999..aed3bd40 100644 --- a/beike/Models/PageCategory.php +++ b/beike/Models/PageCategory.php @@ -11,12 +11,11 @@ namespace Beike\Models; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; -class PageCategory extends Model +class PageCategory extends Base { protected $table = 'page_categories'; diff --git a/beike/Models/PageCategoryDescription.php b/beike/Models/PageCategoryDescription.php index cf51aa69..35f3f5e5 100644 --- a/beike/Models/PageCategoryDescription.php +++ b/beike/Models/PageCategoryDescription.php @@ -11,9 +11,8 @@ namespace Beike\Models; -use Illuminate\Database\Eloquent\Model; -class PageCategoryDescription extends Model +class PageCategoryDescription extends Base { protected $table = 'page_category_descriptions'; diff --git a/beike/Models/PageProduct.php b/beike/Models/PageProduct.php index 6c7f8f21..91ae1c3f 100644 --- a/beike/Models/PageProduct.php +++ b/beike/Models/PageProduct.php @@ -11,10 +11,9 @@ namespace Beike\Models; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -class PageProduct extends Model +class PageProduct extends Base { protected $table = 'page_products'; From e4e6601f21c1d513715c73229c421dfc53492910 Mon Sep 17 00:00:00 2001 From: pushuo Date: Fri, 14 Jul 2023 03:32:32 +0000 Subject: [PATCH 182/198] !154 Fix the error that the background product list image exceeds the display error * Fix the error that the background product list image exceeds the display error --- resources/beike/admin/views/pages/products/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/beike/admin/views/pages/products/index.blade.php b/resources/beike/admin/views/pages/products/index.blade.php index 472b618a..9325b39d 100644 --- a/resources/beike/admin/views/pages/products/index.blade.php +++ b/resources/beike/admin/views/pages/products/index.blade.php @@ -125,7 +125,7 @@ {{ $product['id'] }} -
+
{{ $product['name'] }} From 41ba00a3b39308047c59ebe3dd022b54a2fabd1f Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Fri, 14 Jul 2023 11:40:27 +0800 Subject: [PATCH 183/198] code format --- beike/Models/PageCategoryDescription.php | 1 - 1 file changed, 1 deletion(-) diff --git a/beike/Models/PageCategoryDescription.php b/beike/Models/PageCategoryDescription.php index 35f3f5e5..68dc3ad9 100644 --- a/beike/Models/PageCategoryDescription.php +++ b/beike/Models/PageCategoryDescription.php @@ -11,7 +11,6 @@ namespace Beike\Models; - class PageCategoryDescription extends Base { protected $table = 'page_category_descriptions'; From 8750c828f7031d7380c70ecfb0e743228edfbc7e Mon Sep 17 00:00:00 2001 From: pushuo Date: Tue, 18 Jul 2023 08:51:30 +0000 Subject: [PATCH 184/198] !155 Add hooks for cart and checkout page submit buttons * fixed license * add setting license_code * Add hooks for cart and checkout page submit buttons --- beike/Helpers.php | 19 ++++++ composer.json | 1 + composer.lock | 62 ++++++++++++++++++- database/seeders/ThemeSeeder.php | 4 +- .../beike/admin/views/pages/setting.blade.php | 1 + resources/lang/en/admin/setting.php | 1 + resources/lang/zh_cn/admin/setting.php | 1 + themes/default/cart/cart.blade.php | 2 + themes/default/checkout.blade.php | 2 + themes/default/layout/footer.blade.php | 5 +- themes/default/layout/master.blade.php | 2 +- 11 files changed, 95 insertions(+), 5 deletions(-) diff --git a/beike/Helpers.php b/beike/Helpers.php index d34d3d2d..fab99b18 100644 --- a/beike/Helpers.php +++ b/beike/Helpers.php @@ -747,3 +747,22 @@ function registry($key, $default = null): mixed { return \Beike\Libraries\Registry::get($key, $default); } + +/** + * Check domain ha license. + * 删除版权信息, 请先购买授权 https://beikeshop.com/vip/subscription + * + * @return bool + */ +function check_license(): bool +{ + $configLicenceCode = system_setting('base.license_code'); + $appDomain = config('app.url'); + $domain = new \Utopia\Domains\Domain($appDomain); + $registerDomain = $domain->getRegisterable(); + if (empty($registerDomain)) { + return true; + } + + return $configLicenceCode == md5(mb_substr(md5($registerDomain), 2, 8)); +} diff --git a/composer.json b/composer.json index 547a3eac..9d9b9ed9 100644 --- a/composer.json +++ b/composer.json @@ -32,6 +32,7 @@ "tymon/jwt-auth": "^2.0", "ultrono/laravel-sitemap": "^9.1", "unisharp/doc-us": "^1.3", + "utopia-php/domains": "^1.1", "zanysoft/laravel-zip": "^2.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 57825179..84900bfc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "dc9edf92dba52d6800988b3ed8a5a69c", + "content-hash": "ba15ba4e492561a63ba7811801fa71a5", "packages": [ { "name": "brick/math", @@ -7960,6 +7960,66 @@ }, "time": "2018-02-22T10:01:27+00:00" }, + { + "name": "utopia-php/domains", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/domains.git", + "reference": "1665e1d9932afa3be63b5c1e0dcfe01fe77d8e73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/domains/zipball/1665e1d9932afa3be63b5c1e0dcfe01fe77d8e73", + "reference": "1665e1d9932afa3be63b5c1e0dcfe01fe77d8e73", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Utopia\\Domains\\": "src/Domains" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eldad Fux", + "email": "eldad@appwrite.io" + } + ], + "description": "Utopia Domains library is simple and lite library for parsing web domains. This library is aiming to be as simple and easy to learn and use.", + "keywords": [ + "domains", + "framework", + "icann", + "php", + "public suffix", + "tld", + "tld extract", + "upf", + "utopia" + ], + "support": { + "issues": "https://github.com/utopia-php/domains/issues", + "source": "https://github.com/utopia-php/domains/tree/master" + }, + "time": "2020-02-23T07:40:02+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v5.4.1", diff --git a/database/seeders/ThemeSeeder.php b/database/seeders/ThemeSeeder.php index 175550dd..f0b33ed3 100644 --- a/database/seeders/ThemeSeeder.php +++ b/database/seeders/ThemeSeeder.php @@ -1175,8 +1175,8 @@ class ThemeSeeder extends Seeder ], "bottom" => [ "copyright" => [ - "en" => "
  - Chengdu Guangda Network Technology © 2023
", - "zh_cn" => "
  - 成都光大网络科技 © 2023
" + "en" => "
Chengdu Guangda Network Technology © 2023
", + "zh_cn" => "
成都光大网络科技 © 2023
" ], "image" => "catalog/demo/banner/pay_icons.png" ] diff --git a/resources/beike/admin/views/pages/setting.blade.php b/resources/beike/admin/views/pages/setting.blade.php index 5f0314e3..d938b3e6 100644 --- a/resources/beike/admin/views/pages/setting.blade.php +++ b/resources/beike/admin/views/pages/setting.blade.php @@ -44,6 +44,7 @@ + @hook('admin.setting.general.after')
diff --git a/resources/lang/en/admin/setting.php b/resources/lang/en/admin/setting.php index d0a7398e..96d3218e 100644 --- a/resources/lang/en/admin/setting.php +++ b/resources/lang/en/admin/setting.php @@ -75,4 +75,5 @@ return [ 'please_select' => 'Please select', 'multi_filter_helper' => 'Please select the attributes that need to be displayed in the filter area of the product list at the front desk, if left blank, all will be displayed', 'filter_attribute' => 'Attribute Filter', + 'license_code' => 'License Code', ]; diff --git a/resources/lang/zh_cn/admin/setting.php b/resources/lang/zh_cn/admin/setting.php index 13cd51ad..ea6a77f8 100644 --- a/resources/lang/zh_cn/admin/setting.php +++ b/resources/lang/zh_cn/admin/setting.php @@ -74,4 +74,5 @@ return [ 'please_select' => '请添加', 'multi_filter_helper' => '请选择需要在前台商品列表筛选区域显示的属性,留空则显示全部', 'filter_attribute' => '属性筛选', + 'license_code' => '授权码', ]; diff --git a/themes/default/cart/cart.blade.php b/themes/default/cart/cart.blade.php index 930125ce..5bc0b083 100644 --- a/themes/default/cart/cart.blade.php +++ b/themes/default/cart/cart.blade.php @@ -89,7 +89,9 @@
  • {{ __('shop/carts.selected') }}@{{ total_quantity }}
  • {{ __('shop/carts.product_total') }}@{{ amount_format }}
  • + @hookwrapper('cart.confirm') + @endhookwrapper
  • diff --git a/themes/default/checkout.blade.php b/themes/default/checkout.blade.php index 7298e507..1dcc9106 100644 --- a/themes/default/checkout.blade.php +++ b/themes/default/checkout.blade.php @@ -117,7 +117,9 @@ @endforeach
    + @hookwrapper('checkout.confirm') + @endhookwrapper
    @hook('checkout.total.footer') diff --git a/themes/default/layout/footer.blade.php b/themes/default/layout/footer.blade.php index 9290ca45..beda5ec0 100644 --- a/themes/default/layout/footer.blade.php +++ b/themes/default/layout/footer.blade.php @@ -85,7 +85,10 @@
    - Powered By BeikeShop  + + @if(!check_license()) + Powered By BeikeShop -  + @endif {!! $footer_content['bottom']['copyright'][$locale] ?? '' !!}
    diff --git a/themes/default/layout/master.blade.php b/themes/default/layout/master.blade.php index 2a46d482..1601ca59 100644 --- a/themes/default/layout/master.blade.php +++ b/themes/default/layout/master.blade.php @@ -5,7 +5,7 @@ - @yield('title', system_setting('base.meta_title', 'BeikeShop开源好用的跨境电商系统 - BeikeShop官网') . ' Powered By BeikeShop') + @yield('title', system_setting('base.meta_title', 'BeikeShop开源好用的跨境电商系统 - BeikeShop官网')) From def439de4dc793df20251dd6730ea258c6562013 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 18 Jul 2023 16:53:50 +0800 Subject: [PATCH 185/198] release v1.3.8 - 20230718 --- beike/Config/beike.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/beike/Config/beike.php b/beike/Config/beike.php index ff1feddd..ef111360 100644 --- a/beike/Config/beike.php +++ b/beike/Config/beike.php @@ -11,8 +11,8 @@ return [ 'api_url' => env('BEIKE_API_URL', 'https://beikeshop.com'), - 'version' => '1.3.7', - 'build' => '20230621', + 'version' => '1.3.8', + 'build' => '20230718', 'admin_name' => env('ADMIN_NAME'), 'force_url_https' => env('APP_FORCE_HTTPS', false), From a78d61e96e1ec184a20b9f6a372546a305deb269 Mon Sep 17 00:00:00 2001 From: pushuo Date: Tue, 18 Jul 2023 10:54:00 +0000 Subject: [PATCH 186/198] !156 Fix multiple tab_product module switching errors * Fix multiple tab_product module switching errors --- themes/default/design/tab_product.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/default/design/tab_product.blade.php b/themes/default/design/tab_product.blade.php index 423bb0a0..5fd73808 100644 --- a/themes/default/design/tab_product.blade.php +++ b/themes/default/design/tab_product.blade.php @@ -7,12 +7,12 @@ @if ($content['tabs'] ?? false)
    @foreach ($content['tabs'] as $key => $products) -
    +
    @if ($products['products']) @foreach ($products['products'] as $product) From a1ba2917f8bfbf074f48d691020c942f5c6f31d0 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 18 Jul 2023 19:35:48 +0800 Subject: [PATCH 187/198] Fixed category seo url on category - product list page. --- beike/Shop/Http/Resources/CategoryDetail.php | 2 +- themes/default/shared/filter_sidebar_block.blade.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/beike/Shop/Http/Resources/CategoryDetail.php b/beike/Shop/Http/Resources/CategoryDetail.php index 3d98ddf6..33c57f65 100644 --- a/beike/Shop/Http/Resources/CategoryDetail.php +++ b/beike/Shop/Http/Resources/CategoryDetail.php @@ -18,7 +18,7 @@ class CategoryDetail extends JsonResource $item = [ 'id' => $this->id, 'name' => $this->description->name ?? '', - 'url' => shop_route('categories.show', ['category' => $this]), + 'url' => $this->url, ]; if ($this->relationLoaded('activeChildren') && $this->activeChildren->count() > 0) { diff --git a/themes/default/shared/filter_sidebar_block.blade.php b/themes/default/shared/filter_sidebar_block.blade.php index 39463ca9..f20355a9 100644 --- a/themes/default/shared/filter_sidebar_block.blade.php +++ b/themes/default/shared/filter_sidebar_block.blade.php @@ -3,13 +3,13 @@