mirror of
https://github.com/LC044/WeChatMsg
synced 2025-02-22 19:02:17 +08:00
进入界面后联系人按照最新聊天时间排序
This commit is contained in:
parent
41879b2fbc
commit
0e92c58599
@ -22,6 +22,61 @@ def singleton(cls):
|
||||
def is_database_exist():
|
||||
return os.path.exists(db_path)
|
||||
|
||||
lockMSG = threading.Lock()
|
||||
DBMSG = None
|
||||
cursorMSG = None
|
||||
db_msg_path = "./app/Database/Msg/MSG.db"
|
||||
|
||||
@singleton
|
||||
class MicroMSGMsg:
|
||||
def __init__(self):
|
||||
self.DBMSG = None
|
||||
self.cursorMSG = None
|
||||
self.open_flag = False
|
||||
self.init_database()
|
||||
|
||||
def init_database(self):
|
||||
if not self.open_flag:
|
||||
if os.path.exists(db_msg_path):
|
||||
self.DBMSG = sqlite3.connect(db_msg_path, check_same_thread=False)
|
||||
# '''创建游标'''
|
||||
self.cursorMSG = self.DBMSG.cursor()
|
||||
self.open_flag = True
|
||||
if lockMSG.locked():
|
||||
lockMSG.release()
|
||||
|
||||
def get_contact(self, contacts):
|
||||
if not self.open_flag:
|
||||
return None
|
||||
try:
|
||||
lockMSG.acquire(True)
|
||||
sql = '''select StrTalker, MAX(CreateTime) from MSG group by StrTalker'''
|
||||
self.cursorMSG.execute(sql)
|
||||
res = self.cursorMSG.fetchall()
|
||||
res = {StrTalker: CreateTime for StrTalker, CreateTime in res}
|
||||
contacts = [list(cur_contact) for cur_contact in contacts]
|
||||
for i, cur_contact in enumerate(contacts):
|
||||
if cur_contact[0] in res:
|
||||
contacts[i].append(res[cur_contact[0]])
|
||||
else:
|
||||
contacts[i].append(0)
|
||||
contacts.sort(key=lambda cur_contact: cur_contact[-1], reverse=True)
|
||||
finally:
|
||||
lockMSG.release()
|
||||
return contacts
|
||||
|
||||
def close(self):
|
||||
if self.open_flag:
|
||||
try:
|
||||
lockMSG.acquire(True)
|
||||
self.open_flag = False
|
||||
self.DBMSG.close()
|
||||
finally:
|
||||
lockMSG.release()
|
||||
|
||||
def __del__(self):
|
||||
self.close()
|
||||
|
||||
|
||||
@singleton
|
||||
class MicroMsg:
|
||||
@ -61,7 +116,7 @@ class MicroMsg:
|
||||
result = self.cursor.fetchall()
|
||||
finally:
|
||||
lock.release()
|
||||
return result
|
||||
return MicroMSGMsg().get_contact(result)
|
||||
|
||||
def get_contact_by_username(self, username):
|
||||
if not self.open_flag:
|
||||
|
Loading…
Reference in New Issue
Block a user