From 28f0dd0c06f811da6884bb11bbb9cc868cde859a Mon Sep 17 00:00:00 2001 From: lq Date: Thu, 26 Jun 2025 10:05:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Enum/MessageTypeEnum.php | 19 +++++++++---------- app/Http/Controllers/ImController.php | 2 +- app/Services/Base/BaseService.php | 21 ++++++++++++++------- app/Services/GatewayWorker/ImService.php | 2 +- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/Enum/MessageTypeEnum.php b/app/Enum/MessageTypeEnum.php index 6816b7e4..4bc1753a 100644 --- a/app/Enum/MessageTypeEnum.php +++ b/app/Enum/MessageTypeEnum.php @@ -15,19 +15,18 @@ enum MessageTypeEnum: int /** - * @param int $value * @return string */ - public function description(int $value): string + public function description(): string { - return match ($value) { - self::Text->value => '文本', - self::Image->value => '图片', - self::Audio->value => '音频', - self::Video->value => '视频', - self::Prescription->value => '处方', - self::Case->value => '病例', - self::VideoCall->value => '视频通话', + return match ($this) { + self::Text => '文本', + self::Image => '图片', + self::Audio => '音频', + self::Video => '视频', + self::Prescription => '处方', + self::Case => '病例', + self::VideoCall => '视频通话', default => '未知', }; } diff --git a/app/Http/Controllers/ImController.php b/app/Http/Controllers/ImController.php index d5ad5a83..5039469c 100644 --- a/app/Http/Controllers/ImController.php +++ b/app/Http/Controllers/ImController.php @@ -37,7 +37,7 @@ class ImController extends Controller $messageType = request()->post('message_type'); $data = request()->post('data'); try { - return jok(ImService::getInstance()->sendMessage($data, $messageType)); + return jok($this->service->sendMessage($data, $messageType)); } catch (\Exception $e) { return jerr($e->getMessage()); } diff --git a/app/Services/Base/BaseService.php b/app/Services/Base/BaseService.php index 0d6aad43..3cbae3b9 100644 --- a/app/Services/Base/BaseService.php +++ b/app/Services/Base/BaseService.php @@ -8,7 +8,10 @@ class BaseService { protected $userId; protected $userInfo; - protected static $instance; + /** + * @var mixed 单例实例,确保该类只有一个全局实例 + */ + private static mixed $_instance; public function __construct() { @@ -17,13 +20,17 @@ class BaseService $this->userInfo = UserModel::where('id', $token)->first(); } - // 单例 - - public static function getInstance() + /** + * 获取实例 + * @return null|static + */ + public static function getInstance(): null|static { - if (!self::$instance instanceof self) { - self::$instance = new self(); + $name = get_called_class(); + if (!isset(self::$_instance[$name])) { + self::$_instance[$name] = new static(); } - return self::$instance; + + return self::$_instance[$name]; } } diff --git a/app/Services/GatewayWorker/ImService.php b/app/Services/GatewayWorker/ImService.php index 83cbc994..7b945211 100644 --- a/app/Services/GatewayWorker/ImService.php +++ b/app/Services/GatewayWorker/ImService.php @@ -21,7 +21,7 @@ class ImService extends BaseService public function sendMessage($data, $type = MessageTypeEnum::Text->value) { - $data['message_type'] = $type; + $data['message_type'] = MessageTypeEnum::from($type)->description(); GatewayClientService::getInstance()->init()->sendToUser( $this->userId, $this->userId === 1? 2: 1,