kboss/b/zj/saleGetUsers.dspy
2025-07-16 14:27:17 +08:00

176 lines
7.6 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 getUserInfo(ns={}):
# ns = {
# # 'userid': 'user_abcd',
# 'orgid': 'APPbNUfV5Im_KlZNnBRjd'
# }
db = DBPools()
async with db.sqlorContext('kboss') as sor:
try:
if not ns.get('orgid'):
# find orgid info from users
org_info = await sor.R('users', {'id': await get_user(), 'del_flg': '0'})
if org_info:
orgid = org_info[0].get('orgid')
else:
return {
'status': False,
'msg': 'can not find orgid from users'
}
else:
orgid = ns.get('orgid')
orgs = await sor.R('organization', {'id': orgid, 'del_flg': '0'})
org = orgs[0] if orgs else {}
nss = {}
nss['orgid'] = orgid
nss['fullName'] = org.get('orgname') or ''
nss['name'] = org.get('orgname') or ''
nss['identityCode'] = org.get('orgcode') or ''
nss['address'] = org.get('address') or ''
nss['contact'] = org.get('contactor') or ''
nss['tel'] = org.get('contactor_phone') or ''
nss['email'] = org.get('emailaddress') or ''
# find salemanid info from customers
cust = await sor.R('customer', {'customerid': orgid, 'del_flg': '0'})
customer = cust[0] if cust else {}
salemanid = customer.get('salemanid')
org_name = ''
if salemanid:
saleman = await sor.R('users', {'id': salemanid, 'del_flg': '0'})
saleman_user = saleman[0] if saleman else {}
salemanorgid = saleman_user.get('orgid')
if salemanorgid:
org_name_li = await sor.R('organization', {'id': salemanorgid, 'del_flg': '0'})
if org_name_li:
org_name = org_name_li[0].get('orgname') or ''
else:
saleman_user = {}
nss['saleMgrName'] = saleman_user.get('username') or ''
nss['saleMgrEmail'] = saleman_user.get('email') or ''
nss['saleMgrTel'] = saleman_user.get('mobile') or ''
# add saleman org name
nss['saleorgname'] = org_name
# find invoice attr from orgid
invoice_attr = await sor.R('invoice_attr', {'customerid': orgid, 'del_flg': '0'})
invoice = invoice_attr[0] if invoice_attr else {}
nss['bankName'] = invoice.get('bank_name') or ''
nss['bankAcc'] = invoice.get('bank_account') or ''
nss['identityName'] = invoice.get('invoice_title') or ''
nss['taxTel'] = invoice.get('phone') or ''
nss['taxpayerIdentity'] = invoice.get('tax_no') or ''
nss['taxAddress'] = invoice.get('address') or ''
# find zj_users from orgid
zj_attr = await sor.R('zj_users', {'orgid': orgid, 'del_flg': '0'})
zj = zj_attr[0] if zj_attr else {}
nss['userAc'] = zj.get('userac') or ('kboss_' + orgid)
nss['userPhone'] = zj.get('userphone') or nss['tel']
nss['remark'] = zj.get('remark') or ''
nss['ak'] = zj.get('ak') or ''
nss['sk'] = zj.get('sk') or ''
nss['thirdId'] = zj.get('thirdid') or ''
nss['appId'] = zj.get('appid') or ''
nss['supId'] = zj.get('supid') or ''
nss['sync_status'] = zj.get('sync_status')
return {
'status': True,
'msg': 'get user info success',
'data': nss
}
except Exception as e:
raise e
return {
'status': False,
'msg': 'get user info failed',
'data': ''
}
async def saleGetUsers(ns={}):
"""
get users
id *
:param ns:
:return:
"""
db = DBPools()
async with db.sqlorContext('kboss') as sor:
if not await get_user():
return {
"status": False,
"msg": "user id is empty, please check",
}
try:
org_list = []
lizhi_list = await sor.R('transfer_record', {'change_id': await get_user()})
ids = list(map(lambda x: x['customer_id'], lizhi_list))
cus_list = await sor.R('customer', {'salemanid': await get_user()})
for cus in cus_list:
customerid = cus.get('customerid')
if ns.get('kv') == 'zj':
# 判断中金users是否存在存在就查询
exists_zj_users = await sor.R('zj_users', {'orgid': customerid})
if exists_zj_users:
res_dict = await getUserInfo({'orgid': customerid})
if res_dict.get('status') and res_dict.get('data'):
org_list.append(res_dict.get('data'))
elif ns.get('kv') == 'jncs':
# 获取济南超算id
jncs_li = await sor.R('organization', {'orgname': '济南超算', 'del_flg': '0'})
jscs_id = jncs_li[0].get('id')
# 获取购买过济南超算产品的用户 产品持有表
ress = await sor.R('customer_goods', {'customerid': customerid, 'providerrid': jscs_id})
if ress:
org_list.append(ress)
else:
org_content_li = await sor.R('organization', {'id': customerid})
org_content = org_content_li[0] if org_content_li else []
if org_content:
if customerid in ids:
org_content["type"] = '转接客户'
transfer_info = sorted(await sor.R('transfer_record', {'customer_id': customerid}),
key=lambda x: x['create_at'], reverse=True)
transfer_time = transfer_info[0]['create_at'] if transfer_info else None
previous_sales = None
for transfer in transfer_info:
# print('111111137219047923042141', transfer_info)
if transfer['change_id'] == await get_user():
previous_sales = transfer['dimission_id']
previous_id = await sor.R('users', {'id': previous_sales})
previous_name = await sor.R('users', {'username': previous_id[0]['username']})
if previous_name:
previous_sales_name = previous_name[0]['username']
else:
previous_sales_name = None
break
org_content["transfer_time"] = transfer_time
org_content["previous_sales"] = previous_sales_name
org_list.append(org_content)
else:
org_content["type"] = '直接客户'
org_content["transfer_time"] = None
org_content["previous_sales"] = None
org_list.append(org_content)
return {
"status": True,
"msg": "get user success",
"data": org_list
}
except Exception as e:
return {
"status": False,
"msg": "get user failed",
"data": str(e)
}
ret = await saleGetUsers(params_kw)
return ret