fix: free customer name empty when org missing; use LEFT JOIN + COALESCE fallback

This commit is contained in:
yumoqing 2026-07-14 12:00:53 +08:00
parent 5b789995a6
commit d05bd3ec6f

View File

@ -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(o.orgname, dcb.customerid) as customer_name, dcb.sale_id
FROM discount_customer_bind dcb
JOIN organization o ON o.id = dcb.customerid
LEFT JOIN organization o ON o.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(o.orgname, dcb.customerid) as customer_name, dcb.sale_id
FROM discount_customer_bind dcb
JOIN organization o ON o.id = dcb.customerid
LEFT JOIN organization o ON o.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,
COALESCE(o.orgname, dcb.customerid) 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 organization o ON o.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,
COALESCE(o.orgname, dcb.customerid) 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 organization o ON o.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 []