调整代码
This commit is contained in:
@@ -86,7 +86,27 @@ class ContactsDBOperator(BaseDBOperator):
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信群成员信息表';
|
||||
""")
|
||||
|
||||
self.logger.info("成功创建或确认微信联系人表和群成员表存在")
|
||||
self.execute_update("""
|
||||
CREATE TABLE IF NOT EXISTS t_chatrooms (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
chatroom_id VARCHAR(64) NOT NULL COMMENT '群聊ID',
|
||||
nick_name VARCHAR(128) COMMENT '群昵称',
|
||||
py_initial VARCHAR(128) COMMENT '群昵称拼音首字母',
|
||||
quan_pin VARCHAR(256) COMMENT '群昵称全拼',
|
||||
sex TINYINT COMMENT '性别',
|
||||
remark VARCHAR(128) COMMENT '备注',
|
||||
remark_py_initial VARCHAR(128) COMMENT '备注拼音首字母',
|
||||
remark_quan_pin VARCHAR(256) COMMENT '备注全拼',
|
||||
chat_room_notify TINYINT COMMENT '群通知',
|
||||
chat_room_owner VARCHAR(64) COMMENT '群主微信ID',
|
||||
small_head_img_url TEXT COMMENT '群头像URL',
|
||||
member_list TEXT COMMENT '成员列表(JSON)',
|
||||
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
UNIQUE KEY `idx_chatroom_id` (`chatroom_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信群信息表';
|
||||
""")
|
||||
self.logger.info("成功创建或确认微信群信息表存在")
|
||||
except Exception as e:
|
||||
self.logger.error(f"创建微信联系人表或群成员表失败: {e}")
|
||||
raise
|
||||
@@ -255,7 +275,11 @@ class ContactsDBOperator(BaseDBOperator):
|
||||
"""
|
||||
try:
|
||||
sql = """
|
||||
SELECT user_name, nick_name, remark FROM t_wechat_contacts
|
||||
SELECT user_name, nick_name, remark
|
||||
FROM t_wechat_contacts
|
||||
union all
|
||||
SELECT wxid as user_name, nick_name, display_name as remark
|
||||
FROM t_chatroom_member
|
||||
"""
|
||||
|
||||
results = self.execute_query(sql)
|
||||
@@ -411,3 +435,73 @@ class ContactsDBOperator(BaseDBOperator):
|
||||
except Exception as e:
|
||||
self.logger.error(f"处理群聊{chatroom_id}成员详情数据失败: {e}")
|
||||
return False
|
||||
|
||||
def save_chatroom_info(self, chatroom_data: dict) -> bool:
|
||||
"""保存群信息到数据库"""
|
||||
try:
|
||||
data = {
|
||||
'chatroom_id': chatroom_data.get('chatroomId', ''),
|
||||
'nick_name': chatroom_data.get('nickName', ''),
|
||||
'py_initial': chatroom_data.get('pyInitial', ''),
|
||||
'quan_pin': chatroom_data.get('quanPin', ''),
|
||||
'sex': chatroom_data.get('sex', 0),
|
||||
'remark': chatroom_data.get('remark', ''),
|
||||
'remark_py_initial': chatroom_data.get('remarkPyInitial', ''),
|
||||
'remark_quan_pin': chatroom_data.get('remarkQuanPin', ''),
|
||||
'chat_room_notify': chatroom_data.get('chatRoomNotify', 0),
|
||||
'chat_room_owner': chatroom_data.get('chatRoomOwner', ''),
|
||||
'small_head_img_url': chatroom_data.get('smallHeadImgUrl', ''),
|
||||
'member_list': json.dumps(chatroom_data.get('memberList', []))
|
||||
}
|
||||
fields = ', '.join(data.keys())
|
||||
placeholders = ', '.join(['%s'] * len(data))
|
||||
update_clause = ', '.join([f"{k}=VALUES({k})" for k in data.keys() if k != 'chatroom_id'])
|
||||
values = tuple(data.values())
|
||||
sql = f"""
|
||||
INSERT INTO t_chatrooms ({fields})
|
||||
VALUES ({placeholders})
|
||||
ON DUPLICATE KEY UPDATE {update_clause}
|
||||
"""
|
||||
self.execute_update(sql, values)
|
||||
self.logger.info(f"成功保存群聊 {data['chatroom_id']} 信息")
|
||||
return True
|
||||
except Exception as e:
|
||||
self.logger.error(f"保存群聊信息失败: {e}")
|
||||
return False
|
||||
|
||||
def get_chatroom_info(self, chatroom_id: str) -> Optional[dict]:
|
||||
"""获取群信息"""
|
||||
try:
|
||||
sql = "SELECT * FROM t_chatrooms WHERE chatroom_id = %s LIMIT 1"
|
||||
result = self.execute_query(sql, (chatroom_id,), fetch_one=True)
|
||||
if result and result.get('member_list'):
|
||||
result['member_list'] = json.loads(result['member_list'])
|
||||
return result
|
||||
except Exception as e:
|
||||
self.logger.error(f"获取群聊{chatroom_id}信息失败: {e}")
|
||||
return None
|
||||
|
||||
def update_chatroom_info(self, chatroom_id: str, update_data: dict) -> bool:
|
||||
"""更新群信息"""
|
||||
try:
|
||||
set_clause = ', '.join([f"{k}=%s" for k in update_data.keys()])
|
||||
values = list(update_data.values())
|
||||
values.append(chatroom_id)
|
||||
sql = f"UPDATE t_chatrooms SET {set_clause} WHERE chatroom_id = %s"
|
||||
self.execute_update(sql, tuple(values))
|
||||
self.logger.info(f"成功更新群聊 {chatroom_id} 信息")
|
||||
return True
|
||||
except Exception as e:
|
||||
self.logger.error(f"更新群聊{chatroom_id}信息失败: {e}")
|
||||
return False
|
||||
|
||||
def delete_chatroom_info(self, chatroom_id: str) -> bool:
|
||||
"""删除群信息"""
|
||||
try:
|
||||
sql = "DELETE FROM t_chatrooms WHERE chatroom_id = %s"
|
||||
self.execute_update(sql, (chatroom_id,))
|
||||
self.logger.info(f"成功删除群聊 {chatroom_id} 信息")
|
||||
return True
|
||||
except Exception as e:
|
||||
self.logger.error(f"删除群聊{chatroom_id}信息失败: {e}")
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user