fix: review 修复——meta 覆盖、重复支付、卸载守卫、测试补全
- EditPost 保存时合并表单中的部分 meta 键,防止插件注入字段覆盖 unlocked_user_ids 等其他键(单篇解锁用户会失去权限的 bug) - unlockPost:已有阅读权限(会员/作者/已解锁)直接跳文章,不重复支付 - subscribe:已有该套餐有效订阅直接跳我的订阅页 - uninstall:存在已启用的依赖者时拒绝卸载(与 disable 一致) - .gitignore 排除 storage/media-library/temp 测试残留 - 测试:AdminPagesTest 补 /admin/plugins /admin/payments;新增 Livewire 保存验证 meta 保留、解锁/订阅防重复支付、卸载守卫
This commit is contained in:
@@ -37,6 +37,19 @@ class MembershipController
|
||||
}
|
||||
|
||||
$user = $request->user();
|
||||
|
||||
// 已有该套餐的有效订阅:直接返回我的订阅页,避免重复支付
|
||||
$active = Subscription::query()
|
||||
->where('user_id', $user->id)
|
||||
->where('membership_plan_id', $plan->id)
|
||||
->where('status', 'active')
|
||||
->where('ends_at', '>', now())
|
||||
->exists();
|
||||
|
||||
if ($active) {
|
||||
return redirect()->route('membership.mine');
|
||||
}
|
||||
|
||||
$channel = $request->input('channel', 'alipay');
|
||||
|
||||
$payment = $this->payment->createOrder(
|
||||
@@ -63,6 +76,13 @@ class MembershipController
|
||||
|
||||
public function unlockPost(Request $request, Post $post)
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
// 已有阅读权限(会员 / 作者 / 已解锁):直接查看文章,避免重复支付
|
||||
if ($this->service->canReadPost($user, $post)) {
|
||||
return redirect()->route('posts.show', $post->slug ?? $post->id);
|
||||
}
|
||||
|
||||
// 单篇付费解锁:创建一笔定向支付
|
||||
$price = (int) ($post->meta['price'] ?? 0);
|
||||
|
||||
@@ -70,7 +90,6 @@ class MembershipController
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$user = $request->user();
|
||||
$channel = $request->input('channel', 'alipay');
|
||||
|
||||
$payment = $this->payment->createOrder(
|
||||
|
||||
Reference in New Issue
Block a user