2022-04-06 15:15:44 +08:00
|
|
|
|
import random
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
from werkzeug.security import check_password_hash
|
|
|
|
|
|
|
|
|
|
from CompanyUser.CompanyUser_obj import CompanyUser, VerifyInfo
|
|
|
|
|
from DBHelper.MongoHelper import MongoHelper
|
|
|
|
|
from Utils.ErrorUtil import ReturnConditionCheckFailed
|
|
|
|
|
from user.user_auth import create_token
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CompanyUserImpl(CompanyUser):
|
|
|
|
|
"""企业用户实现类"""
|
|
|
|
|
|
|
|
|
|
db = MongoHelper("tfse_v0.21")
|
|
|
|
|
|
2022-04-06 17:03:16 +08:00
|
|
|
|
def check_email_registered(self):
|
2022-04-07 05:05:44 +08:00
|
|
|
|
"""检查邮箱已被注册"""
|
2022-04-06 17:03:16 +08:00
|
|
|
|
email = self.db.find_single_column(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"邮箱": self.email},
|
|
|
|
|
"邮箱"
|
|
|
|
|
)
|
|
|
|
|
if email is not None:
|
|
|
|
|
raise ReturnConditionCheckFailed("邮箱已被注册", 200)
|
|
|
|
|
|
2022-04-07 05:05:44 +08:00
|
|
|
|
def check_email_not_registered(self):
|
|
|
|
|
"""检查邮箱未被注册"""
|
|
|
|
|
email = self.db.find_single_column(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"邮箱": self.email},
|
|
|
|
|
"邮箱"
|
|
|
|
|
)
|
|
|
|
|
if email is None:
|
|
|
|
|
raise ReturnConditionCheckFailed("邮箱未被注册", 200)
|
|
|
|
|
|
2022-04-06 17:03:16 +08:00
|
|
|
|
def check_vcode_correct(self, code):
|
|
|
|
|
"""检查邮箱验证码是否正确"""
|
|
|
|
|
verify_data = self.db.find_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"邮箱验证码记录",
|
|
|
|
|
{"邮箱": self.email},
|
|
|
|
|
["验证码", "验证有效期"]
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if not verify_data:
|
|
|
|
|
raise ReturnConditionCheckFailed("验证码错误", 200)
|
|
|
|
|
|
|
|
|
|
if verify_data['验证码'] != code:
|
|
|
|
|
raise ReturnConditionCheckFailed("验证码错误", 200)
|
|
|
|
|
|
|
|
|
|
if time.time() - verify_data['验证有效期'] > 300:
|
|
|
|
|
raise ReturnConditionCheckFailed('验证码过期', 200)
|
|
|
|
|
|
2022-04-06 15:15:44 +08:00
|
|
|
|
def login(self):
|
2022-04-07 05:05:44 +08:00
|
|
|
|
"""登录"""
|
2022-04-06 15:15:44 +08:00
|
|
|
|
|
|
|
|
|
company_user = self.db.find_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"邮箱": self.email},
|
2022-04-06 16:32:51 +08:00
|
|
|
|
["企业ID", "企业名称", "邮箱", "密码", "已认证"]
|
2022-04-06 15:15:44 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def check_user_existed():
|
|
|
|
|
"""检查用户是否存在"""
|
|
|
|
|
if company_user is None:
|
|
|
|
|
raise ReturnConditionCheckFailed("不存在该用户", 200)
|
|
|
|
|
|
|
|
|
|
def check_password_correct():
|
|
|
|
|
"""检查密码是否正确"""
|
|
|
|
|
if not check_password_hash(company_user['密码'], self.pwd):
|
|
|
|
|
raise ReturnConditionCheckFailed("登录密码错误", 200)
|
|
|
|
|
|
|
|
|
|
def __main__():
|
|
|
|
|
""""""
|
|
|
|
|
check_user_existed()
|
|
|
|
|
check_password_correct()
|
|
|
|
|
|
|
|
|
|
self.name = company_user['企业名称']
|
2022-04-06 16:32:51 +08:00
|
|
|
|
self.verify_status = company_user['已认证']
|
2022-04-06 15:15:44 +08:00
|
|
|
|
|
2022-04-06 16:32:51 +08:00
|
|
|
|
return_body = self.dict_to_show(columns=["企业名称", "认证状态", "token"])
|
2022-04-06 15:15:44 +08:00
|
|
|
|
return_body['token'] = create_token({"cid": self.cid})
|
|
|
|
|
|
|
|
|
|
return return_body
|
|
|
|
|
|
|
|
|
|
return __main__()
|
|
|
|
|
|
|
|
|
|
def register(self, code):
|
|
|
|
|
"""注册"""
|
|
|
|
|
|
|
|
|
|
def make_new_cid():
|
|
|
|
|
"""生成新的企业ID,如果该ID存在,则重新生成"""
|
|
|
|
|
|
|
|
|
|
def random_cid(num):
|
|
|
|
|
"""随机企业ID"""
|
|
|
|
|
choices = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
|
|
|
|
|
salt = ''
|
|
|
|
|
for i in range(num):
|
|
|
|
|
salt += random.choice(choices)
|
|
|
|
|
return salt
|
|
|
|
|
|
|
|
|
|
new_cid = random_cid(8)
|
|
|
|
|
|
|
|
|
|
case = self.db.find_single_column(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"企业ID": new_cid},
|
|
|
|
|
"企业ID"
|
|
|
|
|
) is not None
|
|
|
|
|
while case:
|
|
|
|
|
new_cid = random_cid(8)
|
|
|
|
|
return new_cid
|
|
|
|
|
|
|
|
|
|
def __main__():
|
|
|
|
|
""""""
|
2022-04-06 17:03:16 +08:00
|
|
|
|
self.check_email_registered()
|
|
|
|
|
self.check_vcode_correct(code)
|
2022-04-06 15:15:44 +08:00
|
|
|
|
|
|
|
|
|
self.cid = make_new_cid()
|
|
|
|
|
self.avatar_id = "623152edf36000004f00124e"
|
|
|
|
|
self.verify_status = "否"
|
|
|
|
|
self.verify_info = VerifyInfo()
|
|
|
|
|
|
|
|
|
|
self.db.insert_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
self.dict_to_save()
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
self.db.delete_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"邮箱验证码记录",
|
|
|
|
|
{"邮箱": self.email}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
__main__()
|
2022-04-06 16:32:51 +08:00
|
|
|
|
|
|
|
|
|
def get_company_user_info(self):
|
|
|
|
|
"""获取企业用户信息"""
|
|
|
|
|
company_user_data = self.db.find_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"企业ID": self.cid},
|
|
|
|
|
["企业ID", "企业名称", "邮箱", "已认证"]
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
self.name = company_user_data['企业名称']
|
|
|
|
|
self.email = company_user_data['邮箱']
|
|
|
|
|
self.verify_status = company_user_data['已认证']
|
|
|
|
|
|
|
|
|
|
return self.dict_to_show(columns=["企业ID", "企业名称", "邮箱", "认证状态"])
|
|
|
|
|
|
|
|
|
|
def get_avatar(self):
|
|
|
|
|
"""获取用户头像"""
|
|
|
|
|
|
|
|
|
|
self.avatar_id = self.db.find_single_column(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"企业ID": self.cid},
|
|
|
|
|
"头像fid"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
avatar = self.db.find_file(
|
|
|
|
|
"文件",
|
|
|
|
|
"企业用户头像",
|
|
|
|
|
self.avatar_id
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return avatar
|
2022-04-06 17:03:16 +08:00
|
|
|
|
|
|
|
|
|
def change_avatar(self, avatar_option):
|
|
|
|
|
"""修改企业用户头像"""
|
|
|
|
|
avatars = {
|
|
|
|
|
"avatar_01": "623152edf36000004f00124e",
|
|
|
|
|
"avatar_02": "623152edf36000004f001250",
|
|
|
|
|
"avatar_03": "623152edf36000004f00124f",
|
|
|
|
|
"avatar_04": "623152edf36000004f001251",
|
|
|
|
|
"avatar_05": "623152edf36000004f001252",
|
|
|
|
|
"avatar_06": "623152edf36000004f001253"
|
|
|
|
|
}
|
|
|
|
|
self.avatar_id = avatars[avatar_option]
|
|
|
|
|
self.db.update_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"企业ID": self.cid},
|
|
|
|
|
{"头像fid": self.avatar_id}
|
|
|
|
|
)
|
|
|
|
|
|
2022-04-07 05:05:44 +08:00
|
|
|
|
def change_password(self, code):
|
2022-04-06 17:03:16 +08:00
|
|
|
|
"""修改登录密码"""
|
2022-04-07 05:05:44 +08:00
|
|
|
|
self.check_email_not_registered()
|
|
|
|
|
self.check_vcode_correct(code)
|
|
|
|
|
self.db.update_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"邮箱": self.email},
|
|
|
|
|
self.dict_to_save(columns=["密码"])
|
|
|
|
|
)
|
2022-04-07 05:13:31 +08:00
|
|
|
|
|
|
|
|
|
def change_email(self, code):
|
|
|
|
|
"""更换邮箱"""
|
|
|
|
|
self.check_vcode_correct(code)
|
2022-04-07 05:17:41 +08:00
|
|
|
|
self.check_email_registered()
|
2022-04-07 05:13:31 +08:00
|
|
|
|
self.db.update_single_data(
|
|
|
|
|
"应用端",
|
|
|
|
|
"企业用户",
|
|
|
|
|
{"企业ID": self.cid},
|
|
|
|
|
self.dict_to_save(columns=["邮箱"])
|
|
|
|
|
)
|