feat: Payment 订单商品化——多态 payable 关联购买实体
- payments 表新增 payable_type/payable_id(nullableMorphs),订单可关联文章/套餐等可购买实体 - createOrder 接收 $payable 模型,取代 description 字符串解析 - membership 支付回调按 payable instanceof 分发(激活订阅 / 解锁单篇) - Post/MembershipPlan 提供 payableLabel/payableUrl 约定方法;Payment 用约定方法生成展示标签与后台链接(皮肤等新实体可直接接入) - 订单表格新增「类型」徽章(文章/会员套餐),商品列链接到对应后台编辑页;无 payable 的旧订单显示 —
This commit is contained in:
@@ -107,6 +107,19 @@ class Post extends Model implements HasMedia
|
||||
return route('posts.show', $this->slug ?? $this->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 作为可购买实体(单篇解锁)的展示约定。
|
||||
*/
|
||||
public function payableLabel(): string
|
||||
{
|
||||
return '文章:'.$this->title;
|
||||
}
|
||||
|
||||
public function payableUrl(): ?string
|
||||
{
|
||||
return route('filament.admin.resources.posts.edit', $this);
|
||||
}
|
||||
|
||||
public function getExcerptOrFallbackAttribute(): string
|
||||
{
|
||||
if ($this->excerpt) {
|
||||
|
||||
Reference in New Issue
Block a user