mirror of
http://124.126.16.154:8888/singularity/hdk-pay.git
synced 2026-01-15 06:15:09 +08:00
feat(invoice): 添加查询用户常用发票地址功能
- 新增 FrequentAddress 类表示常用地址 - 添加 FrequentAddressRepoInterface 接口和 FrequentAddressRepo 实现类 - 在 ConfigProvider 中注册 FrequentAddressRepo - 编写单元测试验证查询功能
This commit is contained in:
@@ -8,12 +8,14 @@ use Hyperf\Contract\StdoutLoggerInterface;
|
||||
use Hyperf\Framework\Logger\StdoutLogger;
|
||||
use Singularity\HDK\Pay\Domain\Account\Repository\AccountRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Account\Repository\PointLogRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Repository\FrequentAddressRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Repository\InvoiceProductRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Repository\InvoiceRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Product\Repository\ExchangeRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Product\Repository\RechargeProductRepoInterface;
|
||||
use Singularity\HDK\Pay\Domain\Transaction\Repository\OrderRepoInterface;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\AccountBalanceRepo;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\FrequentAddressRepo;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\InvoiceProductRepo;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\InvoiceRepo;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\OrderRepo;
|
||||
@@ -51,6 +53,7 @@ class ConfigProvider
|
||||
// invoice
|
||||
InvoiceProductRepoInterface::class => InvoiceProductRepo::class,
|
||||
InvoiceRepoInterface::class => InvoiceRepo::class,
|
||||
FrequentAddressRepoInterface::class => FrequentAddressRepo::class,
|
||||
],
|
||||
// 合并到 config/autoload/annotations.php 文件
|
||||
'annotations' => [
|
||||
|
||||
56
src/Domain/Invoice/Aggregate/Address/FrequentAddress.php
Normal file
56
src/Domain/Invoice/Aggregate/Address/FrequentAddress.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* QueryFreqAddrDto.php@LuxPay
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2025/8/29
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Singularity\HDK\Pay\Domain\Invoice\Aggregate\Address;
|
||||
|
||||
use Singularity\HDK\Pay\Domain\AggregateRoot;
|
||||
|
||||
final class FrequentAddress extends AggregateRoot
|
||||
{
|
||||
public function __construct(
|
||||
private readonly string $uid,
|
||||
private readonly string $address,
|
||||
private readonly string $city,
|
||||
private readonly string $state,
|
||||
private readonly string $country,
|
||||
private readonly string $zipCode,
|
||||
) {}
|
||||
|
||||
public function getUid(): string
|
||||
{
|
||||
return $this->uid;
|
||||
}
|
||||
|
||||
public function getAddress(): string
|
||||
{
|
||||
return $this->address;
|
||||
}
|
||||
|
||||
public function getCity(): string
|
||||
{
|
||||
return $this->city;
|
||||
}
|
||||
|
||||
public function getState(): string
|
||||
{
|
||||
return $this->state;
|
||||
}
|
||||
|
||||
public function getCountry(): string
|
||||
{
|
||||
return $this->country;
|
||||
}
|
||||
|
||||
public function getZipCode(): string
|
||||
{
|
||||
return $this->zipCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* FrequentAddressRepoInterface.php@Pay
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2025/8/29
|
||||
*/
|
||||
|
||||
namespace Singularity\HDK\Pay\Domain\Invoice\Repository;
|
||||
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Aggregate\Address\FrequentAddress;
|
||||
|
||||
interface FrequentAddressRepoInterface
|
||||
{
|
||||
/**
|
||||
* @param string $uid
|
||||
* @return FrequentAddress
|
||||
*/
|
||||
public function findByUser(string $uid): FrequentAddress;
|
||||
}
|
||||
41
src/Infrastructure/Repository/FrequentAddressRepo.php
Normal file
41
src/Infrastructure/Repository/FrequentAddressRepo.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* FrequentAddressRepo.php@Pay
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2025/8/29
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Singularity\HDK\Pay\Infrastructure\Repository;
|
||||
|
||||
use Hyperf\Codec\Json;
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Aggregate\Address\FrequentAddress;
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Aggregate\Invoice\InvoiceProduct;
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Repository\FrequentAddressRepoInterface;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\AbstractRepo;
|
||||
|
||||
final class FrequentAddressRepo extends AbstractRepo implements FrequentAddressRepoInterface
|
||||
{
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function findByUser(string $uid): FrequentAddress
|
||||
{
|
||||
$response = $this->requestService->requestGet("/rpc/v2/account/$uid/inv-addr");
|
||||
|
||||
$content = $response->getBody()->getContents();
|
||||
$result = Json::decode($content);
|
||||
|
||||
return new FrequentAddress(
|
||||
uid: $result['uid'],
|
||||
address: $result['address'],
|
||||
city: $result['city'],
|
||||
state: $result['state'],
|
||||
country: $result['country'],
|
||||
zipCode: $result['zip']
|
||||
);
|
||||
}
|
||||
}
|
||||
23
tests/Feature/Invoice/QueryFreqAddrTest.php
Normal file
23
tests/Feature/Invoice/QueryFreqAddrTest.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* QueryFreqAddrTest.php@Pay
|
||||
*
|
||||
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
|
||||
* Powered by PhpStorm
|
||||
* Created on 2025/8/29
|
||||
*/
|
||||
|
||||
use Singularity\HDK\Pay\Domain\Invoice\Aggregate\Address\FrequentAddress;
|
||||
use Singularity\HDK\Pay\Infrastructure\Repository\FrequentAddressRepo;
|
||||
|
||||
use function Hyperf\Support\make;
|
||||
|
||||
it('should can query frequent invoice address', function () {
|
||||
$uid = '61dbe752d4caa';
|
||||
|
||||
$addrRepo = make(FrequentAddressRepo::class);
|
||||
$freq_addr = $addrRepo->findByUser($uid);
|
||||
|
||||
expect($freq_addr)->toBeInstanceOf(FrequentAddress::class);
|
||||
});
|
||||
@@ -32,4 +32,4 @@ test(
|
||||
);
|
||||
expect($goods)->toBeInstanceOf(Goods::class);
|
||||
}
|
||||
);
|
||||
)->skip();
|
||||
|
||||
Reference in New Issue
Block a user