185 lines
9.3 KiB
Plaintext
185 lines
9.3 KiB
Plaintext
async def registerUser(ns):
|
|
"""
|
|
用户注册
|
|
"""
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
if ns:
|
|
if ns.get('username'):
|
|
userns = {'username': ns['username']}
|
|
isuser = await sor.R('users', userns)
|
|
if len(isuser) >= 1:
|
|
return {'status': False, 'msg': '用户名已注册'}
|
|
|
|
if ns.get('email'):
|
|
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 not ns.get('username'):
|
|
ns['username'] = ns['mobile']
|
|
|
|
if ns.get('password'):
|
|
if len(ns.get('password')) < 6:
|
|
return {'status': False, 'msg': '密码必须6位数以上'}
|
|
|
|
if not ns.get('codeid'):
|
|
return {'status': False, 'msg': '验证码ID不能为空'}
|
|
|
|
if ns.get('codeid'):
|
|
code = await sor.R('validatecode', {'id': ns.get('codeid'), 'vcode': ns.get('vcode')})
|
|
# 验证码五分钟内才有效 create_at是字符串 格式是"2025-11-05 16:00:19"
|
|
if code:
|
|
create_at = code[0]['create_at']
|
|
now = datetime.datetime.now()
|
|
create_at_dt = datetime.datetime.strptime(create_at, "%Y-%m-%d %H:%M:%S")
|
|
if (now - create_at_dt).seconds > 500:
|
|
return {'status': False, 'msg': '验证码过期'}
|
|
|
|
else:
|
|
return {'status': False, 'msg': '验证码不正确'}
|
|
|
|
#通过邀请码注册
|
|
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:
|
|
# 用户orgid
|
|
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:
|
|
# 分销商机构ID 即orgid
|
|
org = await sor.R('organization', {'id': reseller[0]['orgid'], 'del_flg': '0'})
|
|
else:
|
|
# 分销商不存在 则查找业主机构ID
|
|
org = await sor.R('organization', {'org_type': '0', 'del_flg': '0'})
|
|
else:
|
|
# 没有通过域名 则默认是获取业主机构ID
|
|
org = await sor.R('organization', {'org_type': '0', 'del_flg': '0'})
|
|
|
|
# 获取所在机构父级ID
|
|
ns['parentid'] = org[0]['id']
|
|
|
|
# 新增用户机构信息
|
|
ns_org = {
|
|
'id': ns['id'],
|
|
'orgname': ns['username'],
|
|
'parentid': ns['parentid'],
|
|
'org_type': ns['org_type'],
|
|
'contactor_phone': ns.get('mobile'),
|
|
}
|
|
await sor.C('organization', ns_org)
|
|
|
|
# 生成用户userid
|
|
ns['id'] = uuid()
|
|
userid = ns['id']
|
|
|
|
# 加密用户密码
|
|
if ns.get('password'):
|
|
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']})
|
|
|
|
# 新增客户信息并使用openCustomerAccounts为客户开账
|
|
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': '注册失败, %s' % str(error)}
|
|
|
|
|
|
ret = await registerUser(params_kw)
|
|
return ret |