协会用户管理

This commit is contained in:
wcq 2023-06-12 15:57:29 +08:00
parent acfc8ea8a8
commit e01cc54b8a
4 changed files with 57 additions and 38 deletions

View File

@ -15,7 +15,9 @@ sender = fecribd@fecr.com.cn
[auth]
jwt_key = MADASDZXC255f
admin_user_jwt_key = R43124TWEVC7785456
company_user_jwt_key = AQDF123ER331IOQWM12MFFAS
institution_user_jwt_key = SAXCASD15124WRTWET
[mongo]
host = 127.0.0.1

View File

@ -27,6 +27,12 @@ class InstitutionUserTokenDataModel(BaseModel):
phone: Optional[str]
class AdminUserTokenDataModel(BaseModel):
id: Optional[str]
email: Optional[str]
phone: Optional[str]
# 日志
uvicorn_log = getLogger('uvicorn')
@ -60,10 +66,12 @@ image_captcha_verify = ImageCaptchaVerify(redis_pool)
# 权限验证工具类
auth_util = AuthUtil[TokenDataModel](secret_key=conf['auth']['jwt_key'], tokenDataModel=TokenDataModel)
admin_user_auth_util = AuthUtil[AdminUserTokenDataModel](secret_key=conf['auth']['admin_user_jwt_key'], tokenDataModel=AdminUserTokenDataModel)
company_user_auth_util = AuthUtil[CompanyUserTokenDataModel](secret_key=conf['auth']['company_user_jwt_key'],
tokenDataModel=CompanyUserTokenDataModel)
institution_user_auth_util = AuthUtil[InstitutionUserTokenDataModel](secret_key=conf['auth']['company_user_jwt_key'],
tokenDataModel=InstitutionUserTokenDataModel)
institution_user_auth_util = AuthUtil[InstitutionUserTokenDataModel](
secret_key=conf['auth']['institution_user_jwt_key'],
tokenDataModel=InstitutionUserTokenDataModel)
phone_msg_send = PhoneMsgSend(conf['hw_msg']['url'],
conf['hw_msg']['app_key'],

View File

@ -2,7 +2,7 @@ from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Context.common import common_db, conf, email_code_verify, institution_user_auth_util, tianyancha_api, \
InstitutionUserTokenDataModel
InstitutionUserTokenDataModel, AdminUserTokenDataModel, admin_user_auth_util
from Utils.PasswdUtils import get_encrypt_password, decode_b64_pwd
from Utils.SqlAlchemyUtils import QueryParams, query_common
from Utils.ValidateUtil import Validate
@ -10,8 +10,8 @@ from Utils.VerifyCodeUtils import EmailVerifyType
from . import Schemas
from . import Crud
from .Models import InstitutionUser
from ..UploadFile import Crud as UploadFileCrud
from Utils.OcrUtils import ocr_business_license
# from ..UploadFile import Crud as UploadFileCrud
# from Utils.OcrUtils import ocr_business_license
router = APIRouter(tags=["协会用户"], prefix="/institution_user")
@ -74,33 +74,33 @@ def func(body: Schemas.GetEmailVerifyCode):
return {'state': 1, "msg": "邮箱验证码已发送至邮箱,请查看"}
@router.post("/register", summary="注册协会用户")
def func(req: Schemas.InstitutionUserRegisterReq, db: Session = Depends(common_db.get_db)):
org_passwd = decode_b64_pwd(req.passwd)
if not Validate.password(org_passwd):
raise HTTPException(detail="密码格式不规范", status_code=303)
checked = email_code_verify.check_code(req.email, req.email_verified_code, EmailVerifyType.register)
if not checked:
raise HTTPException(detail='邮箱验证码错误', status_code=303)
file = UploadFileCrud.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
item = Crud.institution_user_get_by_institution_name(db, company_name)
if item:
raise HTTPException(detail="公司已经被注册", status_code=303)
passwd_hashed = get_encrypt_password(org_passwd)
add_res = Crud.institution_user_add(db,
Schemas.InstitutionUserAddInfo(company_name=company_name, email=req.email,
passwd=passwd_hashed,
verified=True))
return {'msg': "注册成功", 'state': 1}
# @router.post("/register", summary="注册协会用户")
# def func(req: Schemas.InstitutionUserRegisterReq, db: Session = Depends(common_db.get_db)):
# org_passwd = decode_b64_pwd(req.passwd)
# if not Validate.password(org_passwd):
# raise HTTPException(detail="密码格式不规范", status_code=303)
# checked = email_code_verify.check_code(req.email, req.email_verified_code, EmailVerifyType.register)
# if not checked:
# raise HTTPException(detail='邮箱验证码错误', status_code=303)
# file = UploadFileCrud.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
# item = Crud.institution_user_get_by_institution_name(db, company_name)
# if item:
# raise HTTPException(detail="公司已经被注册", status_code=303)
# passwd_hashed = get_encrypt_password(org_passwd)
# add_res = Crud.institution_user_add(db,
# Schemas.InstitutionUserAddInfo(company_name=company_name, email=req.email,
# passwd=passwd_hashed,
# verified=True))
# return {'msg': "注册成功", 'state': 1}
@router.post('/get_user_info', summary='获取用户信息', response_model=Schemas.GetUserInfoRes)
@ -114,25 +114,29 @@ def func(token_data: InstitutionUserTokenDataModel = Depends(institution_user_au
@router.post("/institution_user/add", summary="添加协会用户", response_model=Schemas.InstitutionUserAddRes)
def institution_user_add(req: Schemas.InstitutionUserAddReq, db: Session = Depends(common_db.get_db)):
def institution_user_add(req: Schemas.InstitutionUserAddReq, db: Session = Depends(common_db.get_db),
token_data: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend)):
item = Crud.institution_user_add(db, req)
return Schemas.InstitutionUserAddRes(**item.to_dict())
@router.post("/institution_user/delete", summary="删除协会用户")
def institution_user_delete(req: Schemas.InstitutionUserDeleteReq, db: Session = Depends(common_db.get_db)):
def institution_user_delete(req: Schemas.InstitutionUserDeleteReq, db: Session = Depends(common_db.get_db),
token_data: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend)):
Crud.institution_user_delete(db, req.id)
return "删除成功"
@router.post("/institution_user/update", summary="更新协会用户", response_model=Schemas.InstitutionUserUpdateRes)
def institution_user_update(req: Schemas.InstitutionUserUpdateReq, db: Session = Depends(common_db.get_db)):
def institution_user_update(req: Schemas.InstitutionUserUpdateReq, db: Session = Depends(common_db.get_db),
token_data: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend)):
item = Crud.institution_user_update(db, req)
return Schemas.InstitutionUserUpdateRes(**item.to_dict())
@router.post("/institution_user/get", summary="获取协会用户", response_model=Schemas.InstitutionUserGetRes)
def institution_user_get(req: Schemas.InstitutionUserGetReq, db: Session = Depends(common_db.get_db)):
def institution_user_get(req: Schemas.InstitutionUserGetReq, db: Session = Depends(common_db.get_db),
token_data: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend)):
item = Crud.institution_user_get(db, req.id)
if not item:
raise HTTPException(detail="未查询到信息", status_code=404)
@ -140,7 +144,8 @@ def institution_user_get(req: Schemas.InstitutionUserGetReq, db: Session = Depen
@router.post("/institution_user/query", summary="查询协会用户", response_model=Schemas.InstitutionUserQueryRes)
def institution_user_query(req: Schemas.InstitutionUserQueryReq, db: Session = Depends(common_db.get_db)):
def institution_user_query(req: Schemas.InstitutionUserQueryReq, db: Session = Depends(common_db.get_db),
token_data: AdminUserTokenDataModel = Depends(admin_user_auth_util.token_data_depend)):
count, query = Crud.institution_user_query(db, req)
items = [Schemas.InstitutionUserInfo(**item.to_dict()) for item in query]
return Schemas.InstitutionUserQueryRes(count=count, items=items)
@ -148,7 +153,9 @@ def institution_user_query(req: Schemas.InstitutionUserQueryReq, db: Session = D
@router.post("/institution_user/query_common", summary="通用查询协会用户",
response_model=Schemas.InstitutionUserQueryRes)
def institution_user_query_common(req: QueryParams, db: Session = Depends(common_db.get_db)):
def institution_user_query_common(req: QueryParams, db: Session = Depends(common_db.get_db),
token_data: AdminUserTokenDataModel = Depends(
admin_user_auth_util.token_data_depend)):
count, query = query_common(db, InstitutionUser, req)
items = [Schemas.InstitutionUserInfo(**item.to_dict()) for item in query]
return Schemas.InstitutionUserQueryRes(count=count, items=items)

View File

@ -1,6 +1,8 @@
from fastapi import APIRouter
from .CompanyUser import Router as CompanyUserRouter
from .InstitutionUser import Router as InstitutionUserRouter
from .UploadFile import Router as UploadFileRouter
router = APIRouter(prefix="/user")
router.include_router(CompanyUserRouter.router)
router.include_router(UploadFileRouter.router)
router.include_router(InstitutionUserRouter.router)