update entity parse
This commit is contained in:
@@ -6,9 +6,9 @@ namespace App\Entity\Parse\Traits;
|
||||
|
||||
use App\Model\Model as Entity;
|
||||
use App\Model\Platform;
|
||||
use Hyperf\Amqp\Message\ConsumerMessageInterface;
|
||||
use InvalidArgumentException;
|
||||
use Hyperf\Stringable\Str;
|
||||
use PhpAmqpLib\Message\AMQPMessage;
|
||||
|
||||
/**
|
||||
* EntityParseHelper Trait
|
||||
@@ -18,26 +18,28 @@ use Hyperf\Stringable\Str;
|
||||
trait EntityParseHelper
|
||||
{
|
||||
/**
|
||||
* 从 exchange 名称中提取平台信息
|
||||
* 从消息体中提取平台信息
|
||||
*
|
||||
* 规则:exchange 格式为 "platform.exchange"
|
||||
* 例如:tmall.exchange -> Tmall 平台
|
||||
* 从消息体的 meta.platform_id 获取平台 ID,查询 Platform
|
||||
*
|
||||
* @param ConsumerMessageInterface $message
|
||||
* @param AMQPMessage $message
|
||||
* @return Platform
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
protected function extractPlatformFromExchange(ConsumerMessageInterface $message): Platform
|
||||
protected function extractPlatformFromExchange(AMQPMessage $message): Platform
|
||||
{
|
||||
$platformName = Str::of($message->getExchange())
|
||||
->before('.')
|
||||
->ucfirst()
|
||||
->toString();
|
||||
$data = json_decode($message->getBody(), true);
|
||||
|
||||
$platform = Platform::where('name', '=', $platformName)->first();
|
||||
$platformId = $data['meta']['platform_id'] ?? null;
|
||||
|
||||
if (!$platformId) {
|
||||
throw new InvalidArgumentException("Missing platform_id in message meta");
|
||||
}
|
||||
|
||||
$platform = Platform::find($platformId);
|
||||
|
||||
if (!$platform) {
|
||||
throw new InvalidArgumentException("Platform name '{$platformName}' does not exist!");
|
||||
throw new InvalidArgumentException("Platform with id '{$platformId}' does not exist!");
|
||||
}
|
||||
|
||||
return $platform;
|
||||
@@ -49,11 +51,11 @@ trait EntityParseHelper
|
||||
* 规则:routing key 格式为 "entity.platform"
|
||||
* 例如:order.tmall -> Order 实体
|
||||
*
|
||||
* @param ConsumerMessageInterface $message
|
||||
* @param AMQPMessage $message
|
||||
* @return Entity
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
protected function extractEntityFromRoutingKey(ConsumerMessageInterface $message): Entity
|
||||
protected function extractEntityFromRoutingKey(AMQPMessage $message): Entity
|
||||
{
|
||||
$entityName = Str::of($message->getRoutingKey())
|
||||
->before('.')
|
||||
@@ -78,11 +80,11 @@ trait EntityParseHelper
|
||||
/**
|
||||
* 从消息体中提取 JSON 数据
|
||||
*
|
||||
* @param ConsumerMessageInterface $message
|
||||
* @param AMQPMessage $message
|
||||
* @return array
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
protected function extractMessageData(ConsumerMessageInterface $message): array
|
||||
protected function extractMessageData(AMQPMessage $message): array
|
||||
{
|
||||
$body = $message->getBody();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user