From 5626e1b5164de02a5979be578fa8f5c48d2e8b59 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 14 Jul 2026 11:15:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=87=AA=E7=94=B1=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E5=88=86=E9=85=8D-=E5=AE=A2=E6=88=B7=E5=90=8DJOIN=20users;=20?= =?UTF-8?q?=E9=94=80=E5=94=AE=E4=B8=8B=E6=8B=89COALESCE=20username?= =?UTF-8?q?=E9=98=B2NULL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- discount/init.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/discount/init.py b/discount/init.py index 1befdc1..a9b75cc 100644 --- a/discount/init.py +++ b/discount/init.py @@ -1041,19 +1041,19 @@ async def get_free_customers(request): if is_owner: rows = await sor.sqlExe( """SELECT dcb.id as bind_id, dcb.customerid, - o.orgname as customer_name, dcb.sale_id + COALESCE(u.username, u.nick_name, u.id) as customer_name, dcb.sale_id FROM discount_customer_bind dcb - JOIN organization o ON o.id = dcb.customerid + LEFT JOIN users u ON u.id = dcb.customerid WHERE dcb.sale_id IS NULL OR dcb.sale_id = '' - ORDER BY o.orgname""", {}) + ORDER BY customer_name""", {}) else: rows = await sor.sqlExe( """SELECT dcb.id as bind_id, dcb.customerid, - o.orgname as customer_name, dcb.sale_id + COALESCE(u.username, u.nick_name, u.id) as customer_name, dcb.sale_id FROM discount_customer_bind dcb - JOIN organization o ON o.id = dcb.customerid + LEFT JOIN users u ON u.id = dcb.customerid WHERE dcb.resellerid = ${rid}$ AND (dcb.sale_id IS NULL OR dcb.sale_id = '') - ORDER BY o.orgname""", + ORDER BY customer_name""", {'rid': userorgid}) return rows or [] @@ -1072,23 +1072,23 @@ async def get_bound_customers(request): if is_owner: rows = await sor.sqlExe( """SELECT dcb.id as bind_id, dcb.customerid, - o.orgname as customer_name, dcb.sale_id, - u.nick_name as sale_name + COALESCE(u.username, u.nick_name, u.id) as customer_name, dcb.sale_id, + COALESCE(u.username, u.nick_name, u.id) as sale_name FROM discount_customer_bind dcb - JOIN organization o ON o.id = dcb.customerid + LEFT JOIN users u ON u.id = dcb.customerid LEFT JOIN users u ON u.id = dcb.sale_id WHERE dcb.sale_id IS NOT NULL AND dcb.sale_id != '' - ORDER BY o.orgname""", {}) + ORDER BY customer_name""", {}) else: rows = await sor.sqlExe( """SELECT dcb.id as bind_id, dcb.customerid, - o.orgname as customer_name, dcb.sale_id, - u.nick_name as sale_name + COALESCE(u.username, u.nick_name, u.id) as customer_name, dcb.sale_id, + COALESCE(u.username, u.nick_name, u.id) as sale_name FROM discount_customer_bind dcb - JOIN organization o ON o.id = dcb.customerid + LEFT JOIN users u ON u.id = dcb.customerid LEFT JOIN users u ON u.id = dcb.sale_id WHERE dcb.resellerid = ${rid}$ AND dcb.sale_id IS NOT NULL AND dcb.sale_id != '' - ORDER BY o.orgname""", + ORDER BY customer_name""", {'rid': userorgid}) return rows or [] @@ -1141,20 +1141,20 @@ async def get_reseller_sales(request): async with DBPools().sqlorContext('sage') as sor: if userorgid == '0': rows = await sor.sqlExe( - """SELECT DISTINCT u.id as sale_id, u.nick_name as sale_name + """SELECT DISTINCT u.id as sale_id, COALESCE(u.username, u.nick_name, u.id) as sale_name FROM users u JOIN userrole ur ON ur.userid = u.id JOIN role r ON r.id = ur.roleid WHERE r.name = 'sale' - ORDER BY u.nick_name""", {}) + ORDER BY sale_name""", {}) else: rows = await sor.sqlExe( - """SELECT DISTINCT u.id as sale_id, u.nick_name as sale_name + """SELECT DISTINCT u.id as sale_id, COALESCE(u.username, u.nick_name, u.id) as sale_name FROM users u JOIN userrole ur ON ur.userid = u.id JOIN role r ON r.id = ur.roleid WHERE r.name = 'sale' AND u.orgid = ${oid}$ - ORDER BY u.nick_name""", + ORDER BY sale_name""", {'oid': userorgid}) return [{'value': r.sale_id, 'text': r.sale_name} for r in rows]