diff --git a/app/Models/PlatformOrder.php b/app/Models/PlatformOrder.php index 51580c2..8f54cb9 100644 --- a/app/Models/PlatformOrder.php +++ b/app/Models/PlatformOrder.php @@ -10,6 +10,20 @@ class PlatformOrder extends Model { use HasFactory; + public function orderTypeLabel(): string + { + $labels = [ + 'new_purchase' => '新购', + 'renewal' => '续费', + 'upgrade' => '升级', + 'downgrade' => '降级', + ]; + + $type = (string) ($this->order_type ?? ''); + + return (string) ($labels[$type] ?? $type); + } + public function receiptTotal(): float { // 优先读扁平字段 payment_summary.total_amount(更稳定、避免遍历 receipts) diff --git a/tests/Unit/PlatformOrderOrderTypeLabelTest.php b/tests/Unit/PlatformOrderOrderTypeLabelTest.php new file mode 100644 index 0000000..8a75252 --- /dev/null +++ b/tests/Unit/PlatformOrderOrderTypeLabelTest.php @@ -0,0 +1,34 @@ +order_type = 'new_purchase'; + $this->assertSame('新购', $o->orderTypeLabel()); + + $o->order_type = 'renewal'; + $this->assertSame('续费', $o->orderTypeLabel()); + + $o->order_type = 'upgrade'; + $this->assertSame('升级', $o->orderTypeLabel()); + + $o->order_type = 'downgrade'; + $this->assertSame('降级', $o->orderTypeLabel()); + } + + public function test_order_type_label_should_fallback_to_code_when_unknown(): void + { + $o = new PlatformOrder(); + $o->order_type = 'something_new'; + + $this->assertSame('something_new', $o->orderTypeLabel()); + } +}