diff --git a/.env.example b/.env.example index 945da88e..cfc6f096 100644 --- a/.env.example +++ b/.env.example @@ -55,9 +55,3 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - - -# 前端热更新, PROXY: vhost or path, HOST: 多设备实时 -MIX_PROXY=beikeshop.test -MIX_HOST=192.168.0.122 - diff --git a/beike/Admin/Http/Controllers/ProductController.php b/beike/Admin/Http/Controllers/ProductController.php index ecc3bfc3..47212a3d 100644 --- a/beike/Admin/Http/Controllers/ProductController.php +++ b/beike/Admin/Http/Controllers/ProductController.php @@ -21,6 +21,9 @@ class ProductController extends Controller public function index(Request $request) { $requestData = $request->all(); + if (!isset($requestData['sort'])) { + $requestData['sort'] = 'products.updated_at'; + } $productList = ProductRepo::list($requestData); $products = ProductResource::collection($productList); $productsFormat = $products->jsonSerialize(); diff --git a/beike/Admin/Services/ProductService.php b/beike/Admin/Services/ProductService.php index 9ffcf3ac..93c5592c 100644 --- a/beike/Admin/Services/ProductService.php +++ b/beike/Admin/Services/ProductService.php @@ -29,6 +29,7 @@ class ProductService $data['brand_id'] = (int) $data['brand_id']; $data['variables'] = json_decode($data['variables']); $product->fill($data); + $product->updated_at = now(); $product->save(); if ($isUpdating) { diff --git a/beike/Repositories/LanguageRepo.php b/beike/Repositories/LanguageRepo.php index e907fb30..033d8ed1 100644 --- a/beike/Repositories/LanguageRepo.php +++ b/beike/Repositories/LanguageRepo.php @@ -98,6 +98,6 @@ class LanguageRepo */ public static function enabled() { - return Language::query()->where('status', true)->get(); + return Language::query()->where('status', true)->orderBy('sort_order', 'asc')->get(); } } diff --git a/beike/Repositories/OrderRepo.php b/beike/Repositories/OrderRepo.php index 574ae757..51df9bb7 100644 --- a/beike/Repositories/OrderRepo.php +++ b/beike/Repositories/OrderRepo.php @@ -199,17 +199,16 @@ class OrderRepo $shippingAddress = Address::query()->findOrFail($shippingAddressId); $paymentAddress = Address::query()->findOrFail($paymentAddressId); - - $shippingAddress->country = $shippingAddress->country->name ?? ''; - $shippingAddress->country_id = $shippingAddress->country->id ?? 0; - $paymentAddress->country = $paymentAddress->country->name ?? ''; - $paymentAddress->country_id = $paymentAddress->country->id ?? 0; - $email = $customer->email; + $email = $customer->email; } else { $shippingAddress = new Address($current['guest_shipping_address'] ?? []); $paymentAddress = new Address($current['guest_payment_address'] ?? []); $email = $current['guest_shipping_address']['email']; } + $shippingAddress->country = $shippingAddress->country->name ?? ''; + $shippingAddress->country_id = $shippingAddress->country->id ?? 0; + $paymentAddress->country = $paymentAddress->country->name ?? ''; + $paymentAddress->country_id = $paymentAddress->country->id ?? 0; $shippingMethodCode = $current['shipping_method_code'] ?? ''; $paymentMethodCode = $current['payment_method_code'] ?? ''; diff --git a/beike/Repositories/ProductRepo.php b/beike/Repositories/ProductRepo.php index 34d4582b..c1fe771c 100644 --- a/beike/Repositories/ProductRepo.php +++ b/beike/Repositories/ProductRepo.php @@ -115,7 +115,7 @@ class ProductRepo $builder->orderByRaw("FIELD(products.id, {$productIds})"); } - // attr 格式:attr=10:10/13|11:34/23|3:4 + // attr 格式:attr=10:10,13|11:34,23|3:4 if (isset($data['attr']) && $data['attr']) { $attributes = self::parseFilterParamsAttr($data['attr']); foreach ($attributes as $attribute) { @@ -190,7 +190,7 @@ class ProductRepo return [ 'attr' => $itemArr[0], - 'value' => explode('/', $itemArr[1]), + 'value' => explode(',', $itemArr[1]), ]; }, $attributes); @@ -199,7 +199,7 @@ class ProductRepo public static function getFilterAttribute($data): array { - $builder = self::getBuilder($data) + $builder = self::getBuilder(array_diff_key($data, ['attr'=>'', 'price'=>''])) ->select(['pa.attribute_id', 'pa.attribute_value_id']) ->with(['attributes.attribute.description', 'attributes.attribute_value.description']) ->leftJoin('product_attributes as pa', 'pa.product_id', 'products.id') diff --git a/beike/Services/ImageService.php b/beike/Services/ImageService.php index ee28034f..0be0345c 100644 --- a/beike/Services/ImageService.php +++ b/beike/Services/ImageService.php @@ -28,9 +28,9 @@ class ImageService */ public function __construct($image) { + $this->placeholderImage = system_setting('base.placeholder'); $this->image = $image ?: $this->placeholderImage; $this->imagePath = public_path($this->image); - $this->placeholderImage = system_setting('base.placeholder'); } /** diff --git a/beike/Shop/Http/Controllers/CheckoutController.php b/beike/Shop/Http/Controllers/CheckoutController.php index d272051a..547beb58 100644 --- a/beike/Shop/Http/Controllers/CheckoutController.php +++ b/beike/Shop/Http/Controllers/CheckoutController.php @@ -13,6 +13,7 @@ namespace Beike\Shop\Http\Controllers; use Beike\Shop\Services\CheckoutService; use Illuminate\Http\Request; +use Beike\Repositories\OrderRepo; class CheckoutController extends Controller { @@ -59,4 +60,15 @@ class CheckoutController extends Controller return hook_filter('checkout.confirm.data', $data); } + + public function success() + { + $order_number = request('order_number'); + + $customer = current_customer(); + $order = OrderRepo::getOrderByNumber($order_number, $customer); + $data = hook_filter('account.order.show.data', ['order' => $order, 'html_items' => []]); + + return view('checkout/success', $data); + } } diff --git a/beike/Shop/Http/Controllers/PageCategoryController.php b/beike/Shop/Http/Controllers/PageCategoryController.php index ded934a0..d02cb19b 100644 --- a/beike/Shop/Http/Controllers/PageCategoryController.php +++ b/beike/Shop/Http/Controllers/PageCategoryController.php @@ -43,7 +43,7 @@ class PageCategoryController extends Controller 'category' => new PageCategoryDetail($pageCategory), 'active_page_categories' => PageCategoryRepo::getActiveList(), 'breadcrumb' => $breadCrumb, - 'category_pages' => $pageCategory->pages()->paginate(perPage()), + 'category_pages' => $pageCategory->pages()->paginate(12), ]; return view('page_categories/show', $data); diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index 7e5199b1..2c9f1c2f 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -78,6 +78,7 @@ Route::prefix('/') Route::get('checkout', [CheckoutController::class, 'index'])->name('checkout.index'); Route::put('checkout', [CheckoutController::class, 'update'])->name('checkout.update'); + Route::get('checkout/success', [CheckoutController::class, 'success'])->name('checkout.success'); Route::post('checkout/confirm', [CheckoutController::class, 'confirm'])->name('checkout.confirm'); Route::get('orders/{number}/success', [OrderController::class, 'success'])->name('orders.success'); Route::get('orders/{number}/pay', [OrderController::class, 'pay'])->name('orders.pay'); diff --git a/beike/Shop/Services/CheckoutService.php b/beike/Shop/Services/CheckoutService.php index 2624e943..1b052416 100644 --- a/beike/Shop/Services/CheckoutService.php +++ b/beike/Shop/Services/CheckoutService.php @@ -141,7 +141,7 @@ class CheckoutService $weight = 0; $selectedProducts = $this->selectedProducts; foreach ($selectedProducts as $product) { - $weight += Weight::convert($product->product['weight'], $product->product['weight_class']); + $weight += Weight::convert($product->product['weight'] * $product['quantity'], $product->product['weight_class']); } return $weight; @@ -244,7 +244,8 @@ class CheckoutService $shipmentCodes = array_merge($shipmentCodes, array_column($shipment['quotes'], 'code')); } if (!in_array($currentCart->shipping_method_code, $shipmentCodes)) { - $this->updateShippingMethod($shipmentCodes[0]); + $this->updateShippingMethod($shipmentCodes[0] ?? ''); + $this->totalService->setShippingMethod($shipmentCodes[0] ?? ''); } $data = [ diff --git a/plugins/Paypal/Views/checkout/payment.blade.php b/plugins/Paypal/Views/checkout/payment.blade.php index faa7f890..58bb8523 100644 --- a/plugins/Paypal/Views/checkout/payment.blade.php +++ b/plugins/Paypal/Views/checkout/payment.blade.php @@ -61,7 +61,11 @@ console.log('Capture result', orderData, JSON.stringify(orderData, null, 2)); let captureStatus = orderData.status if (captureStatus === 'COMPLETED') { - window.location.href = "{{ shop_route('account.order.show', $order->number) }}" + @if (current_customer()) + window.location.href = "{{ shop_route('account.order.show', $order->number) }}" + @else + location = "{{ shop_route('checkout.success', ['order_number' => $order->number]) }}" + @endif } }); } diff --git a/resources/beike/admin/css/_marketing.scss b/resources/beike/admin/css/_marketing.scss index c9fc33d7..4f5b57d0 100644 --- a/resources/beike/admin/css/_marketing.scss +++ b/resources/beike/admin/css/_marketing.scss @@ -12,6 +12,13 @@ body.page-marketing { .marketing-item { box-shadow: none; border: 1px solid #eee; + transition: .3s ease-in-out; + + &:hover { + // border-color: $primary; + margin-top: -5px; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); + } .plugin-img { margin: -1rem -1rem 0 -1rem; diff --git a/resources/beike/admin/js/common.js b/resources/beike/admin/js/common.js index 9ebda4d9..7621119c 100644 --- a/resources/beike/admin/js/common.js +++ b/resources/beike/admin/js/common.js @@ -3,7 +3,7 @@ * @link https://beikeshop.com * @Author pu shuo * @Date 2022-08-22 18:32:26 - * @LastEditTime 2023-02-17 17:57:40 + * @LastEditTime 2023-03-30 17:30:08 */ export default { @@ -129,22 +129,29 @@ export default { // 设置vip更新提示 vipUpdateTips() { - const data = JSON.parse(Cookies.get('beike_vip') || null); + let data = JSON.parse(Cookies.get('beike_vip') || null); + const isHome = document.body.classList.contains('admin-home'); - if (data) { + if (!data || isHome) { + $http.get(`${config.api_url}/api/vip?domain=${config.app_url}`, null, {hload: true}).then((res) => { + setVipUi(res) + Cookies.set('beike_vip', res, { expires: 1 }); + }) + } + + setVipUi(data) + + function setVipUi(data) { if (data.vip) { $('.vip-serve').addClass('active'); if (data.expiring) { $('.vip-serve .expired-text').show().find('span').text(data.expired_at); } + } else { + $('.vip-serve').removeClass('active'); + $('.vip-serve .expired-text').hide(); } - } else { - $http.get(`${config.api_url}/api/vip?domain=${config.app_url}`, null, {hload: true}).then((res) => { - Cookies.set('beike_vip', res, { expires: 1 }); - - bk.vipUpdateTips(); - }) } }, } \ No newline at end of file diff --git a/resources/beike/admin/views/pages/home.blade.php b/resources/beike/admin/views/pages/home.blade.php index 1d7de14a..50226a89 100644 --- a/resources/beike/admin/views/pages/home.blade.php +++ b/resources/beike/admin/views/pages/home.blade.php @@ -2,6 +2,8 @@ @section('title', __('admin/common.admin_panel')) +@section('body-class', 'admin-home') + @push('header') @endpush diff --git a/resources/beike/admin/views/pages/orders/form.blade.php b/resources/beike/admin/views/pages/orders/form.blade.php index 9e9fcc7e..16ef90e3 100644 --- a/resources/beike/admin/views/pages/orders/form.blade.php +++ b/resources/beike/admin/views/pages/orders/form.blade.php @@ -68,7 +68,7 @@
{{ __('order.address_info') }}
- +
diff --git a/resources/beike/admin/views/pages/pages/form.blade.php b/resources/beike/admin/views/pages/pages/form.blade.php index 6c60e6b6..1d03a64b 100644 --- a/resources/beike/admin/views/pages/pages/form.blade.php +++ b/resources/beike/admin/views/pages/pages/form.blade.php @@ -5,8 +5,6 @@ @section('body-class', 'page-pages-form') @push('header') - - @endpush @@ -17,7 +15,6 @@ @endsection @section('content') -
{{ __('order.shipping_address') }}