diff --git a/beike/Repositories/CartRepo.php b/beike/Repositories/CartRepo.php index fed1576d..716c4741 100644 --- a/beike/Repositories/CartRepo.php +++ b/beike/Repositories/CartRepo.php @@ -42,15 +42,15 @@ class CartRepo $cart = Cart::query()->create([ 'customer_id' => $customerId, 'shipping_address_id' => $defaultAddressId, - 'shipping_method_code' => $shippingMethod->code, + 'shipping_method_code' => $shippingMethod->code ?? '', 'payment_address_id' => $defaultAddressId, - 'payment_method_code' => $paymentMethod->code + 'payment_method_code' => $paymentMethod->code ?? '' ]); } else { - if ($cart->shipping_address_id == 0) { + if ($cart->shipping_address_id == 0 || empty(AddressRepo::find($cart->shipping_address_id))) { $cart->shipping_address_id = $defaultAddressId; } - if ($cart->payment_address_id == 0) { + if ($cart->payment_address_id == 0 || empty(AddressRepo::find($cart->payment_address_id))) { $cart->payment_address_id = $defaultAddressId; } $cart->save(); diff --git a/beike/Repositories/PluginRepo.php b/beike/Repositories/PluginRepo.php index cfb48915..30946e39 100644 --- a/beike/Repositories/PluginRepo.php +++ b/beike/Repositories/PluginRepo.php @@ -157,4 +157,30 @@ class PluginRepo return $plugin && $plugin->getEnabled(); }); } + + + /** + * 检测对应配送方式是否可用 + * + * @param $code + * @return bool + */ + public static function shippingEnabled($code): bool + { + $shippingMethods = self::getShippingMethods(); + return $shippingMethods->where('code', $code)->count() > 0; + } + + + /** + * 检测对应支付方式是否可用 + * + * @param $code + * @return bool + */ + public static function paymentEnabled($code): bool + { + $paymentMethods = self::getPaymentMethods(); + return $paymentMethods->where('code', $code)->count() > 0; + } } diff --git a/beike/Shop/Http/Controllers/Account/OrderController.php b/beike/Shop/Http/Controllers/Account/OrderController.php index e1d49dc7..3969c274 100644 --- a/beike/Shop/Http/Controllers/Account/OrderController.php +++ b/beike/Shop/Http/Controllers/Account/OrderController.php @@ -96,6 +96,9 @@ class OrderController extends Controller { $customer = current_customer(); $order = OrderRepo::getOrderByNumber($number, $customer); + if (empty($order)) { + throw new \Exception('无效的订单'); + } StateMachineService::getInstance($order)->changeStatus(StateMachineService::COMPLETED); return json_success(trans('shop/account.order_completed')); } diff --git a/beike/Shop/Http/Controllers/CheckoutController.php b/beike/Shop/Http/Controllers/CheckoutController.php index 09d3e3a8..0794cdd0 100644 --- a/beike/Shop/Http/Controllers/CheckoutController.php +++ b/beike/Shop/Http/Controllers/CheckoutController.php @@ -53,10 +53,6 @@ class CheckoutController extends Controller */ public function confirm() { - try { - return (new CheckoutService)->confirm(); - } catch (\Exception $e) { - return json_fail($e->getMessage()); - } + return (new CheckoutService)->confirm(); } } diff --git a/beike/Shop/Services/CartService.php b/beike/Shop/Services/CartService.php index 35698434..722c600d 100644 --- a/beike/Shop/Services/CartService.php +++ b/beike/Shop/Services/CartService.php @@ -11,9 +11,9 @@ namespace Beike\Shop\Services; -use Beike\Repositories\CartRepo; use Exception; use Beike\Models\CartProduct; +use Beike\Repositories\CartRepo; use Beike\Shop\Http\Resources\CartDetail; class CartService @@ -116,6 +116,12 @@ class CartService } + /** + * 删除购物车商品 + * + * @param $customer + * @param $cartId + */ public static function delete($customer, $cartId) { if (empty($cartId)) { @@ -149,6 +155,6 @@ class CartService 'amount' => $amount, 'amount_format' => currency_format($amount), ]; - return $data; + return hook_filter('cart.data', $data); } } diff --git a/beike/Shop/Services/CheckoutService.php b/beike/Shop/Services/CheckoutService.php index 922d5db3..e1a8b6e7 100644 --- a/beike/Shop/Services/CheckoutService.php +++ b/beike/Shop/Services/CheckoutService.php @@ -12,6 +12,7 @@ namespace Beike\Shop\Services; use Beike\Models\Order; +use Beike\Models\Address; use Beike\Models\Customer; use Beike\Repositories\CartRepo; use Beike\Repositories\OrderRepo; @@ -88,6 +89,7 @@ class CheckoutService $customer = current_customer(); $checkoutData = self::checkoutData(); $checkoutData['customer'] = $customer; + $this->validateConfirm($checkoutData); try { DB::beginTransaction(); @@ -102,6 +104,35 @@ class CheckoutService } + /** + * @throws \Exception + */ + private function validateConfirm($checkoutData) + { + $current = $checkoutData['current']; + + $shippingAddressId = $current['shipping_address_id']; + if (empty(Address::query()->find($shippingAddressId))) { + throw new \Exception('配送地址无效'); + } + + $paymentAddressId = $current['payment_address_id']; + if (empty(Address::query()->find($paymentAddressId))) { + throw new \Exception('账单地址无效'); + } + + $shippingMethodCode = $current['shipping_method_code']; + if (!PluginRepo::shippingEnabled($shippingMethodCode)) { + throw new \Exception('配送方式不可用'); + } + + $paymentMethodCode = $current['payment_method_code']; + if (!PluginRepo::paymentEnabled($paymentMethodCode)) { + throw new \Exception('支付方式不可用'); + } + } + + private function updateShippingAddressId($shippingAddressId) { $this->cart->update(['shipping_address_id' => $shippingAddressId]); diff --git a/resources/beike/admin/views/pages/currencies/index.blade.php b/resources/beike/admin/views/pages/currencies/index.blade.php index 02f18feb..54737ad1 100644 --- a/resources/beike/admin/views/pages/currencies/index.blade.php +++ b/resources/beike/admin/views/pages/currencies/index.blade.php @@ -59,15 +59,15 @@ - + - + - + diff --git a/resources/beike/admin/views/pages/customers/form.blade.php b/resources/beike/admin/views/pages/customers/form.blade.php index cfab7651..4e946271 100644 --- a/resources/beike/admin/views/pages/customers/form.blade.php +++ b/resources/beike/admin/views/pages/customers/form.blade.php @@ -41,18 +41,16 @@ # 名称 电话 - 注册来源 - 状态 + 创建时间 操作 - @{{ index }} + @{{ index + 1}} @{{ address.name }} @{{ address.phone }} - 222 - 222 + @{{ address.created_at }} @@ -283,6 +281,8 @@ closeAddressDialog(form) { this.$refs[form].resetFields(); + Object.keys(this.dialogAddress.form).forEach(key => this.dialogAddress.form[key] = '') + this.dialogAddress.form.country_id = @json((int)system_setting('base.country_id')); this.dialogAddress.show = false this.dialogAddress.index = null; }, diff --git a/resources/beike/admin/views/pages/customers/index.blade.php b/resources/beike/admin/views/pages/customers/index.blade.php index d271aaf4..ce64bedb 100644 --- a/resources/beike/admin/views/pages/customers/index.blade.php +++ b/resources/beike/admin/views/pages/customers/index.blade.php @@ -143,7 +143,7 @@ $http.post('customers', this.dialogCustomers.form).then((res) => { this.$message.success(res.message); - this.customers.push(res.data); + this.loadData();// this.customers.data.push(res.data); this.dialogCustomers.show = false }) }); diff --git a/resources/beike/admin/views/pages/orders/form.blade.php b/resources/beike/admin/views/pages/orders/form.blade.php index 6e00db22..68f5f248 100644 --- a/resources/beike/admin/views/pages/orders/form.blade.php +++ b/resources/beike/admin/views/pages/orders/form.blade.php @@ -162,7 +162,7 @@ }, rules: { - status: [{required: true, message: '请输入用户名', trigger: 'blur'}, ], + status: [{required: true, message: '请选择状态', trigger: 'blur'}, ], } }, diff --git a/resources/beike/admin/views/pages/plugins/index.blade.php b/resources/beike/admin/views/pages/plugins/index.blade.php index c42b2ae7..5296a811 100644 --- a/resources/beike/admin/views/pages/plugins/index.blade.php +++ b/resources/beike/admin/views/pages/plugins/index.blade.php @@ -41,7 +41,7 @@ - +
@@ -74,12 +74,14 @@ }, methods: { - pluginStatusChange(e, code) { + pluginStatusChange(e, code, index) { const self = this; $http.put(`plugins/${code}/status`, {status: e * 1}).then((res) => { layer.msg(res.message) - }) + }).catch((res) => { + this.plugins[index].status = !this.plugins[index].status; + }); }, uploadFile(file) { diff --git a/resources/beike/admin/views/pages/setting.blade.php b/resources/beike/admin/views/pages/setting.blade.php index 6279c34d..eca344ad 100644 --- a/resources/beike/admin/views/pages/setting.blade.php +++ b/resources/beike/admin/views/pages/setting.blade.php @@ -83,7 +83,7 @@
网站前台显示 380*100
- +
显示在浏览器选项卡上的小图标,必须为PNG格式大小为:32*32
diff --git a/resources/lang/en/admin/plugin.php b/resources/lang/en/admin/plugin.php index c838e64e..0be4469c 100644 --- a/resources/lang/en/admin/plugin.php +++ b/resources/lang/en/admin/plugin.php @@ -14,7 +14,7 @@ return [ 'plugins_import' => 'Import', 'plugins_show' => 'Detail', 'plugins_update' => 'Update', - 'plugins_update_status' => 'Delete', + 'plugins_update_status' => 'Update Status', 'plugins_install' => 'Install', 'plugins_uninstall' => 'Uninstall', diff --git a/resources/lang/zh_cn/admin/plugin.php b/resources/lang/zh_cn/admin/plugin.php index 02a388d8..29d9c69e 100644 --- a/resources/lang/zh_cn/admin/plugin.php +++ b/resources/lang/zh_cn/admin/plugin.php @@ -14,7 +14,7 @@ return [ 'plugins_import' => '上传插件', 'plugins_show' => '插件详情', 'plugins_update' => '插件更新', - 'plugins_update_status' => '删除插件', + 'plugins_update_status' => '更新状态', 'plugins_install' => '安装', 'plugins_uninstall' => '卸载', diff --git a/themes/default/account/account.blade.php b/themes/default/account/account.blade.php index a4d4bda0..ddcab493 100644 --- a/themes/default/account/account.blade.php +++ b/themes/default/account/account.blade.php @@ -54,7 +54,7 @@ class="text-muted">{{ __('shop/account.after_sales') }}
- @if (!$latest_orders) + @if (!count($latest_orders))
{{ __('shop/account.no_order') }}{{ __('shop/account.to_buy') }}
diff --git a/themes/default/account/order_info.blade.php b/themes/default/account/order_info.blade.php index 56cddb90..a26a067e 100644 --- a/themes/default/account/order_info.blade.php +++ b/themes/default/account/order_info.blade.php @@ -147,7 +147,7 @@ @push('add-scripts')