bug修改
This commit is contained in:
parent
b8299dfeed
commit
5c6807cb95
|
@ -14,8 +14,8 @@ def marge_auth_data(auth_data_list):
|
||||||
return auth_data_str
|
return auth_data_str
|
||||||
|
|
||||||
|
|
||||||
def get_user_auth(db: Session, user_id):
|
def get_user_auth(db: Session, email):
|
||||||
user = db.query(User).filter_by(openid=user_id).first()
|
user = db.query(User).filter_by(email=email).first()
|
||||||
user_auth_data_str = user.auth_data
|
user_auth_data_str = user.auth_data
|
||||||
if not user.auth_data:
|
if not user.auth_data:
|
||||||
if user.department:
|
if user.department:
|
||||||
|
|
|
@ -10,13 +10,13 @@ import json
|
||||||
from Utils.SqlAlchemyUtils import get_db_i
|
from Utils.SqlAlchemyUtils import get_db_i
|
||||||
|
|
||||||
|
|
||||||
def get_user_info(db: Session, openid: str):
|
def get_user_info(db: Session, email: str):
|
||||||
user = db.query(User).filter_by(openid=openid).first()
|
user = db.query(User).filter_by(email=email).first()
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
def get_full_user_info(db: Session, openid: str):
|
def get_full_user_info(db: Session, email: str):
|
||||||
user = db.query(User).filter_by(openid=openid).first()
|
user = db.query(User).filter_by(email=email).first()
|
||||||
if not user:
|
if not user:
|
||||||
return None
|
return None
|
||||||
departments = []
|
departments = []
|
||||||
|
@ -35,29 +35,29 @@ def get_full_user_info(db: Session, openid: str):
|
||||||
return user_data
|
return user_data
|
||||||
|
|
||||||
|
|
||||||
def create_user(db: Session, openid: str):
|
def create_user(db: Session, email: str):
|
||||||
user = User(openid=openid)
|
user = User(email=email)
|
||||||
db.add(user)
|
db.add(user)
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(user)
|
db.refresh(user)
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
def change_user_info(db: Session, openid: str, user_info_change: UserSchemas.UserInfoChange):
|
def change_user_info(db: Session, email: str, user_info_change: UserSchemas.UserInfoChange):
|
||||||
db.query(User).filter_by(openid=openid).update(user_info_change.dict())
|
db.query(User).filter_by(email=email).update(user_info_change.dict())
|
||||||
db.commit()
|
db.commit()
|
||||||
return db.query(User).filter_by(openid=openid).first()
|
return db.query(User).filter_by(email=email).first()
|
||||||
|
|
||||||
|
|
||||||
# 根据email从用户信息表内配置用户数据,相当于用户接入后的数据库操作
|
# 根据email从用户信息表内配置用户数据,相当于用户接入后的数据库操作
|
||||||
def update_user_info_from_email(db: Session, openid: str, email: str):
|
def update_user_info_from_email(db: Session, email: str):
|
||||||
user_info = db.query(UserInfo).filter_by(email=email).first()
|
user_info = db.query(UserInfo).filter_by(email=email).first()
|
||||||
if user_info:
|
if user_info:
|
||||||
db.query(User).filter_by(openid=openid).update(
|
db.query(User).filter_by(email=email).update(
|
||||||
{'email': email, "name": user_info.name, "post": user_info.post,
|
{'email': email, "name": user_info.name, "post": user_info.post,
|
||||||
"department": user_info.department, 'registered': True})
|
"department": user_info.department, 'registered': True})
|
||||||
else:
|
else:
|
||||||
db.query(User).filter_by(openid=openid).update(
|
db.query(User).filter_by(email=email).update(
|
||||||
{'email': email, 'registered': True})
|
{'email': email, 'registered': True})
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ class Daily(Base):
|
||||||
id = Column(Integer, primary_key=True, comment="日报ID")
|
id = Column(Integer, primary_key=True, comment="日报ID")
|
||||||
type = Column(Enum(DailyTypeEnum, values_callable=lambda x: [e.value for e in x]), nullable=False)
|
type = Column(Enum(DailyTypeEnum, values_callable=lambda x: [e.value for e in x]), nullable=False)
|
||||||
# fill_user = Column(String(128), comment="填报人openid")
|
# fill_user = Column(String(128), comment="填报人openid")
|
||||||
fill_user = Column(String(128), ForeignKey('user.openid'), comment="填报人openid")
|
fill_user = Column(String(128), ForeignKey('user.email'), comment="填报人email")
|
||||||
user_info = relationship('User', uselist=False, backref='user')
|
user_info = relationship('User', uselist=False, backref='user')
|
||||||
title = Column(String(128), comment="标题")
|
title = Column(String(128), comment="标题")
|
||||||
department = Column(Integer, comment="填报部门")
|
department = Column(Integer, comment="填报部门")
|
||||||
|
|
|
@ -6,8 +6,8 @@ from Utils.SqlAlchemyUtils import Base
|
||||||
|
|
||||||
class User(Base):
|
class User(Base):
|
||||||
__tablename__ = "user"
|
__tablename__ = "user"
|
||||||
openid = Column(String(255), primary_key=True, comment="用户OpenID")
|
# openid = Column(String(255), primary_key=True, comment="用户OpenID")
|
||||||
email = Column(String(64), unique=True, index=True, comment="邮箱")
|
email = Column(String(255), primary_key=True, comment="邮箱")
|
||||||
name = Column(String(32), comment="用户名")
|
name = Column(String(32), comment="用户名")
|
||||||
department = Column(Text, comment="部门")
|
department = Column(Text, comment="部门")
|
||||||
post = Column(Text, comment="职务")
|
post = Column(Text, comment="职务")
|
||||||
|
|
|
@ -32,8 +32,8 @@ def daily_get(req: DailySchemas.DailyGetReq, db: Session = Depends(get_db),
|
||||||
@router.post("/daily_add", response_model=DailySchemas.DailyAddRes, summary="添加日报")
|
@router.post("/daily_add", response_model=DailySchemas.DailyAddRes, summary="添加日报")
|
||||||
def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db),
|
def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db),
|
||||||
token_data: TokenData = Depends(token_data_depend)):
|
token_data: TokenData = Depends(token_data_depend)):
|
||||||
if req.fill_user != token_data.openid:
|
if req.fill_user != token_data.email:
|
||||||
raise HTTPException(detail="填报人与id不符", status_code=305)
|
raise HTTPException(detail="填报人与email不符", status_code=305)
|
||||||
# 本部门填报权限
|
# 本部门填报权限
|
||||||
print(token_data.department, token_data, "token_data.departmentxx")
|
print(token_data.department, token_data, "token_data.departmentxx")
|
||||||
if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']):
|
if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']):
|
||||||
|
|
|
@ -34,7 +34,7 @@ def login_to_app(req: UserSchemas.LoginToAppReq, db: Session = Depends(get_db)):
|
||||||
|
|
||||||
@router.post('/get_user_info', summary='获取用户信息', tags=["用户接口"], response_model=UserSchemas.GetUserInfoRes)
|
@router.post('/get_user_info', summary='获取用户信息', tags=["用户接口"], response_model=UserSchemas.GetUserInfoRes)
|
||||||
def get_user_info(token_data: TokenData = Depends(registered_depend), db: Session = Depends(get_db)):
|
def get_user_info(token_data: TokenData = Depends(registered_depend), db: Session = Depends(get_db)):
|
||||||
user_data = UserCrud.get_full_user_info(db, token_data.openid)
|
user_data = UserCrud.get_full_user_info(db, token_data.email)
|
||||||
if not user_data:
|
if not user_data:
|
||||||
raise HTTPException(detail="用户未注册", status_code=403)
|
raise HTTPException(detail="用户未注册", status_code=403)
|
||||||
if not user_data['email']:
|
if not user_data['email']:
|
||||||
|
@ -52,10 +52,10 @@ def change_user_info_and_email(req: UserSchemas.ChangeUserInfoReq, token_data: T
|
||||||
checked = EmailVerifyCode.check_code(req.email, req.email_code, EmailVerifyType.change)
|
checked = EmailVerifyCode.check_code(req.email, req.email_code, EmailVerifyType.change)
|
||||||
if not checked:
|
if not checked:
|
||||||
raise HTTPException(detail="邮箱验证码错误", status_code=303)
|
raise HTTPException(detail="邮箱验证码错误", status_code=303)
|
||||||
if token_data.openid != req.openid:
|
if token_data.email != req.email:
|
||||||
raise HTTPException(detail="无权限的操作", status_code=303)
|
raise HTTPException(detail="无权限的操作", status_code=303)
|
||||||
user = UserCrud.change_user_info(db, token_data.openid, UserSchemas.UserInfoChange(**req.dict(), registered=True))
|
user = UserCrud.change_user_info(db, token_data.email, UserSchemas.UserInfoChange(**req.dict(), registered=True))
|
||||||
auth_data = AuthCrud.get_user_auth(db, token_data.openid)
|
auth_data = AuthCrud.get_user_auth(db, token_data.email)
|
||||||
user_data = user.to_dict()
|
user_data = user.to_dict()
|
||||||
user_data["auth_data"] = auth_data
|
user_data["auth_data"] = auth_data
|
||||||
new_token_data = TokenData(**user_data)
|
new_token_data = TokenData(**user_data)
|
||||||
|
@ -66,28 +66,28 @@ def change_user_info_and_email(req: UserSchemas.ChangeUserInfoReq, token_data: T
|
||||||
@router.post('/change_user_info', tags=["用户接口"], summary='修改用户信息')
|
@router.post('/change_user_info', tags=["用户接口"], summary='修改用户信息')
|
||||||
def change_user_info(req: UserSchemas.ChangeUserInfoReq, token_data: TokenData = Depends(token_data_depend),
|
def change_user_info(req: UserSchemas.ChangeUserInfoReq, token_data: TokenData = Depends(token_data_depend),
|
||||||
db: Session = Depends(get_db)):
|
db: Session = Depends(get_db)):
|
||||||
if token_data.openid != req.openid:
|
if token_data.email != req.email:
|
||||||
raise HTTPException(detail="无权限的操作", status_code=303)
|
raise HTTPException(detail="无权限的操作", status_code=303)
|
||||||
UserCrud.change_user_info(db, token_data.openid, UserSchemas.UserInfoChange(**req.dict()))
|
UserCrud.change_user_info(db, token_data.email, UserSchemas.UserInfoChange(**req.dict()))
|
||||||
return {'msg': "修改成功", 'state': 1}
|
return {'msg': "修改成功", 'state': 1}
|
||||||
|
|
||||||
|
|
||||||
@router.post('/bind_email', tags=["用户接口"], summary='绑定email')
|
@router.post('/bind_email', tags=["用户接口"], summary='邮箱登录')
|
||||||
def bind_email(req: UserSchemas.BindEmailReq,
|
def bind_email(req: UserSchemas.BindEmailReq,
|
||||||
db: Session = Depends(get_db)):
|
db: Session = Depends(get_db)):
|
||||||
checked = EmailVerifyCode.check_code(req.email, req.email_code, EmailVerifyType.change)
|
checked = EmailVerifyCode.check_code(req.email, req.email_code, EmailVerifyType.change)
|
||||||
if not checked:
|
if not checked:
|
||||||
raise HTTPException(detail="邮箱验证码错误", status_code=303)
|
raise HTTPException(detail="邮箱验证码错误", status_code=303)
|
||||||
user = UserCrud.get_user_info(db, req.openid)
|
user = UserCrud.get_user_info(db, req.email)
|
||||||
if user:
|
# if user:
|
||||||
# 邮箱已绑定
|
# # 邮箱已绑定
|
||||||
if user.email and user.email != req.email:
|
# if user.email and user.email != req.email:
|
||||||
raise HTTPException(detail="该微信已绑定邮箱,请使用该微信号绑定的邮箱登录", status_code=403)
|
# raise HTTPException(detail="该微信已绑定邮箱,请使用该微信号绑定的邮箱登录", status_code=403)
|
||||||
if not user:
|
if not user:
|
||||||
user = UserCrud.create_user(db, req.openid)
|
user = UserCrud.create_user(db, req.email)
|
||||||
if not user.registered:
|
if not user.registered:
|
||||||
UserCrud.update_user_info_from_email(db, req.openid, req.email)
|
UserCrud.update_user_info_from_email(db, req.email)
|
||||||
auth_data = AuthCrud.get_user_auth(db, req.openid)
|
auth_data = AuthCrud.get_user_auth(db, req.email)
|
||||||
user_data = user.to_dict()
|
user_data = user.to_dict()
|
||||||
user_data["auth_data"] = auth_data
|
user_data["auth_data"] = auth_data
|
||||||
token_data = TokenData(**user_data)
|
token_data = TokenData(**user_data)
|
||||||
|
@ -106,6 +106,17 @@ def get_email_verify_code(body: UserSchemas.EmailSendReqBody):
|
||||||
return {"msg": "验证码已发送至邮箱,请查看", "state": 1}
|
return {"msg": "验证码已发送至邮箱,请查看", "state": 1}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/refresh_token", tags=["用户接口"], summary="重新获取token")
|
||||||
|
def refresh_token(token_data: TokenData = Depends(token_data_depend), db: Session = Depends(get_db)):
|
||||||
|
auth_data = AuthCrud.get_user_auth(db, token_data.email)
|
||||||
|
user = UserCrud.get_user_info(db, token_data.email)
|
||||||
|
user_data = user.to_dict()
|
||||||
|
user_data["auth_data"] = auth_data
|
||||||
|
token_data = TokenData(**user_data)
|
||||||
|
token = create_token(token_data)
|
||||||
|
return {'token': token}
|
||||||
|
|
||||||
|
|
||||||
department_crud = auto_create_crud(Department, 'department', "部门", auto_create_keys=['id'], tags=["部门职务操作"])
|
department_crud = auto_create_crud(Department, 'department', "部门", auto_create_keys=['id'], tags=["部门职务操作"])
|
||||||
post_crud = auto_create_crud(Post, 'post', "职务", auto_create_keys=['id'], tags=["部门职务操作"])
|
post_crud = auto_create_crud(Post, 'post', "职务", auto_create_keys=['id'], tags=["部门职务操作"])
|
||||||
department_crud.mount(router)
|
department_crud.mount(router)
|
||||||
|
|
|
@ -10,7 +10,7 @@ class LoginToAppReq(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class LoginToAppRes(BaseModel):
|
class LoginToAppRes(BaseModel):
|
||||||
openid: str
|
email: str
|
||||||
# registered: bool
|
# registered: bool
|
||||||
# token: str
|
# token: str
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ class PostInfo(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class GetUserInfoRes(BaseModel):
|
class GetUserInfoRes(BaseModel):
|
||||||
openid: Optional[str]
|
|
||||||
email: Optional[str]
|
email: Optional[str]
|
||||||
post: Optional[str]
|
post: Optional[str]
|
||||||
post_list: Optional[List[PostInfo]]
|
post_list: Optional[List[PostInfo]]
|
||||||
|
@ -44,25 +43,22 @@ class GetUserInfoRes(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class TokenData(BaseModel):
|
class TokenData(BaseModel):
|
||||||
openid: str
|
email: str
|
||||||
registered: bool
|
registered: bool
|
||||||
auth_data: Union[str, None]
|
auth_data: Union[str, None]
|
||||||
department: Union[str, None]
|
department: Union[str, None]
|
||||||
post: Union[str, None]
|
post: Union[str, None]
|
||||||
email: Union[str, None]
|
|
||||||
|
|
||||||
|
|
||||||
class UserInfoChange(BaseModel):
|
class UserInfoChange(BaseModel):
|
||||||
openid: str
|
|
||||||
email: str
|
email: str
|
||||||
name: str
|
name: Optional[str]
|
||||||
post: str
|
post: Optional[str]
|
||||||
department: str
|
department: Optional[str]
|
||||||
registered: bool
|
registered: Optional[bool]
|
||||||
|
|
||||||
|
|
||||||
class UserInfo(BaseModel):
|
class UserInfo(BaseModel):
|
||||||
openid: str
|
|
||||||
email: str
|
email: str
|
||||||
name: str
|
name: str
|
||||||
post: str
|
post: str
|
||||||
|
@ -75,7 +71,6 @@ class ChangeUserInfoReq(UserInfoChange):
|
||||||
|
|
||||||
|
|
||||||
class BindEmailReq(BaseModel):
|
class BindEmailReq(BaseModel):
|
||||||
openid: str
|
|
||||||
email: str = "xxxx@fecr.com.cn"
|
email: str = "xxxx@fecr.com.cn"
|
||||||
email_code: str
|
email_code: str
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue