Files
datahub/backend/app/Entity/Parse/EntityParseInterface.php
T

111 lines
2.3 KiB
PHP
Raw Normal View History

2025-11-27 13:40:58 +08:00
<?php
declare(strict_types=1);
namespace App\Entity\Parse;
use App\Model\Company;
use App\Model\Platform;
use App\Model\Store;
use App\Model\Model as Entity;
2025-11-27 15:03:25 +08:00
use Hyperf\Collection\LazyCollection;
2025-11-27 13:40:58 +08:00
/**
* EntityParseInterface 接口
*
* 定义消息解析器的标准接口
*/
interface EntityParseInterface
{
2025-11-27 15:03:25 +08:00
/**
* 消息数据验证
*
* 验证消息数据是否包含必需字段
*
* @param array $data
* @return bool
*/
public function messageValidate(array $data): bool;
2025-11-27 13:40:58 +08:00
/**
* 公司作用域匹配
*
2025-11-27 15:03:25 +08:00
* @param array $metadata
2025-11-27 13:40:58 +08:00
* @return Company
*/
2025-11-27 15:03:25 +08:00
public function companyScopeMatch(array $metadata): Company;
2025-11-27 13:40:58 +08:00
/**
* 平台作用域匹配
*
2025-11-27 15:03:25 +08:00
* @param array $metadata
2025-11-27 13:40:58 +08:00
* @return Platform
*/
2025-11-27 15:03:25 +08:00
public function platformScopeMatch(array $metadata): Platform;
2025-11-27 13:40:58 +08:00
/**
* 店铺作用域匹配
*
2025-11-27 15:03:25 +08:00
* @param array $metadata
2025-11-27 13:40:58 +08:00
* @return Store
*/
2025-11-27 15:03:25 +08:00
public function storeScopeMatch(array $metadata): Store;
2025-11-27 13:40:58 +08:00
/**
* 实体类型匹配
*
2025-11-27 15:03:25 +08:00
* 根据 metadata 返回实体模板实例
*
* @param array $metadata
2025-11-27 13:40:58 +08:00
* @return Entity
*/
2025-11-27 15:03:25 +08:00
public function entityMatch(array $metadata): Entity;
2025-11-27 13:40:58 +08:00
/**
* 实体数据映射
*
2025-11-27 15:03:25 +08:00
* 将原始数据转换为可填充到 Model 的数据集合
*
* @param array $rawData
* @return LazyCollection
2025-11-27 13:40:58 +08:00
*/
2025-11-27 15:03:25 +08:00
public function entityMap(array $rawData): LazyCollection;
2025-11-27 13:40:58 +08:00
/**
* 提取实体唯一标识符, 根据字段查找数据库中匹配的唯一实体
2025-11-27 13:40:58 +08:00
*
2025-11-27 15:03:25 +08:00
* @param array $metadata
* @return array 提供给 Model::query()->where() 作为参数使用, 每个数组元素的键值分别作为字段名和值
* 如果需要多个字段来确认唯一性,则构造多个字段元素
2025-11-27 13:40:58 +08:00
*/
public function entityUniqueIdentifierExtract(array $metadata): array;
2025-11-27 13:40:58 +08:00
/**
2025-11-27 15:03:25 +08:00
* 获取消息数据
2025-11-27 13:40:58 +08:00
*
2025-11-27 15:03:25 +08:00
* @return array
2025-11-27 13:40:58 +08:00
*/
2025-11-27 15:03:25 +08:00
public function getData(): array;
2025-11-27 13:40:58 +08:00
/**
* 获取平台对象
*
* @return Platform
*/
public function getPlatform(): Platform;
/**
* 获取公司对象
*
* @return Company
*/
public function getCompany(): Company;
/**
* 获取店铺对象
*
* @return Store
*/
public function getStore(): Store;
}