From faedbb8edfb1a22bd3beb4b566ce69bb5fa26842 Mon Sep 17 00:00:00 2001 From: ping <1017253325@qq.com> Date: Wed, 22 Jul 2026 10:18:48 +0800 Subject: [PATCH] update --- b/user/get_user_and_role.dspy | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/b/user/get_user_and_role.dspy b/b/user/get_user_and_role.dspy index 6c555a2..f209a11 100644 --- a/b/user/get_user_and_role.dspy +++ b/b/user/get_user_and_role.dspy @@ -47,14 +47,21 @@ async def get_user_and_role(ns={}): SELECT u.* FROM users u LEFT JOIN organization o ON u.orgid = o.id AND o.del_flg='0' + LEFT JOIN ( + SELECT userid, MAX(create_at) AS userrole_create_at + FROM userrole + WHERE del_flg='0' + GROUP BY userid + ) ur_sort ON u.id = ur_sort.userid WHERE %s - ORDER BY u.create_at DESC + ORDER BY ur_sort.userrole_create_at DESC, u.create_at DESC LIMIT %d OFFSET %d """ % (where_sql, page_size, offset) users = await sor.sqlExe(sql, {'orgid': orgid}) for user in users: user['roles'] = [] userroles = await sor.R('userrole', {'userid': user['id']}) + userroles = sorted(userroles, key=lambda item: item.get('create_at') or '', reverse=True) for userrole in userroles: if userrole.get('del_flg') == '1' or not userrole.get('roleid'): continue