Escola 无头 LMS 购物车

维护者

详细信息

github.com/EscolaLMS/Cart

源代码

问题

安装: 2

依赖: 0

建议者: 0

安全: 0

星星: 2

关注者: 2

分支: 0

开放问题: 0

类型:package

0.4.78 2024-05-07 14:40 UTC

README

swagger codecov phpunit downloads downloads downloads Maintainability Mutation testing badge

目的

此软件包允许您管理用户购物车,并定义什么是可购买的产品(以及什么是产品,即可销售的东西),然后可以添加到购物车中。此软件包还允许您的用户创建订单并购买购物车中的内容。

安装

  • composer require escolalms/cart
  • php artisan migrate
  • php artisan db:seed --class="EscolaLms\Cart\Database\Seeders\CartPermissionSeeder"

依赖关系

此软件包依赖于EscolaLms/Payments软件包来创建和处理订单的支付。

用法

产品

EscolaLms\Cart\Models\Product是一个表示可以添加到购物车并购买的具体购买物品的抽象模型。产品本身除了可以购买和分配给用户外,没有其他功能。

产品由一个(单类型产品)或多个(捆绑类型产品)产品组成 - 这是指代表在您的(LMS)应用程序中销售的具体物品的模型,例如课程。产品必须实现Productable接口。

产品可购买

EscolaLms\Cart\Contracts\Productable接口定义了表示可销售物品的模型如何表现以及它们必须包含哪些方法和关系。

定义产品可购买

要创建(并销售)产品,您需要定义产品可购买。产品可购买是一个实现了EscolaLms\Cart\Models\Contracts接口的模型(并可能使用EscolaLms\Cart\Contracts\ProductableTrait)。在将此接口添加到您的模型后,您需要在Service Providers的boot方法中调用EscolaLms\Cart\Facades\Shop::registerProductableClass(Productable::class)。这将使您可以使用此产品可购买模型作为(产品的一部分)然后可以销售。

商店外观

商店外观包装EscolaLms\Cart\Services\ProductService,提供与注册产品可购买和管理产品相关的方法。

购物车模型

EscolaLms\Cart\Models\Cart是一个表示用户购物车的模型。每个用户在给定时间可以有一个活动的(现有)购物车。

要为给定的用户创建购物车(或检索当前活动的购物车),您需要调用EscolaLms\Cart\Services\ShopService::cartForUser($user)方法。

购物车管理器

购物车及其内容是通过附加到该购物车的EscolaLms\Cart\Services\CartManager类实例来管理的,而不是直接操作购物车对象。CartManagerEscolaLms\Cart\Services\ShopService使用(您可能不需要直接使用它,因为ShopService中的方法代表了所有合理的使用案例)。

商店服务

商店服务包含与购物车内容管理(添加/删除产品)以及购买购物车(将购物车数据存储为订单并处理支付流程)相关的功能。

端点

所有端点都在swagger中定义。

测试

运行./vendor/bin/phpunit以运行测试。查看tests目录,因为它是一个很好的起点,可以了解此软件包的工作原理。特别是注意tests/Mocks目录,因为它代表了产品可购买和使用产品特征及接口的核心概念。

测试详情 codecov phpunit

事件

  • EscolaLms\Cart\Events\AbandonedCartEvent - 当计划任务找到一个24小时以上的非空购物车时触发
  • EscolaLms\Cart\Events\OrderCancelled - 在支付处理取消后触发,将订单标记为已取消
  • EscolaLms\Cart\Events\OrderCreated - 创建新订单时触发
  • EscolaLms\Cart\Events\OrderPaid - 订单付款后触发
  • EscolaLms\Cart\Events\ProductableAttached - 将可产品附加到用户后触发(例如,在包含该可产品的产品附加到用户后,或使用管理端点管理可产品附加时)
  • EscolaLms\Cart\Events\ProductableDetached - 与ProductableAttached类似
  • EscolaLms\Cart\Events\ProductAddedToCart - 产品添加到购物车时触发
  • EscolaLms\Cart\Events\ProductAttached - 产品附加到用户时触发(在购买产品或使用管理端点添加产品后)
  • EscolaLms\Cart\Events\ProductBought - 用户购买产品后触发
  • EscolaLms\Cart\Events\ProductDetached - 与ProductAttached类似
  • EscolaLms\Cart\Events\ProductRemovedFromCart - 与ProductAdded类似

监听器

  • EscolaLms\Cart\Listeners\PaymentSuccessListener - 此监听器在为给定订单创建的支付被标记为已付款后处理将订单标记为已付款(监听EscolaLms\Payments\Events\PaymentSuccess事件)

如何在前端使用此功能

管理面板

左侧菜单

Admin panel menu

产品列表

List of Products

创建/编辑产品

Creating/editing Product

订单列表

List of Orders

订单详情

Details of Order

权限

权限在枚举中定义,并在播种器中初始化。

路线图。待办事项。故障排除

  • ???