From 22a028d59908891a38c0b756d41e0c4db43ca513 Mon Sep 17 00:00:00 2001 From: ymq1 Date: Sat, 28 Jun 2025 16:30:10 +0800 Subject: [PATCH] bugfix --- filemgr/filemgr.py | 188 ++++++++++++++++++++++++++------------------- 1 file changed, 107 insertions(+), 81 deletions(-) diff --git a/filemgr/filemgr.py b/filemgr/filemgr.py index 6d8d28f..6a3e379 100644 --- a/filemgr/filemgr.py +++ b/filemgr/filemgr.py @@ -17,22 +17,28 @@ class FileMgr: async def get_bizinfo_nodes(self, request): db = DBPools() - userinfo = await get_session_userinfo(request) dbname = get_dbname() async with db.sqlorContext(dbname) as sor: - ns = { - 'orgid':usrinfo.userorgid, - 'biztype':self.biztype - } - recs = await sor.R('folderinfo', ns) - return recs + return await self.sor_get_bizinfo_nodes(sor, request) return [] + + async def sor_get_bizinfo_nodes(self, sor, request): + userinfo = await get_session_userinfo(request) + ns = { + 'orgid':usrinfo.userorgid, + 'biztype':self.biztype + } + recs = await sor.R('folderinfo', ns) + return recs async def add_bizinfo_node(self, request, ns): - userinfo = await get_session_userinfo(request) dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: + return await self.sor_add_bizinfo_node(sor,request, ns) + return False + async def sor_add_bizinfo_node(self, sor, request, ns): + userinfo = await get_session_userinfo(request) ns['orgid'] = userinfo.userorgid, ns['biztype'] = self.biztype ns['id'] = getID() @@ -40,76 +46,98 @@ class FileMgr: # ns['max_size'] = await get_params(sor, userinfo.userid, 'folder_max_size'); await sor.C('folderinfo', ns) return True - return False async def delete_bizinfo_node(self, request, ns): - userinfo = await get_session_userinfo(request) dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: - ns1['orgid'] = userinfo.userorgid, - ns1['biztype'] = self.biztype - ns1['id'] = ns['id'] - await sor.D('folderinfo', ns1) - return True + return await self.sor_delete_bizinfo_node(self, sor, request, ns) return False - async def update_bizinfo_node(self, request, ns): + async def sor_delete_bizinfo_node(self, sor, request, ns): userinfo = await get_session_userinfo(request) + ns1['orgid'] = userinfo.userorgid, + ns1['biztype'] = self.biztype + ns1['id'] = ns['id'] + await sor.D('folderinfo', ns1) + return True + + async def update_bizinfo_node(self, request, ns): dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: - ns1['orgid'] = userinfo.userorgid, - ns1['biztype'] = self.biztype - ns1['id'] = ns['id'] - recs = await sor.R('folderinfo', ns1) - if len(recs) > 0: - await sor.U('folderinfo', ns1) - return True + return self.sor_update_bizinfo_node(sor, request, ns) + return False + + async def sor_update_bizinfo_node(self, sor, request, ns): + userinfo = await get_session_userinfo(request) + ns1['orgid'] = userinfo.userorgid, + ns1['biztype'] = self.biztype + ns1['id'] = ns['id'] + recs = await sor.R('folderinfo', ns1) + if len(recs) > 0: + await sor.U('folderinfo', ns1) + return True return False async def add_folder(self, request, ns): - userinfo = await get_session_userinfo(request) dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: - ns1['orgid'] = userinfo.userorgid, - ns1['biztype'] = self.biztype - ns1['id'] = ns['id'] - await sor.C('folderinfo', ns1) - return True + return await self.sor_add_folder(sor, request, ns) return False + async def sor_add_folder(self, sor, request, ns): + userinfo = await get_session_userinfo(request) + ns1['orgid'] = userinfo.userorgid, + ns1['biztype'] = self.biztype + ns1['id'] = ns['id'] + await sor.C('folderinfo', ns1) + return True async def get_subfolder(self, request, fid, fiid): userinfo = await get_session_userinfo(request) dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: - sql = """select a.id as fiid, b.* + return await self.sor_get_subfolder(sor, request, fid, fiid) + return [] + + async def sor_get_subfolder(self, sor, request, fid, fiid): + sql = """select x.*, 'folder' as rtype, +case when y.id is null then 1 +else 0 end as is_left +from (select a.id as fiid, b.* from folderinfo a, folder b where a.id = ${fiid}$ and b.fiid = a.id and b.parentid = ${fid}$ and a.orgid = ${orgid}$ and a.biztype = ${biztype}$ -order by name""" - ns = { - 'fid':fid, - 'fiid':fiid, - 'orgid':userinfo.userorgid, - 'biztype':self.biztype - } - recs = await sor.sqlExe(sql, ns) - return recs - await sor.D('folderinfo', ns1) - return [] - +order by name) as x left join ( +select unique a.* from folder a left join folder b on a.id = b.par +entid where b.id is not NULL +) as y +on x.id = y.id +""" + ns = { + 'fid':fid, + 'fiid':fiid, + 'orgid':userinfo.userorgid, + 'biztype':self.biztype + } + recs = await sor.sqlExe(sql, ns) + return recs + async def get_files(self, request, fid, fiid): - userinfo = await get_session_userinfo(request) dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: - sql = """select a.id as fiid, b.* + return await self.sor_get_files(sor, request, fid, fiid) + return [] + + async def sor_get_files(self, sor, request, fid, fiid): + userinfo = await get_session_userinfo(request) + sql = """select a.id as fiid, b.* from folderinfo a, file b where a.id = ${fiid}$ and b.folderid = ${fid}$ @@ -117,18 +145,25 @@ where a.id = ${fiid}$ and b.userid = ${userid}$ and a.biztype = ${biztype}$ order by name""" - ns = { - 'fid':fid, - 'fiid':fiid, - 'userid':userinfo.userid, - 'orgid':userinfo.userorgid, - 'biztype':self.biztype - } - recs = await sor.sqlExe(sql, ns) - return recs - return [] + ns = { + 'fid':fid, + 'fiid':fiid, + 'userid':userinfo.userid, + 'orgid':userinfo.userorgid, + 'biztype':self.biztype + } + recs = await sor.sqlExe(sql, ns) + return recs - async def get_folderinfo(self, sor, userinfo, fiid): + async def get_folderinfo(self, sor, fiid): + dbname = get_dbname() + db = DBPools() + async with db.sqlorContext(dbname) as sor: + return await self.sor_get_folderinfo(sor, request, fid, fiid) + return [] + + async def sor_get_folderinfo(self, sor, fiid): + userinfo = await get_session_userinfo(request) sql = """select * from folderinfo where id = ${fiid}$ and orgid = ${orgid}$ @@ -143,41 +178,32 @@ where id = ${fiid}$ return recs return None - async def add_folder(self, request, ns): - userinfo = await get_session_userinfo(request) - dbname = get_dbname() - db = DBPools() - async with db.sqlorContext(dbname) as sor: - sql = """select * from folder""" - ns1['orgid'] = userinfo.userorgid, - ns1['biztype'] = self.biztype - ns1['id'] = ns['id'] - await sor.C('folderinfo', ns1) - return True - return False - async def delete_file(self, request, fid, fiid): - userinfo = await get_session_userinfo(request) dbname = get_dbname() db = DBPools() async with db.sqlorContext(dbname) as sor: - sql = """select a.id as fiid, b.* + return await self.sor_delete_file(self, sor, request, fid, fiid) + return False + + async def sor_delete_file(self, sor, request, fid, fiid): + userinfo = await get_session_userinfo(request) + sql = """select a.id as fiid, b.* from folderinfo a, file b where a.id = ${fiid}$ and b.id = ${fid}$ and a.orgid = ${orgid} and b.userid = ${userid}$ and a.biztype = ${biztype}$""" - ns = { - 'fid':fid, - 'fiid':fiid, - 'userid':userinfo.userid, - 'orgid':userinfo.userorgid, - 'biztype':self.biztype - } - recs = await sor.sqlExe(sql, ns) - if len(recs) > 0: - await sor.D('file', {'id': fid}) - return True + ns = { + 'fid':fid, + 'fiid':fiid, + 'userid':userinfo.userid, + 'orgid':userinfo.userorgid, + 'biztype':self.biztype + } + recs = await sor.sqlExe(sql, ns) + if len(recs) > 0: + await sor.D('file', {'id': fid}) + return True return False