消息同步优化
This commit is contained in:
@@ -61,10 +61,8 @@ class MessageController extends BaseController
|
||||
// 发送请求获取好友列表
|
||||
$result = requestCurl($this->baseUrl . 'api/WechatFriend/listWechatFriendForMsgPagination', $params, 'POST', $header, 'json');
|
||||
$response = handleApiResponse($result);
|
||||
|
||||
// 获取同步消息标志
|
||||
$syncMessages = $this->request->param('syncMessages', true);
|
||||
|
||||
// 如果需要同步消息,则获取每个好友的消息
|
||||
if ($syncMessages && !empty($response['results'])) {
|
||||
$from = strtotime($fromTime) * 1000;
|
||||
@@ -90,7 +88,6 @@ class MessageController extends BaseController
|
||||
// 调用获取消息的接口
|
||||
$messageResult = requestCurl($this->baseUrl . 'api/FriendMessage/searchMessage', $messageParams, 'GET', $header, 'json');
|
||||
$messageResponse = handleApiResponse($messageResult);
|
||||
|
||||
// 保存消息到数据库
|
||||
if (!empty($messageResponse)) {
|
||||
foreach ($messageResponse as $item) {
|
||||
@@ -353,12 +350,6 @@ class MessageController extends BaseController
|
||||
{
|
||||
// 检查消息是否已存在
|
||||
$exists = WechatMessageModel::where('id', $item['id']) ->find();
|
||||
|
||||
// 如果消息已存在,直接返回
|
||||
if ($exists) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 将毫秒时间戳转换为秒级时间戳
|
||||
$createTime = isset($item['createTime']) ? strtotime($item['createTime']) : null;
|
||||
$deleteTime = !empty($item['isDeleted']) ? strtotime($item['deleteTime']) : null;
|
||||
@@ -387,7 +378,8 @@ class MessageController extends BaseController
|
||||
'wechatTime' => $wechatTime
|
||||
];
|
||||
|
||||
//已被删除
|
||||
|
||||
//已被删除
|
||||
if ($item['msgType'] == 10000 && strpos($item['content'],'开启了朋友验证') !== false) {
|
||||
Db::table('s2_wechat_friend')->where('id',$item['wechatFriendId'])->update(['isDeleted'=> 1,'deleteTime' => $wechatTime]);
|
||||
}else{
|
||||
@@ -425,8 +417,19 @@ class MessageController extends BaseController
|
||||
}
|
||||
}
|
||||
}
|
||||
// 创建新记录
|
||||
$res = WechatMessageModel::create($data);
|
||||
|
||||
$id = '';
|
||||
if (empty($exists)){
|
||||
// 创建新记录
|
||||
$res = WechatMessageModel::create($data);
|
||||
$id= $res['id'];
|
||||
}else{
|
||||
$id = $data['id'];
|
||||
unset($data['id']);
|
||||
$res = $exists->save($data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 1 文字 3图片 47动态图片 34语言 43视频 42名片 40/20链接 49文件
|
||||
if (!empty($res) && empty($item['isSend']) && in_array($item['msgType'],[1,3,20,34,40,42,43,47,49])){
|
||||
@@ -439,13 +442,14 @@ class MessageController extends BaseController
|
||||
'companyId' => $friend['companyId'],
|
||||
'trafficPoolId' => $trafficPoolId,
|
||||
'source' => 0,
|
||||
'uniqueId' => $res['id'],
|
||||
'uniqueId' => $id,
|
||||
'sourceData' => json_encode([]),
|
||||
'remark' => '用户发送了消息',
|
||||
'createTime' => time(),
|
||||
'updateTime' => time()
|
||||
];
|
||||
Db::name('user_portrait')->insert($data);
|
||||
Db::name('user_portrait')->insert($data);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -461,11 +465,7 @@ class MessageController extends BaseController
|
||||
{
|
||||
// 检查消息是否已存在
|
||||
$exists = WechatMessageModel::where('id', $item['id'])->find();
|
||||
|
||||
// 如果消息已存在,直接返回
|
||||
if ($exists) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// 处理发送者信息
|
||||
$sender = $item['sender'] ?? [];
|
||||
@@ -515,7 +515,12 @@ class MessageController extends BaseController
|
||||
|
||||
// 创建新记录
|
||||
try {
|
||||
WechatMessageModel::create($data);
|
||||
if(empty($exists)){
|
||||
WechatMessageModel::create($data);
|
||||
}else{
|
||||
unset($data['id']);
|
||||
$exists->save($data);
|
||||
}
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user