80 lines
3.1 KiB
Python
80 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
||
|
||
from django.contrib.auth.models import User
|
||
from django.conf import settings
|
||
from django.db import transaction
|
||
from django.views.decorators.csrf import csrf_exempt
|
||
|
||
from account.models import Profile
|
||
from business.models import BusinessAccountInfo
|
||
|
||
from utils.response import json_response
|
||
from utils.errors import BizError, UserError
|
||
|
||
|
||
def check_biz(request):
|
||
email = request.GET.get('email', '') # 获取邮箱
|
||
try: # 检查数据库中是否由该邮箱注册过的数据
|
||
biz = BusinessAccountInfo.objects.get(email=email)
|
||
except BusinessAccountInfo.DoesNotExist:
|
||
biz = None
|
||
return json_response(200, 'OK', { # 返回是否已经被注册过和是否已经有此用户
|
||
'userexists': User.objects.filter(email=email).exists(),
|
||
'bizaccountexists': bool(biz)
|
||
})
|
||
|
||
|
||
@csrf_exempt
|
||
@transaction.atomic
|
||
def registry_biz(request):
|
||
email = request.POST.get('email', '') # 获取填写的邮箱
|
||
name = request.POST.get('name', '') # 获取填写的机构名
|
||
username = request.POST.get('username', '') # 获取填写的机构联系人
|
||
phone = request.POST.get('phone', '') # 获取填写的手机号
|
||
ctype = request.POST.get('type', BusinessAccountInfo.INTERNET) # 获取机构类型
|
||
flag = int(request.POST.get('flag', 2)) # 获取一个标记位,代表用户是创建新用户还是使用绑定老用户的方式
|
||
uname = email.split('@')[0] # 和之前的注册逻辑没什么区别,创建一个账户名
|
||
if not User.objects.filter(username__exact=name).exists():
|
||
final_name = username
|
||
elif not User.objects.filter(username__exact=uname).exists():
|
||
final_name = uname
|
||
else:
|
||
final_name = email
|
||
if flag == 2: # 如果标记位是2,那么将为他创建新用户
|
||
user = User.objects.create_user(
|
||
username=final_name,
|
||
email=email,
|
||
password=settings.INIT_PASSWORD,
|
||
is_active=False,
|
||
is_staff=False
|
||
)
|
||
if flag == 1: # 如果标记位是1,那么为他绑定老用户
|
||
try:
|
||
user = User.objects.get(email=email)
|
||
except User.DoesNotExist:
|
||
return json_response(*UserError.UserNotFound)
|
||
pvalues = {
|
||
'phone': phone,
|
||
'name': final_name,
|
||
'user_src': Profile.COMPANY_USER,
|
||
}
|
||
profile, _ = Profile.objects.select_for_update().get_or_create(email=email) # 获取或创建用户信息
|
||
for k, v in pvalues.items():
|
||
setattr(profile, k, v)
|
||
profile.save()
|
||
bizvalues = {
|
||
'company_name': name,
|
||
'company_username': username,
|
||
'company_phone': phone,
|
||
'company_type': ctype,
|
||
}
|
||
biz, _ = BusinessAccountInfo.objects.select_for_update().get_or_create( # 获取或创建机构账户信息
|
||
email=email,
|
||
defaults=bizvalues
|
||
)
|
||
return json_response(200, 'OK', { # 响应JSON格式数据,这个标记位在发送验证邮件的时候还有用
|
||
'name': final_name,
|
||
'email': email,
|
||
'flag': flag
|
||
})
|