feat(admin-frontend): 补齐活跃筛选与支付快照能力
新增用户管理“活跃状态”高级筛选,并在后端支持 activity_status 复合规则,支持按活跃与非活跃筛选用户。 补齐订单支付成功快照落库与后台展示,保存支付渠道、 支付方法、实付金额和支付 IP,并在订单详情中优先展示。 同时增强节点页在线/离线筛选与批量删除、仪表盘快捷入口, 并修复已关闭工单再次回复后自动重开的统一语义。 附带同步测试、迁移、CI 工作流命名及知识库记录
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use App\Models\Ticket;
|
||||
use App\Services\TicketService;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use ReflectionMethod;
|
||||
|
||||
class TicketServiceReplyStateTest extends TestCase
|
||||
{
|
||||
public function test_user_reply_reopens_closed_ticket_and_marks_waiting(): void
|
||||
{
|
||||
$ticket = new Ticket([
|
||||
'user_id' => 1001,
|
||||
'status' => Ticket::STATUS_CLOSED,
|
||||
'reply_status' => Ticket::REPLY_STATUS_REPLIED,
|
||||
'last_reply_user_id' => 2002,
|
||||
]);
|
||||
|
||||
$this->applyReplyState($ticket, 1001);
|
||||
|
||||
$this->assertSame(Ticket::STATUS_OPENING, $ticket->status);
|
||||
$this->assertSame(Ticket::REPLY_STATUS_WAITING, $ticket->reply_status);
|
||||
$this->assertSame(1001, $ticket->last_reply_user_id);
|
||||
}
|
||||
|
||||
public function test_admin_reply_reopens_closed_ticket_and_marks_replied(): void
|
||||
{
|
||||
$ticket = new Ticket([
|
||||
'user_id' => 1001,
|
||||
'status' => Ticket::STATUS_CLOSED,
|
||||
'reply_status' => Ticket::REPLY_STATUS_WAITING,
|
||||
'last_reply_user_id' => 1001,
|
||||
]);
|
||||
|
||||
$this->applyReplyState($ticket, 3003);
|
||||
|
||||
$this->assertSame(Ticket::STATUS_OPENING, $ticket->status);
|
||||
$this->assertSame(Ticket::REPLY_STATUS_REPLIED, $ticket->reply_status);
|
||||
$this->assertSame(3003, $ticket->last_reply_user_id);
|
||||
}
|
||||
|
||||
private function applyReplyState(Ticket $ticket, int $userId): void
|
||||
{
|
||||
$service = new TicketService();
|
||||
$method = new ReflectionMethod(TicketService::class, 'applyReplyState');
|
||||
$method->setAccessible(true);
|
||||
$method->invoke($service, $ticket, $userId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user