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():
|
def is_database_exist():
|
||||||
return os.path.exists(db_path)
|
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
|
@singleton
|
||||||
class MicroMsg:
|
class MicroMsg:
|
||||||
@ -61,7 +116,7 @@ class MicroMsg:
|
|||||||
result = self.cursor.fetchall()
|
result = self.cursor.fetchall()
|
||||||
finally:
|
finally:
|
||||||
lock.release()
|
lock.release()
|
||||||
return result
|
return MicroMSGMsg().get_contact(result)
|
||||||
|
|
||||||
def get_contact_by_username(self, username):
|
def get_contact_by_username(self, username):
|
||||||
if not self.open_flag:
|
if not self.open_flag:
|
||||||
|
Loading…
Reference in New Issue
Block a user