新版流量池提交
This commit is contained in:
@@ -18,7 +18,7 @@ class MessageController extends BaseController
|
||||
public function getFriendsList($pageIndex = '',$pageSize = '',$isInner = false)
|
||||
{
|
||||
// 获取授权token
|
||||
$authorization = trim($this->request->header('authorization', $this->authorization));
|
||||
$authorization = $this->authorization;
|
||||
if (empty($authorization)) {
|
||||
if($isInner){
|
||||
return json_encode(['code'=>500,'msg'=>'缺少授权信息']);
|
||||
@@ -27,7 +27,7 @@ class MessageController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
$fromTime = $this->request->param('fromTime', date('Y-m-d 00:00:00', strtotime('-1 days')));
|
||||
$fromTime = $this->request->param('fromTime', date('Y-m-d 00:00:00'));
|
||||
$toTime = $this->request->param('toTime', date('Y-m-d 23:59:59'));
|
||||
|
||||
|
||||
@@ -62,6 +62,17 @@ class MessageController extends BaseController
|
||||
// 发送请求获取好友列表
|
||||
$result = requestCurl($this->baseUrl . 'api/WechatFriend/listWechatFriendForMsgPagination', $params, 'POST', $header, 'json');
|
||||
$response = handleApiResponse($result);
|
||||
|
||||
// 确保 response 是数组格式
|
||||
if (!is_array($response)) {
|
||||
$response = [];
|
||||
}
|
||||
|
||||
// 确保 results 字段存在且是数组
|
||||
if (!isset($response['results']) || !is_array($response['results'])) {
|
||||
$response['results'] = [];
|
||||
}
|
||||
|
||||
// 获取同步消息标志
|
||||
$syncMessages = $this->request->param('syncMessages', true);
|
||||
// 如果需要同步消息,则获取每个好友的消息
|
||||
@@ -89,10 +100,18 @@ class MessageController extends BaseController
|
||||
// 调用获取消息的接口
|
||||
$messageResult = requestCurl($this->baseUrl . 'api/FriendMessage/searchMessage', $messageParams, 'GET', $header, 'json');
|
||||
$messageResponse = handleApiResponse($messageResult);
|
||||
|
||||
// 确保 messageResponse 是数组格式
|
||||
if (!is_array($messageResponse)) {
|
||||
$messageResponse = [];
|
||||
}
|
||||
|
||||
// 保存消息到数据库
|
||||
if (!empty($messageResponse)) {
|
||||
foreach ($messageResponse as $item) {
|
||||
if (is_array($item)) {
|
||||
$this->saveMessage($item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,10 +178,17 @@ class MessageController extends BaseController
|
||||
$result = requestCurl($this->baseUrl . 'api/FriendMessage/searchMessage', $params, 'GET', $header, 'json');
|
||||
$response = handleApiResponse($result);
|
||||
|
||||
// 确保 response 是数组格式
|
||||
if (!is_array($response)) {
|
||||
$response = [];
|
||||
}
|
||||
|
||||
// 保存数据到数据库
|
||||
if (!empty($response)) {
|
||||
foreach ($response as $item) {
|
||||
if (is_array($item)) {
|
||||
$this->saveMessage($item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,7 +207,8 @@ class MessageController extends BaseController
|
||||
public function getChatroomList($pageIndex = '',$pageSize = '',$isInner = false)
|
||||
{
|
||||
// 获取授权token
|
||||
$authorization = trim($this->request->header('authorization', $this->authorization));
|
||||
$authorization = $this->authorization;
|
||||
//$authorization = 'vIxE_SlpPqQLpG3maOL8VaPBDz_uoGqhK4HGR4VtxvtsjNkW9kP6RQicwsfX6lLXruq9UqyDV7wBU5iGT2OPv3t_GZKfVUv-PG_CL4zc6806GKhmT7QxFOXHLF0KH2VWlzVfo9i_MxsuPm9MqiuYwKDXKOpBwSemNL6vwYOrIkZBAcanG06rPEdSlrNcNyJiYrUpqZKDeQEgxE4o9WeYVczYLN8OS-p8Z57DXlVwW8CJCdLsFi7csBVT7uTreDJnAv7wraMRHB5FYs1U7vEmO9IbmsQhhdC1swMuz0kQIESr2zf11nBKEDEadMoH4HptIENXQQ';
|
||||
if (empty($authorization)) {
|
||||
if($isInner){
|
||||
return json_encode(['code'=>500,'msg'=>'缺少授权信息']);
|
||||
@@ -190,7 +217,7 @@ class MessageController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
$fromTime = $this->request->param('fromTime', date('Y-m-d 00:00:00', strtotime('-1 days')));
|
||||
$fromTime = $this->request->param('fromTime', date('Y-m-d 00:00:00'));
|
||||
$toTime = $this->request->param('toTime', date('Y-m-d 23:59:59'));
|
||||
|
||||
|
||||
@@ -225,11 +252,21 @@ class MessageController extends BaseController
|
||||
$result = requestCurl($this->baseUrl . 'api/WechatChatroom/listWechatChatroomForMsgPagination', $params, 'POST', $header, 'json');
|
||||
$response = handleApiResponse($result);
|
||||
|
||||
// 确保 response 是数组格式
|
||||
if (!is_array($response)) {
|
||||
$response = [];
|
||||
}
|
||||
|
||||
// 确保 results 字段存在且是数组
|
||||
if (!isset($response['results']) || !is_array($response['results'])) {
|
||||
$response['results'] = [];
|
||||
}
|
||||
|
||||
// 获取同步消息标志
|
||||
$syncMessages = $this->request->param('syncMessages', true);
|
||||
|
||||
// 如果需要同步消息,则获取每个群的消息
|
||||
if ($syncMessages && !empty($response)) {
|
||||
if ($syncMessages && !empty($response['results'])) {
|
||||
$from = strtotime($fromTime) * 1000;
|
||||
$to = strtotime($toTime) * 1000;
|
||||
foreach ($response['results'] as &$chatroom) {
|
||||
@@ -254,10 +291,17 @@ class MessageController extends BaseController
|
||||
$messageResult = requestCurl($this->baseUrl . 'api/ChatroomMessage/searchMessage', $messageParams, 'GET', $header, 'json');
|
||||
$messageResponse = handleApiResponse($messageResult);
|
||||
|
||||
// 确保 messageResponse 是数组格式
|
||||
if (!is_array($messageResponse)) {
|
||||
$messageResponse = [];
|
||||
}
|
||||
|
||||
// 保存消息到数据库
|
||||
if (!empty($messageResponse)) {
|
||||
foreach ($messageResponse as $item) {
|
||||
if (is_array($item)) {
|
||||
$this->saveChatroomMessage($item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,12 +369,19 @@ class MessageController extends BaseController
|
||||
$result = requestCurl($this->baseUrl . 'api/ChatroomMessage/searchMessage', $params, 'GET', $header, 'json');
|
||||
$response = handleApiResponse($result);
|
||||
|
||||
// 确保 response 是数组格式
|
||||
if (!is_array($response)) {
|
||||
$response = [];
|
||||
}
|
||||
|
||||
// 保存数据到数据库
|
||||
if (!empty($response)) {
|
||||
foreach ($response as $item) {
|
||||
if (is_array($item)) {
|
||||
$res = $this->saveChatroomMessage($item);
|
||||
if(!$res){
|
||||
return errorJson('保存群聊消息失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -350,7 +401,7 @@ class MessageController extends BaseController
|
||||
public function saveMessage($item)
|
||||
{
|
||||
// 检查消息是否已存在
|
||||
$exists = WechatMessageModel::where('id', $item['id']) ->find();
|
||||
$exists = WechatMessageModel::where(['id'=> $item['id'],'type' => 1])->find();
|
||||
|
||||
if (!empty($exists) && $exists['sendStatus'] == 0){
|
||||
return true;
|
||||
@@ -421,7 +472,13 @@ class MessageController extends BaseController
|
||||
if (!empty($res) && empty($item['isSend']) && in_array($item['msgType'],[1,3,20,34,40,42,43,47,49])){
|
||||
$friend = Db::name('wechat_friendship')->where('id',$item['wechatFriendId'])->find();
|
||||
if (!empty($friend)){
|
||||
$trafficPoolId = Db::name('traffic_pool')->where('identifier',$friend['wechatId'])->value('id');
|
||||
// ========== 旧版流量池代码(已废弃) ==========
|
||||
// $trafficPoolId = Db::name('traffic_pool_v1')->where('identifier',$friend['wechatId'])->value('id');
|
||||
// ========== 新版流量池代码 ==========
|
||||
$trafficPool = Db::name('traffic_pool')->where('identifier', $friend['wechatId'])->find();
|
||||
$trafficPoolId = $trafficPool ? $trafficPool['id'] : null;
|
||||
// ========== 旧版流量池代码结束 ==========
|
||||
|
||||
if (!empty($trafficPoolId)){
|
||||
$data = [
|
||||
'type' => 4,
|
||||
@@ -449,9 +506,11 @@ class MessageController extends BaseController
|
||||
*/
|
||||
public function saveChatroomMessage($item)
|
||||
{
|
||||
// 检查消息是否已存在
|
||||
$exists = WechatMessageModel::where('id', $item['id'])->find();
|
||||
// 检查消息是否已存在(必须指定 type=2 表示群聊消息)
|
||||
$exists = WechatMessageModel::where(['id' => $item['id'], 'type' => 2])->find();
|
||||
|
||||
// 如果消息已存在且 sendStatus == 0(已发送),则跳过更新
|
||||
// 注意:这里只跳过已发送的消息,未发送的消息(sendStatus != 0)仍然需要更新
|
||||
if (!empty($exists) && $exists['sendStatus'] == 0){
|
||||
return true;
|
||||
}
|
||||
@@ -502,16 +561,29 @@ class MessageController extends BaseController
|
||||
'recallId' => $item['recallId'] ?? false
|
||||
];
|
||||
|
||||
// 创建新记录
|
||||
// 创建或更新记录
|
||||
try {
|
||||
if(empty($exists)){
|
||||
WechatMessageModel::create($data);
|
||||
// 新记录,直接创建
|
||||
$result = WechatMessageModel::create($data);
|
||||
if (!$result) {
|
||||
throw new \Exception('创建群聊消息记录失败');
|
||||
}
|
||||
}else{
|
||||
// 已存在记录,更新(排除 id 字段)
|
||||
unset($data['id']);
|
||||
$exists->save($data);
|
||||
$result = $exists->save($data);
|
||||
if ($result === false) {
|
||||
throw new \Exception('更新群聊消息记录失败');
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
// 记录错误日志,便于调试
|
||||
\think\facade\Log::error('保存群聊消息失败:' . $e->getMessage(), [
|
||||
'message_id' => $item['id'] ?? '',
|
||||
'data' => $data ?? []
|
||||
]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user