Merge branch 'feature/mzl_dev'

This commit is contained in:
mzl
2025-08-04 14:03:57 +08:00
parent 8f74999b47
commit b2d4119e46
25 changed files with 2066 additions and 47 deletions
+51
View File
@@ -0,0 +1,51 @@
<?php
namespace app\queue\redis;
use Webman\RedisQueue\Consumer;
use app\inquiry\service\InquiryLogService;
use app\common\utils\email\MailSend;
class EmailMessage implements Consumer
{
// 要消费的队列名
public $queue = 'email-message';
// 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
public $connection = 'default';
// 消费
public function consume($data)
{
try {
// 询单信息
$inquiryLogService = new InquiryLogService();
$data = $inquiryLogService->getContent($data['id']);
MailSend::send($data['email'], '【XYH】新的客户线索', replaceTpl($data));
} catch (\Throwable $th) {
throw $th;
}
}
// 消费失败回调
/*
$package = [
'id' => 1357277951, // 消息ID
'time' => 1709170510, // 消息时间
'delay' => 0, // 延迟时间
'attempts' => 2, // 消费次数
'queue' => 'send-mail', // 队列名
'data' => ['to' => 'tom@gmail.com', 'content' => 'hello'], // 消息内容
'max_attempts' => 5, // 最大重试次数
'error' => '错误信息' // 错误信息
]
*/
public function onConsumeFailure(\Throwable $e, $package)
{
echo "consume failure\n";
echo $e->getMessage() . "\n";
// 无需反序列化
var_export($package);
}
}
+18 -14
View File
@@ -29,19 +29,20 @@ class InquiryToCrm implements Consumer
// 获取用户信息
$recipient = 0;
$corpId = 0;
$uinfo = null;
if ($info->recipient) {
$recipient = $info->recipient;
$uinfo = User::where('id', $info->recipient)->first();
if ($uinfo) {
$corpId = $uinfo->corp_id;
}
// 消息推送参数 分配
$scene = 'inquiry-person-allocation';
$receiveType = 'person';
// // 消息推送参数 分配
// $scene = 'inquiry-person-allocation';
// $receiveType = 'person';
} else {
// 消息推送参数 发布
$scene = 'inquiry-group-send';
$receiveType = 'group';
// // 消息推送参数 发布
// $scene = 'inquiry-group-send';
// $receiveType = 'group';
}
// 同步客户数据
$crmCustomer = new CrmCustomer();
@@ -65,14 +66,17 @@ class InquiryToCrm implements Consumer
throw new BusinessException('同步失败~');
}
// 发送飞书消息
$options = [
'id' => $info->id,
'category' => 'inquiry',
'scene' => $scene,
'receive_type' => $receiveType
];
\Webman\RedisQueue\Redis::send('feishu-message', $options);
// 发送邮件消息
if ($uinfo && $uinfo->email) {
$options = [
'id' => $info->id,
'email' => $uinfo->email,
// 'category' => 'inquiry',
// 'scene' => $scene,
// 'receive_type' => $receiveType
];
\Webman\RedisQueue\Redis::send('email-message', $options);
}
}
} catch (\Throwable $th) {
throw $th;
+55
View File
@@ -0,0 +1,55 @@
<?php
namespace app\queue\redis;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
use support\exception\BusinessException;
use Webman\RedisQueue\Consumer;
class Server implements Consumer
{
// 要消费的队列名
public $queue = 'server';
// 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
public $connection = 'default';
// 消费
public function consume($data)
{
try {
$webhookUrl = 'https://open.feishu.cn/open-apis/bot/v2/hook/806c2e9d-6ca2-4345-a459-69bb2651706b';
$message = "====== ======\n";
$message .= $data['content']."\n";
$message .= "时间:".date('Y-m-d H:i:s', time())."\n";
$message .= "====== ======";
sendFeishuTextMessage($webhookUrl, $message);
return true;
} catch (\Throwable $th) {
var_dump('4 :'.$th->getFile()."|".$th->getLine()."|".$th->getMessage());
throw new BusinessException($th->getFile()."|".$th->getLine()."|".$th->getMessage());
}
}
// 消费失败回调
/*
$package = [
'id' => 1357277951, // 消息ID
'time' => 1709170510, // 消息时间
'delay' => 0, // 延迟时间
'attempts' => 2, // 消费次数
'queue' => 'send-mail', // 队列名
'data' => ['to' => 'tom@gmail.com', 'content' => 'hello'], // 消息内容
'max_attempts' => 5, // 最大重试次数
'error' => '错误信息' // 错误信息
]
*/
public function onConsumeFailure(\Throwable $e, $package)
{
echo "consume failure\n";
echo $e->getMessage() . "\n";
// 无需反序列化
var_export($package);
}
}