feat(pay): 新增消费命令和通用订单 DTO

- 添加 ConsumeCmd 类用于消费操作
- 重构 RechargeCmd 类,使其返回自身以便链式调用
- 将 RechargeDto 重命名为 OrderDto,作为通用订单数据传输对象
- 更新 OrderRepoInterface 接口,使用新的命令和 DTO 类
- 修改 AccountBalanceRepo、OrderRepo 和 ProductRepo,移除不必要的选项参数
- 新增 CreateConsumptionOrderTest 测试用例
- 更新 CreateRechargeOrderTest 测试用例以使用新的命令和 DTO 类
This commit is contained in:
李东云
2025-08-18 19:58:42 +08:00
parent 80dc1a3706
commit c8ee3bb23b
9 changed files with 126 additions and 34 deletions

View File

@@ -0,0 +1,34 @@
<?php
/**
* CreateConsumptionOrderTest.php@Pay
*
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
* Powered by PhpStorm
* Created on 2025/8/18
*/
use Singularity\HDK\Pay\Application\Command\ConsumeCmd;
use Singularity\HDK\Pay\Application\Dto\Transaction\OrderDto;
use Singularity\HDK\Pay\Domain\Account\Enum\PointType;
use Singularity\HDK\Pay\Domain\Transaction\Enum\PayType;
use Singularity\HDK\Pay\Infrastructure\Repository\OrderRepo;
use function Hyperf\Support\make;
it('should can create consumption order', function () {
$uid = 'cn3321';
$cmd = (new ConsumeCmd(
uid: $uid,
type: PayType::Point,
method: PointType::FtaiAligner,
external: [],
externalID: null,
remark: '',
))->addItem('Design FTAI Aligner', 1, 5);
$repo = make(OrderRepo::class);
$result = $repo->consume($cmd);
expect($result)->toBeInstanceOf(OrderDto::class);
});

View File

@@ -8,19 +8,16 @@
* Created on 2025/8/18
*/
use Singularity\HDK\Pay\Application\Dto\Transaction\RechargeDto;
use Singularity\HDK\Pay\Application\Command\RechargeCmd;
use Singularity\HDK\Pay\Application\Dto\Transaction\OrderDto;
use Singularity\HDK\Pay\Infrastructure\Repository\OrderRepo;
use function Hyperf\Support\make;
it('should can create recharge order', function () {
$uid = 'cn3321';
$items = [
'product_id' => 1,
'quantity' => 2,
];
$cmd = (new RechargeCmd('cn3321'))->addItem(1, 2);
$repo = make(OrderRepo::class);
$result = $repo->recharge($uid, [$items]);
expect($result)->toBeInstanceOf(RechargeDto::class);
$result = $repo->recharge($cmd);
expect($result)->toBeInstanceOf(OrderDto::class);
});