diff --git a/Server/application/api/controller/MessageController.php b/Server/application/api/controller/MessageController.php index 6b47ebe4..734f3f7d 100644 --- a/Server/application/api/controller/MessageController.php +++ b/Server/application/api/controller/MessageController.php @@ -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;