wd-smebiz/mods/cmebiz_rate/company_user/router.py

158 lines
7.8 KiB
Python
Raw Normal View History

2023-08-02 10:18:36 +08:00
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
2023-08-02 14:24:28 +08:00
from context.common import common_db, conf, email_verify_code, company_user_auth_util, tianyancha_api, \
2023-08-02 10:18:36 +08:00
CompanyUserTokenDataModel
2023-08-02 14:24:28 +08:00
from utils.email_utils import email_check
from utils.passwd_utils import get_encrypt_password, decode_b64_pwd
from utils.validate_utils import Validate
from utils.verify_code_utils import EmailVerifyType
from . import schemas
from . import crud
from utils.sqlalchemy_common_utils import QueryParams, query_common
from .models import CompanyUser
from ..form_file import crud as FormFileCrud
from utils.ocr_utils import ocr_business_license
2023-08-02 10:18:36 +08:00
router = APIRouter(tags=["企业用户"])
@router.post('/company_user/login_by_email', summary='邮箱登录',
2023-08-02 14:24:28 +08:00
response_model=schemas.LoginByEmailRes)
def login_by_email(req: schemas.LoginByEmailReq,
2023-08-02 10:18:36 +08:00
db: Session = Depends(common_db.get_db)):
2023-08-02 14:24:28 +08:00
checked = email_verify_code.check_code(req.email, req.code, EmailVerifyType.login)
2023-08-02 10:18:36 +08:00
if not checked:
raise HTTPException(detail="邮箱验证码错误", status_code=303)
2023-08-02 14:24:28 +08:00
user = crud.company_user_get_by_email(db, req.email)
2023-08-02 10:18:36 +08:00
if not user:
raise HTTPException(detail="该账户未注册", status_code=303)
user_data = user.to_dict()
token_data = company_user_auth_util.tokenDataModel(**user_data)
token = company_user_auth_util.create_token(token_data)
2023-08-02 14:24:28 +08:00
return schemas.LoginByEmailRes(token=token)
2023-08-02 10:18:36 +08:00
@router.post('/company_user/login_by_passwd', summary='邮箱密码登录',
2023-08-02 14:24:28 +08:00
response_model=schemas.LoginByPasswdRes)
def login_by_passwd(req: schemas.LoginByPasswdReq,
2023-08-02 10:18:36 +08:00
db: Session = Depends(common_db.get_db)):
2023-08-02 14:24:28 +08:00
# checked = email_verify_code.check_code(req.email, req.code, EmailVerifyType.login)
2023-08-02 10:18:36 +08:00
org_passwd = decode_b64_pwd(req.passwd)
hashed_passwd = get_encrypt_password(org_passwd)
2023-08-02 14:24:28 +08:00
user = crud.login_by_passwd_check(db, req.email, hashed_passwd)
2023-08-02 10:18:36 +08:00
if not user:
raise HTTPException(detail="邮箱或密码错误", status_code=303)
user_data = user.to_dict()
token_data = company_user_auth_util.tokenDataModel(**user_data)
token = company_user_auth_util.create_token(token_data)
2023-08-02 14:24:28 +08:00
return schemas.LoginByEmailRes(token=token)
2023-08-02 10:18:36 +08:00
@router.post("/company_user/get_email_login_verify_code", summary="获取登录邮箱验证码")
2023-08-02 14:24:28 +08:00
def get_email_login_verify_code(body: schemas.GetEmailVerifyCode):
2023-08-02 10:18:36 +08:00
try:
email = body.email
if not Validate.email(email):
raise HTTPException(detail="错误的邮箱格式", status_code=403)
2023-08-02 14:24:28 +08:00
email_verify_code.send_code(email, EmailVerifyType.login)
2023-08-02 10:18:36 +08:00
except Exception as e:
print(e)
raise HTTPException(detail="邮箱验证码发送失败", status_code=403)
return {'state': 1, "msg": "邮箱验证码已发送至邮箱,请查看"}
@router.post("/company_user/get_email_register_verify_code", summary="获取注册邮箱验证码")
2023-08-02 14:24:28 +08:00
def get_email_register_verify_code(body: schemas.GetEmailVerifyCode):
2023-08-02 10:18:36 +08:00
try:
email = body.email
if not Validate.email(email):
raise HTTPException(detail="错误的邮箱格式", status_code=403)
2023-08-02 14:24:28 +08:00
email_verify_code.send_code(email, EmailVerifyType.register)
2023-08-02 10:18:36 +08:00
except Exception as e:
print(e)
raise HTTPException(detail="邮箱验证码发送失败", status_code=403)
return {'state': 1, "msg": "邮箱验证码已发送至邮箱,请查看"}
@router.post("/company_user/register", summary="注册企业用户")
2023-08-02 14:24:28 +08:00
def company_user_register(req: schemas.CompanyUserRegisterReq, db: Session = Depends(common_db.get_db)):
2023-08-02 10:18:36 +08:00
org_passwd = decode_b64_pwd(req.passwd)
if not Validate.password(org_passwd):
raise HTTPException(detail="密码格式不规范", status_code=303)
2023-08-02 14:24:28 +08:00
checked = email_verify_code.check_code(req.email, req.email_verified_code,EmailVerifyType.register)
2023-08-02 10:18:36 +08:00
if not checked:
raise HTTPException(detail='邮箱验证码错误', status_code=303)
file = FormFileCrud.file_get(db, req.license_file_md)
image_url = conf['app']['host'] + '/wd_bj_static/' + "/".join(file.file_url.split('/')[2:])
license_res = ocr_business_license(image_url)
license_check_res,_ = tianyancha_api.get('企业三要素', {'code': license_res.credit, 'name': license_res.name,
'legalPersonName': license_res.owner})
if not (license_check_res and license_check_res['result'] == 1):
if license_check_res:
raise HTTPException(detail=license_check_res['remark'], status_code=303)
raise HTTPException(detail="营业执照信息验证失败", status_code=303)
company_name = license_res.name
2023-08-02 14:24:28 +08:00
item = crud.company_user_get_by_company_name(db, company_name)
2023-08-02 10:18:36 +08:00
if item:
raise HTTPException(detail="公司已经被注册", status_code=303)
passwd_hashed = get_encrypt_password(org_passwd)
2023-08-02 14:24:28 +08:00
add_res = crud.company_user_add(db,
schemas.CompanyUserAddInfo(company_name=company_name, email=req.email,
2023-08-02 10:18:36 +08:00
passwd=passwd_hashed,
verified=True))
return {'msg': "注册成功", 'state': 1}
2023-08-02 14:24:28 +08:00
@router.post('/get_user_info', summary='获取用户信息', response_model=schemas.GetUserInfoRes)
2023-08-02 10:18:36 +08:00
def get_user_info(token_data: CompanyUserTokenDataModel = Depends(company_user_auth_util.token_data_depend),
db: Session = Depends(common_db.get_db)):
2023-08-02 14:24:28 +08:00
user = crud.company_user_get(db, token_data.id)
2023-08-02 10:18:36 +08:00
user_data=user.to_dict()
if not user:
raise HTTPException(detail="无用户", status_code=403)
2023-08-02 14:24:28 +08:00
return schemas.GetUserInfoRes(**user_data)
2023-08-02 10:18:36 +08:00
2023-08-02 14:24:28 +08:00
# @router.post("/company_user/add", summary="添加企业用户", response_model=schemas.CompanyUserAddRes)
# def company_user_add(req: schemas.CompanyUserAddReq, db: Session = Depends(common_db.get_db)):
# item = crud.company_user_add(db, req)
# return schemas.CompanyUserAddRes(**item.to_dict())
2023-08-02 10:18:36 +08:00
#
#
# @router.post("/company_user/delete", summary="删除企业用户")
2023-08-02 14:24:28 +08:00
# def company_user_delete(req: schemas.CompanyUserDeleteReq, db: Session = Depends(common_db.get_db)):
# crud.company_user_delete(db, req.id)
2023-08-02 10:18:36 +08:00
# return "删除成功"
#
#
2023-08-02 14:24:28 +08:00
# @router.post("/company_user/update", summary="更新企业用户", response_model=schemas.CompanyUserUpdateRes)
# def company_user_update(req: schemas.CompanyUserUpdateReq, db: Session = Depends(common_db.get_db)):
# item = crud.company_user_update(db, req)
# return schemas.CompanyUserUpdateRes(**item.to_dict())
2023-08-02 10:18:36 +08:00
#
#
2023-08-02 14:24:28 +08:00
# @router.post("/company_user/get", summary="获取企业用户", response_model=schemas.CompanyUserGetRes)
# def company_user_get(req: schemas.CompanyUserGetReq, db: Session = Depends(common_db.get_db)):
# item = crud.company_user_get(db, req.id)
2023-08-02 10:18:36 +08:00
# if not item:
# raise HTTPException(detail="未查询到信息", status_code=404)
2023-08-02 14:24:28 +08:00
# return schemas.CompanyUserGetRes(**item.to_dict())
2023-08-02 10:18:36 +08:00
#
#
2023-08-02 14:24:28 +08:00
# @router.post("/company_user/query", summary="查询企业用户", response_model=schemas.CompanyUserQueryRes)
# def company_user_query(req: schemas.CompanyUserQueryReq, db: Session = Depends(common_db.get_db)):
# count, query = crud.company_user_query(db, req)
# items = [schemas.CompanyUserInfo(**item.to_dict()) for item in query]
# return schemas.CompanyUserQueryRes(count=count, items=items)
2023-08-02 10:18:36 +08:00
#
#
# @router.post("/company_user/query_common", summary="通用查询企业用户",
2023-08-02 14:24:28 +08:00
# response_model=schemas.CompanyUserQueryRes)
2023-08-02 10:18:36 +08:00
# def company_user_query_common(req: QueryParams, db: Session = Depends(common_db.get_db)):
# count, query = query_common(db, CompanyUser, req)
2023-08-02 14:24:28 +08:00
# items = [schemas.CompanyUserInfo(**item.to_dict()) for item in query]
# return schemas.CompanyUserQueryRes(count=count, items=items)
2023-08-02 10:18:36 +08:00
#########