本人开发了一款商店插件,目前在github中开源,其中商品实现依赖于其他插件能力,也就是说可以通过开发新的插件来丰富商店的功能。有兴趣的朋友可以尝试帮我写点商品出来。
flarum-ext-store
Installation
Install with composer:
composer require mattoid/flarum-ext-store:"*"
Updating
composer update mattoid/flarum-ext-store:"*"
php flarum migrate
php flarum cache:clear
下面是商品插件的注意事项
帮助
注册商品事件
(new StoreExtend('商品的唯一KEY,不可与其他拓展重复'))
// 注册商品信息
->addStoreGoods(Goods::class)
// 注册前置校验器
->addValidate(Validate::class)
// 注册商品的业务逻辑
->addAfter(After::class)
// 商品失效逻辑
->addInvalid(Invalid::class)
事件简介
事件介绍
所有事件均不受事务管理,仅为执行结束行为的通知,不做任何拦截等处理。若要想实现事务原子性,
请使用 Mattoid\Store\Extend\StoreExtend
类进行注册,该类注册的所有能力均视为本插件自有业务逻辑。
(例如:余额不足时,不执行 Mattoid\Store\Event\StoreBuyEvent
以及之后的逻辑;Mattoid\Store\Goods\After
执行失败时自动退款并增加库存)
事件通常不需要商品插件做特殊处理,本插件推荐使用 Mattoid\Store\Extend\StoreExtend
类的方式进行因为逻辑注册
购买失败事件
Mattoid\Store\Event\StoreBuyFailEvent
该事件由本插件监听,若商品插件执行自有业务逻辑失败导致需要回滚购买信息时可通知该事件,本插件会自动处理库存以及退款等操作
(若用用的是 Mattoid\Store\Extend\StoreExtend
注册的商品业务逻辑,则不需要考虑该事件。)
购买通知事件
Mattoid\Store\Event\StoreBuyEvent
该事件由商品插件自行监听,用于通知商品插件购买结束,商品插件可执行购买后的操作
添加购物车
Mattoid\Store\Event\StoreCartAddEvent
该事件由本插件监听,商品插件可通过通知该事件实现添加购物车的操作(该事件会自动减扣库存)
编辑购物车
Mattoid\Store\Event\StoreCartEditEvent
该事件由本插件监听,商品插件可通过通知该事件实现编辑购物车的操作(若 status
大于1,则该事件会自动增加库存)
回滚库存
Mattoid\Store\Event\StoreStockAddEvent
该事件由本插件监听,商品插件可通过通知该事件实现库存回滚操作
扣除库存
Mattoid\Store\Event\StoreStockSubEvent
该事件由本插件监听,商品插件可通过通知该事件实现库存减扣操作
商品失效事件
Mattoid\Store\Event\StoreInvalidEvent
该事件由商品插件监听,在商品失效时便会通知该事件(无论是否扣款成功)
商品插件