kboss/b/customer/getNoinvitationcode.dspy
2025-11-18 14:20:47 +08:00

111 lines
4.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

async def getNoinvitationcode(ns={}):
"""展示所有没有销售的客户"""
try:
db = DBPools()
async with db.sqlorContext('kboss') as sor:
# 获取组织信息
orgs = await sor.R('organization', {"org_type": '0'})
if not orgs:
return {'status': False, 'message': '未找到组织信息'}
# 获取目标组织ID优先使用ns中的orgid否则使用第一个组织的ID
target_org_id = ns.get('orgid') or orgs[0]['id']
# 获取分页参数
page = int(ns.get('page', 1)) # 当前页码默认为1
page_size = int(ns.get('size', 10)) # 每页数量默认为10
offset = (page - 1) * page_size # 计算偏移量
# 获取筛选条件
orgname = ns.get('orgname', '').strip() # 组织名称
contactor_phone = ns.get('contactor_phone', '').strip() # 联系人电话
# 构建WHERE条件
where_conditions = [
"(c.salemanid IS NULL OR c.salemanid = '')",
"o.parentid = '%s'",
"c.del_flg = '0'",
"o.del_flg = '0'"
]
params = [target_org_id]
# 添加组织名称模糊查询条件
if orgname:
where_conditions.append("o.orgname LIKE '%s'")
params.append(f"%%{orgname}%%")
# 添加联系人电话条件
if contactor_phone:
where_conditions.append("o.contactor_phone LIKE '%s'")
params.append(f"%%{contactor_phone}%%")
where_clause = " AND ".join(where_conditions)
# 构建查询总数的SQL
count_sql = f"""
SELECT COUNT(*) as total
FROM customer c
JOIN organization o ON c.customerid = o.id
WHERE {where_clause}
"""
count_sql = count_sql % tuple(params)
# 执行总数查询
count_result = await sor.sqlExe(count_sql,{})
total = count_result[0]['total'] if count_result else 0
# 构建查询数据的SQL添加分页
data_sql = f"""
SELECT o.*
FROM customer c
JOIN organization o ON c.customerid = o.id
WHERE {where_clause}
ORDER BY o.create_at DESC
LIMIT %s OFFSET %s
"""
# 添加分页参数
params.extend([page_size, offset])
data_sql = data_sql % tuple(params)
# 执行数据查询
result = await sor.sqlExe(data_sql, {})
# 返回结果,包含分页信息
return {
'status': True,
'data': {
'rows': result
},
'pagination': {
'page': page,
'size': page_size,
'total': total
}
}
except Exception as e:
# 记录错误日志(可根据实际情况添加日志记录)
return {'status': False, 'message': f'查询失败: {str(e)}'}
# async def getNoinvitationcode(ns):
# """展示所有没有销售的客户"""
# db = DBPools()
# async with db.sqlorContext('kboss') as sor:
# orgs = await sor.R('organization', {"org_type": '0'})
# ns['del_flg'] = '0'
# ns['sort'] = 'create_at desc'
# ns['parentid'] = orgs[0]['id']
# datalist = []
# prc = await sor.R('customer', {'del_flg': '0'})
# for i in prc:
# if not i['salemanid']:
# customer_id_parentid_li = await sor.R('organization', {'id': i['customerid']})
# customer_id_parentid = customer_id_parentid_li[0]['parentid']
# if customer_id_parentid == ns.get('orgid'):
# datalist.append(customer_id_parentid_li[0])
# data = {'rows':datalist}
# return {'status': True, 'data': data}
ret = await getNoinvitationcode(params_kw)
return ret