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

132 lines
7.0 KiB
Plaintext

async def registerUser(ns):
"""
用户注册
"""
db = DBPools()
async with db.sqlorContext('kboss') as sor:
if ns:
userns = {'username': ns['username']}
isuser = await sor.R('users', userns)
if len(isuser) >= 1:
return {'status': False, 'msg': '用户名已注册'}
useremai = {'email': ns['email']}
isuser = await sor.R('users', useremai)
if len(isuser) >= 1:
return {'status': False, 'msg': '该邮箱已注册'}
usermobile = {'mobile':ns['mobile']}
isuser = await sor.R('users', usermobile)
if len(isuser) >= 1:
return {'status': False, 'msg': '该手机号已注册'}
if len(ns.get('password')) < 6:
return {'status': False, 'msg': '密码必须6位数以上'}
#通过邀请码注册
if ns.get('invitecode'):
invitecodens = {}
invitecodens['invitecode'] = ns['invitecode']
reacss = await sor.R('invitecode', invitecodens)
if len(reacss) >= 1:
date = await get_business_date(sor=None)
if reacss[0]['expire_date'] < date:
return {'status': False, 'msg': '邀请码过期'}
try:
ns['id'] = uuid()
# ns['id'] = UUID()
orgid = ns['id']
ns['contactor_phone'] = ns.get('mobile')
usercode = await sor.R('users', {'id': reacss[0]['iusserid'], 'del_flg': '0'})
# 通过域名注册
if ns.get('domain_name'):
reseller = await sor.R('reseller', {'domain_name': ns.get('domain_name')})
if len(reseller) >= 1:
org = await sor.R('organization', {'id': reseller[0]['orgid'], 'del_flg': '0'})
ns['parentid'] = org[0]['id']
else:
ns['parentid'] = usercode[0]['orgid']
else:
ns['parentid'] = usercode[0]['orgid']
await sor.C('organization', ns)
ns['id'] = uuid()
# ns['id'] = UUID()
userid = ns['id']
ns['orgid'] = orgid
ns['password'] = password_encode(ns['password'])
await sor.C('users', ns)
listrole = ['管理员', '客户']
for i in listrole:
role = await sor.R('role', {'role': i, 'org_type': ns['org_type']})
await sor.C('userrole', {'id': uuid(), 'userid': userid, 'roleid': role[0]['id']})
ns['invite_code'] = ns['invitecode']
ns['customerid'] = orgid
ns['id'] = uuid()
# ns['id'] = UUID()
ns['salemanid'] = reacss[0]['iusserid']
await sor.C('customer', ns)
promoted_cutomerns = {}
promoted_cutomerns['id'] = uuid()
# promoted_cutomerns['id'] = UUID()
promoted_cutomerns['inviteid'] = reacss[0]['id']
promoted_cutomerns['customer'] = orgid
promoted_cutomerns['join_date'] = datetime.datetime.now()
await sor.C('promoted_cutomer', promoted_cutomerns)
promote_discount = await sor.R('promote_discount', {'promotingid': reacss[0]['promotingid']})
iusseriduser = await sor.R('users', {'id': reacss[0]['iusserid']})
dictns = {}
dictns['id'] = uuid()
dictns['offer_orgid'] = iusseriduser[0]['orgid']
dictns['bid_orgid'] = orgid
dictns['salemode'] = '0'
dictns['start_date'] = datetime.datetime.now()
dictns['end_date'] = '9999-12-31'
await sor.C('saleprotocol', dictns)
for i in promote_discount:
products = await sor.R('product', {'id': i['productid']})
product_salemode = {}
product_salemode['id'] = uuid()
product_salemode['protocolid'] = dictns['id']
product_salemode['providerid'] = products[0]['providerid']
product_salemode['productid'] = i['productid']
product_salemode['discount'] = i['discount']
await sor.C('product_salemode', product_salemode)
await openCustomerAccounts(sor, usercode[0]['orgid'], orgid)
return {'status': True, 'msg': '邀请码注册成功'}
except Exception as error:
raise error
else:
return {'status': False, 'msg': '邀请码不正确'}
else:
try:
ns['id'] = uuid()
org_id = ns['id']
ns['contactor_phone'] = ns.get('mobile')
# 通过域名注册
if ns.get('domain_name'):
reseller = await sor.R('reseller', {'domain_name': ns.get('domain_name')})
if len(reseller) >= 1:
org = await sor.R('organization', {'id': reseller[0]['orgid'], 'del_flg': '0'})
else:
org = await sor.R('organization', {'org_type': '0', 'del_flg': '0'})
else:
org = await sor.R('organization', {'org_type': '0', 'del_flg': '0'})
ns['parentid'] = org[0]['id']
await sor.C('organization', ns)
ns['id'] = uuid()
userid = ns['id']
ns['password'] = password_encode(ns['password'])
ns['orgid'] = org_id
await sor.C('users', ns)
listrole = ['管理员', '客户']
for i in listrole:
role = await sor.R('role', {'role': i, 'org_type': ns['org_type']})
await sor.C('userrole', {'id': uuid(), 'userid': userid, 'roleid': role[0]['id']})
ns['id'] = uuid()
ns['customerid'] = org_id
await sor.C('customer', ns)
await openCustomerAccounts(sor, org[0]['id'], org_id)
return {'status': True, 'msg': '注册成功'}
except Exception as error:
raise error
return {'status': False, 'msg': '注册失败'}
ret = await registerUser(params_kw)
return ret