fix: 自由客户分配-客户名JOIN users; 销售下拉COALESCE username防NULL

This commit is contained in:
yumoqing 2026-07-14 11:15:08 +08:00
parent bec3e8f583
commit 5626e1b516

View File

@ -1041,19 +1041,19 @@ async def get_free_customers(request):
if is_owner: if is_owner:
rows = await sor.sqlExe( rows = await sor.sqlExe(
"""SELECT dcb.id as bind_id, dcb.customerid, """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 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 = '' WHERE dcb.sale_id IS NULL OR dcb.sale_id = ''
ORDER BY o.orgname""", {}) ORDER BY customer_name""", {})
else: else:
rows = await sor.sqlExe( rows = await sor.sqlExe(
"""SELECT dcb.id as bind_id, dcb.customerid, """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 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 = '') WHERE dcb.resellerid = ${rid}$ AND (dcb.sale_id IS NULL OR dcb.sale_id = '')
ORDER BY o.orgname""", ORDER BY customer_name""",
{'rid': userorgid}) {'rid': userorgid})
return rows or [] return rows or []
@ -1072,23 +1072,23 @@ async def get_bound_customers(request):
if is_owner: if is_owner:
rows = await sor.sqlExe( rows = await sor.sqlExe(
"""SELECT dcb.id as bind_id, dcb.customerid, """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,
u.nick_name as sale_name COALESCE(u.username, u.nick_name, u.id) as sale_name
FROM discount_customer_bind dcb 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 LEFT JOIN users u ON u.id = dcb.sale_id
WHERE dcb.sale_id IS NOT NULL AND dcb.sale_id != '' WHERE dcb.sale_id IS NOT NULL AND dcb.sale_id != ''
ORDER BY o.orgname""", {}) ORDER BY customer_name""", {})
else: else:
rows = await sor.sqlExe( rows = await sor.sqlExe(
"""SELECT dcb.id as bind_id, dcb.customerid, """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,
u.nick_name as sale_name COALESCE(u.username, u.nick_name, u.id) as sale_name
FROM discount_customer_bind dcb 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 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 != '' 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}) {'rid': userorgid})
return rows or [] return rows or []
@ -1141,20 +1141,20 @@ async def get_reseller_sales(request):
async with DBPools().sqlorContext('sage') as sor: async with DBPools().sqlorContext('sage') as sor:
if userorgid == '0': if userorgid == '0':
rows = await sor.sqlExe( 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 FROM users u
JOIN userrole ur ON ur.userid = u.id JOIN userrole ur ON ur.userid = u.id
JOIN role r ON r.id = ur.roleid JOIN role r ON r.id = ur.roleid
WHERE r.name = 'sale' WHERE r.name = 'sale'
ORDER BY u.nick_name""", {}) ORDER BY sale_name""", {})
else: else:
rows = await sor.sqlExe( 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 FROM users u
JOIN userrole ur ON ur.userid = u.id JOIN userrole ur ON ur.userid = u.id
JOIN role r ON r.id = ur.roleid JOIN role r ON r.id = ur.roleid
WHERE r.name = 'sale' AND u.orgid = ${oid}$ WHERE r.name = 'sale' AND u.orgid = ${oid}$
ORDER BY u.nick_name""", ORDER BY sale_name""",
{'oid': userorgid}) {'oid': userorgid})
return [{'value': r.sale_id, 'text': r.sale_name} for r in rows] return [{'value': r.sale_id, 'text': r.sale_name} for r in rows]