From f11bc7f68601646f01288843dd62455df793a173 Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Wed, 15 Oct 2025 10:47:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=E6=95=B0=E6=8D=AE=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WechatChatroomController.php | 50 +++----- .../api/controller/WechatFriendController.php | 110 ++++++++++-------- 2 files changed, 76 insertions(+), 84 deletions(-) diff --git a/Server/application/api/controller/WechatChatroomController.php b/Server/application/api/controller/WechatChatroomController.php index af43bfe5..a038dee6 100644 --- a/Server/application/api/controller/WechatChatroomController.php +++ b/Server/application/api/controller/WechatChatroomController.php @@ -125,13 +125,6 @@ class WechatChatroomController extends BaseController }else{ return false; } - - // // 同时保存群成员数据 - // if (!empty($item['members'])) { - // foreach ($item['members'] as $member) { - // $this->saveChatroomMember($member, $item['chatroomId']); - // } - // } } /** @@ -179,9 +172,7 @@ class WechatChatroomController extends BaseController // 保存数据到数据库 if (!empty($response)) { - foreach ($response as $item) { - $this->saveChatroomMember($item, $chatroomId); - } + $this->saveChatroomMember($response, $chatroomId); } if($isInner){ @@ -203,31 +194,24 @@ class WechatChatroomController extends BaseController * @param array $item 群成员数据 * @param string $wechatChatroomId 微信群ID */ - private function saveChatroomMember($item, $wechatChatroomId) + private function saveChatroomMember($data, $wechatChatroomId) { - $data = [ - 'chatroomId' => $wechatChatroomId, - 'wechatId' => isset($item['wechatId']) ? $item['wechatId'] : '', - 'nickname' => isset($item['nickname']) ? $item['nickname'] : '', - 'avatar' => isset($item['avatar']) ? $item['avatar'] : '', - 'conRemark' => isset($item['conRemark']) ? $item['conRemark'] : '', - 'alias' => isset($item['alias']) ? $item['alias'] : '', - 'friendType' => isset($item['friendType']) ? $item['friendType'] : false, - 'updateTime' => time() - ]; - - // 使用chatroomId和wechatId的组合作为唯一性判断 - $member = WechatChatroomMemberModel::where([ - ['chatroomId', '=', $wechatChatroomId], - ['wechatId', '=', $item['wechatId']] - ])->find(); - - if ($member) { - $member->save($data); - } else { - $data['createTime'] = time(); - WechatChatroomMemberModel::create($data); + $sqlData = []; + foreach ($data as $item) { + $sqlData[] = [ + 'chatroomId' => $wechatChatroomId, + 'wechatId' => isset($item['wechatId']) ? $item['wechatId'] : '', + 'nickname' => isset($item['nickname']) ? $item['nickname'] : '', + 'avatar' => isset($item['avatar']) ? $item['avatar'] : '', + 'conRemark' => isset($item['conRemark']) ? $item['conRemark'] : '', + 'alias' => isset($item['alias']) ? $item['alias'] : '', + 'friendType' => isset($item['friendType']) ? $item['friendType'] : false, + 'updateTime' => time() + ]; } + + $member = new WechatChatroomMemberModel(); + $member->saveAll($sqlData); } /** diff --git a/Server/application/api/controller/WechatFriendController.php b/Server/application/api/controller/WechatFriendController.php index 2d747689..1bb1d0bc 100644 --- a/Server/application/api/controller/WechatFriendController.php +++ b/Server/application/api/controller/WechatFriendController.php @@ -79,12 +79,17 @@ class WechatFriendController extends BaseController // 保存数据到数据库 if (is_array($response)) { $isUpdate = false; - foreach ($response as $item) { + $updated = $this->saveFriend($response); + if($updated && $isDel == 0){ + $isUpdate = true; + } + + /*foreach ($response as $item) { $updated = $this->saveFriend($item); if($updated && $isDel == 0){ $isUpdate = true; } - } + }*/ } if ($isInner) { @@ -107,58 +112,61 @@ class WechatFriendController extends BaseController * @param array $item 微信好友数据 * @return bool 是否创建或更新了记录 */ - private function saveFriend($item) + private function saveFriend($data) { - $data = [ - 'id' => $item['id'], - 'wechatAccountId' => $item['wechatAccountId'], - 'alias' => $item['alias'], - 'wechatId' => $item['wechatId'], - 'conRemark' => $item['conRemark'], - 'nickname' => $item['nickname'], - 'pyInitial' => $item['pyInitial'], - 'quanPin' => $item['quanPin'], - 'avatar' => $item['avatar'], - 'gender' => $item['gender'], - 'region' => $item['region'], - 'addFrom' => $item['addFrom'], - 'labels' => is_array($item['labels']) ? json_encode($item['labels']) : json_encode([]), - 'siteLabels' => json_encode([]), - 'signature' => $item['signature'], - 'isDeleted' => $item['isDeleted'], - 'isPassed' => $item['isPassed'], - 'deleteTime' => !empty($item['isDeleted']) ? strtotime($item['deleteTime']) : 0, - 'accountId' => $item['accountId'], - 'extendFields' => is_array($item['extendFields']) ? json_encode($item['extendFields']) : json_encode([]), - 'accountUserName' => $item['accountUserName'], - 'accountRealName' => $item['accountRealName'], - 'accountNickname' => $item['accountNickname'], - 'ownerAlias' => $item['ownerAlias'], - 'ownerWechatId' => $item['ownerWechatId'], - 'ownerNickname' => $item['ownerNickname'], - 'ownerAvatar' => $item['ownerAvatar'], - 'phone' => $item['phone'], - 'thirdParty' => is_array($item['thirdParty']) ? json_encode($item['thirdParty']) : json_encode([]), - 'groupId' => $item['groupId'], - 'passTime' => !empty($item['isPassed']) && $item['passTime'] != '0001-01-01T00:00:00' ? strtotime($item['passTime']) : 0, - 'additionalPicture' => $item['additionalPicture'], - 'desc' => $item['desc'], - 'country' => $item['country'], - 'privince' => isset($item['privince']) ? $item['privince'] : '', - 'city' => isset($item['city']) ? $item['city'] : '', - 'createTime' => isset($item['createTime']) ? strtotime($item['createTime']) : 0, - 'updateTime' => time() - ]; - - // 使用ID作为唯一性判断 - $friend = WechatFriendModel::where('id', $item['id'])->find(); + $sqlData = []; + foreach ($data as $item) { + $sqlData[] = [ + 'id' => $item['id'], + 'wechatAccountId' => $item['wechatAccountId'], + 'alias' => $item['alias'], + 'wechatId' => $item['wechatId'], + 'conRemark' => $item['conRemark'], + 'nickname' => $item['nickname'], + 'pyInitial' => $item['pyInitial'], + 'quanPin' => $item['quanPin'], + 'avatar' => $item['avatar'], + 'gender' => $item['gender'], + 'region' => $item['region'], + 'addFrom' => $item['addFrom'], + 'labels' => is_array($item['labels']) ? json_encode($item['labels']) : json_encode([]), + 'siteLabels' => json_encode([]), + 'signature' => $item['signature'], + 'isDeleted' => $item['isDeleted'], + 'isPassed' => $item['isPassed'], + 'deleteTime' => !empty($item['isDeleted']) ? strtotime($item['deleteTime']) : 0, + 'accountId' => $item['accountId'], + 'extendFields' => is_array($item['extendFields']) ? json_encode($item['extendFields']) : json_encode([]), + 'accountUserName' => $item['accountUserName'], + 'accountRealName' => $item['accountRealName'], + 'accountNickname' => $item['accountNickname'], + 'ownerAlias' => $item['ownerAlias'], + 'ownerWechatId' => $item['ownerWechatId'], + 'ownerNickname' => $item['ownerNickname'], + 'ownerAvatar' => $item['ownerAvatar'], + 'phone' => $item['phone'], + 'thirdParty' => is_array($item['thirdParty']) ? json_encode($item['thirdParty']) : json_encode([]), + 'groupId' => $item['groupId'], + 'passTime' => !empty($item['isPassed']) && $item['passTime'] != '0001-01-01T00:00:00' ? strtotime($item['passTime']) : 0, + 'additionalPicture' => $item['additionalPicture'], + 'desc' => $item['desc'], + 'country' => $item['country'], + 'privince' => isset($item['privince']) ? $item['privince'] : '', + 'city' => isset($item['city']) ? $item['city'] : '', + 'createTime' => isset($item['createTime']) ? strtotime($item['createTime']) : 0, + 'updateTime' => time() + ]; + } + $friend = new WechatFriendModel(); + $friend->saveAll($sqlData); if ($friend) { - unset($data['siteLabels']); - $friend->save($data); - return true; - } else { - WechatFriendModel::create($data); + if ($friend->isUpdate()){ + return true; + }else{ + return false; + } + }else{ return false; } }