简化信息存储

This commit is contained in:
liuwei
2025-04-28 10:53:10 +08:00
parent 1db467b390
commit d175c58380
2 changed files with 69 additions and 3 deletions

View File

@@ -322,7 +322,74 @@ class ContactsDBOperator(BaseDBOperator):
except Exception as e:
self.logger.error(f"获取所有联系人名称映射失败: {e}")
return {}
def save_chatroom_member_simple(self, chatroom_id: str, member_details: List[Dict]) -> bool:
"""保存简化版的群成员信息到数据库
Args:
chatroom_id: 群聊ID
member_details: 群成员信息列表,格式为:
[{'wxid': str, 'nickName': str, 'inviterUserName': str,
'memberFlag': int, 'displayName': str,
'bigHeadImgUrl': str, 'smallHeadImgUrl': str}]
Returns:
bool: 是否成功保存
"""
if not member_details or not chatroom_id:
self.logger.warning(f"没有群聊{chatroom_id}的成员信息需要保存")
return False
try:
for member in member_details:
wxid = member.get('wxid', '')
if not wxid:
continue
# 构建数据
data = {
'chatroom_id': chatroom_id,
'wxid': wxid,
'nick_name': member.get('nickName', ''),
'display_name': member.get('displayName', ''),
'inviter_user_name': member.get('inviterUserName', ''),
'member_flag': member.get('memberFlag', 0),
'big_head_img_url': member.get('bigHeadImgUrl', ''),
'small_head_img_url': member.get('smallHeadImgUrl', ''),
'is_owner': 0, # 默认值
'is_admin': 0, # 默认值
# 其他字段使用默认值
'sex': 0,
'signature': '',
'alias': '',
'country': '',
'province': '',
'city': '',
'label_list': '',
'phone_num_list': '',
'py_initial': '',
'quan_pin': '',
'remark_py_initial': '',
'remark_quan_pin': ''
}
# 构建SQL语句
fields = ', '.join(data.keys())
placeholders = ', '.join(['%s'] * len(data))
values = tuple(data.values())
sql = f"""
REPLACE INTO t_chatroom_member ({fields})
VALUES ({placeholders})
"""
self.execute_update(sql, values)
self.logger.info(f"成功保存群聊{chatroom_id}{len(member_details)}个成员信息")
return True
except Exception as e:
self.logger.error(f"保存群聊{chatroom_id}的成员信息失败: {e}")
return False
def save_chatroom_member_detail(self, chatroom_id: str, member_details: List[Dict]) -> bool:
"""保存群成员详细信息到数据库

View File

@@ -170,15 +170,14 @@ class Robot(Job):
self.LOG.info(f"添加新的群信息到数据库成功:{chatroom_info}")
# 添加 memberList 到群组信息表中
member_list = chatroom_info.get('data', {}).get('memberList', [])
self.contacts_db.save_chatroom_member_detail(msg.roomid, member_list)
for info in chatroom_info.get('data', {}).get('memberList', []):
self.contacts_db.save_chatroom_member_simple(msg.roomid, member_list)
for info in member_list:
wxid = info.get("wxid", "")
self.LOG.info(f"已添加新用户信息到数据库: {wxid}")
# 更新缓存
self.allContacts[wxid] = info.get("nickName", "nickName")
self.LOG.info(f"已维护新用户信息到缓存: {wxid}")
self.contact_manager.set_contacts(self.allContacts)
self.contacts_db.save_chatroom_member_detail(msg.roomid, member_list)
except Exception as e:
self.LOG.error(f"chatroom_info save error: {e}")
return