bjerke/laravel-headless-ecommerce

dev-master 2021-03-07 14:22 UTC

This package is auto-updated.

Last update: 2024-09-07 22:38:58 UTC


README

Laravel的免头电商包。

安装

composer require bjerke/laravel-headless-ecommerce

发布并运行迁移

php artisan vendor:publish --tag="ecommerce.migrations"
php artisan migrate

如果您想更改默认配置

php artisan vendor:publish --tag="ecommerce.config"

如果您想更改包含的语言文件

php artisan vendor:publish --tag="ecommerce.lang"

扩展模型的功能

此包使用的所有模型都可以用您自己的版本替换。只需扩展原始版本,并在配置文件中配置您的模型类。

产品

- Product types
- Laravel Scout
    - Searching, default driver, disabling (driver = null)
- Laravel Media Library
    - Images
    - Files
- Laravel Translatable
- Laravel Sluggable

变体

- Variation syncing

价格

- MoneyPHP
- VAT
- Optinally sync prices against exchange rate by running the SynPrices job on schedule (otherwise it will only update if the base price changes)

促销

库存

- Multiple stock types / stores (web, shops etc)
- Current stock / Incoming stock / Outgoing stock
- Low stock event
- Optional schedule to remove old stock logs

类别

- Laravel Nested Set

属性

商店

品牌

购物车

- Optional schedule to keep track of expired carts
- Optional schedule to remove expired carts

订单

订单日志

- Optional schedule to remove old order logs
- Optional schedule to remove old payment logs

配送

支付

- Omnipay

翻译

- Laravel Translatable

命令

这些是您可以添加到计划中以便自动运行某些操作的命令。

  • ecommerce:clean-abandoned-carts - 检查过期购物车并删除它们(建议每天运行一次)
  • ecommerce:check-expiring-carts - 触发即将过期的购物车事件(建议每天运行一次)
  • ecommerce:clean-order-logs - 删除比配置 ecommerce.orders.log_ttl 旧的订单日志(建议每天运行一次)
  • ecommerce:clean-stock-logs - 删除比配置 ecommerce.stock.log_ttl 旧的库存日志(建议每天运行一次)
  • ecommerce:clean-payment-logs - 删除比配置 ecommerce.payment.log_ttl 旧的支付日志(建议每天运行一次)

事件

  • CartExpiring
    • 当购物车即将过期时(如果设置了 ecommerce:check-expiring-carts 的计划),将触发此事件。这可以用于向客户发送通知,让他们回来完成购买。
    • 请注意,这些可以针对同一购物车触发多次。如果您正在发送通知,您可能需要检查是否已经发送了此通知,以避免向客户发送垃圾邮件。
  • LowStock
    • 在更新库存后达到低库存阈值时将触发此事件。
    • 请注意,这些可以针对同一购物车触发多次。您可能需要跟踪是否已经对此事件采取过行动。

路由

要查看所有已注册的路由,请运行

php artisan route:list

您可以通过两种不同的方式覆盖路由。第一种方式是编写自己的控制器,扩展原始控制器,然后在配置文件中配置该控制器(类似于模型的配置)。第二种方式是发布路由文件。

php artisan vendor:publish --tag="ecommerce.routes"

这将完全解耦包内的路由文件。现在您可以自由地更改任何内容。但请注意,未来对路由文件的任何更新都必须手动迁移到您的自定义文件。

还有一些关于路由的配置选项,例如要使用的前缀、默认全局中间件以及要使用的身份验证中间件。您可以通过查看此包的配置文件来更详细地了解可以更改的内容。

身份验证和授权

默认的身份验证中间件,要求登录用户是 auth:api。您可以在配置文件中配置此设置。

我们还使用 can 中间件,以禁止未经授权访问非公开端点。您可以使用类似 Bouncer 或 Spatie Laravel Permission 的包来处理权限,或者定义自己的 Gates & Policies。

使用的权限

  • manage-products
  • manage-brands
  • manage-categories
  • manage-deals
  • manage-prices
  • manage-orders
  • manage-prices
  • manage-properties
  • manage-shipping-methods
  • manage-stocks
  • manage-stores

客户/用户

此包不提供处理客户或登录用户的逻辑。这由实现应用程序添加。例如,您可能想向订单表添加一个 user_id 列,以便将其链接到用户账户。只需发布迁移后更改迁移,然后扩展适当的模型/观察者/控制器来处理此新列。

禁用 Scout

您可以通过在 .env 文件中定义以下内容来禁用自动 Scout 集成

ECOMMERCE_USE_SCOUT=false
SCOUT_DRIVER=null

要求

  • PHP 7.4+
  • 可标记的缓存存储(如 redis、memchached 等)
  • 支持 JSON 列类型的 SQL 数据库
  • Intl 扩展
  • 运行中的队列工作者

使用的包

改进想法

带问号的点可能与此包范围不相关

  • 促销
    • 折扣码
    • 礼品卡
    • 捆绑(?)
  • 更多产品类型
    • 数字内容
    • 订阅
    • 预购
    • 可配置产品
  • 更多媒体类型
    • 视频(?)
  • 即时库存
  • 在购物车中添加时可选地预留库存
  • 愿望单(?)
  • 收藏夹(?)
  • 评论/评分(?)
  • 购物车
    • 在购物车中添加时可选地预留库存
  • 更多配送定价替代方案
    • 动态(根据订购的产品计算)
    • 层?
    • 订单价值超过 X 时的免费配送?
  • 产品促销,交叉销售
  • 供应商
    • 采购
  • POS 功能(?)
  • Prisjakt/Pricerunner 集成 - 隔离包
  • Facebook / Instagram 购物(?)- 隔离包
  • Google 购物(?)- 隔离包
  • Webhooks(?)
  • 统计信息(?)
  • 导入/导出产品(?)