From 290cafa03d2f6b8edb60c462774d5590bb24ecdf Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 4 Jul 2024 21:52:49 +0800 Subject: [PATCH] add user requests --- app/db/models/siteuserdata.py | 18 ++++----- app/db/models/userrequest.py | 69 +++++++++++++++++++++++++++++++++++ app/db/userrequest_oper.py | 42 +++++++++++++++++++++ 3 files changed, 120 insertions(+), 9 deletions(-) create mode 100644 app/db/models/userrequest.py create mode 100644 app/db/userrequest_oper.py diff --git a/app/db/models/siteuserdata.py b/app/db/models/siteuserdata.py index 3873b228..3044876d 100644 --- a/app/db/models/siteuserdata.py +++ b/app/db/models/siteuserdata.py @@ -1,6 +1,6 @@ from datetime import datetime -from sqlalchemy import Column, Integer, String, Sequence +from sqlalchemy import Column, Integer, String, Sequence, Float from sqlalchemy.orm import Session from app.db import db_query, Base @@ -22,21 +22,21 @@ class SiteUserData(Base): # 加入时间 join_at = Column(String) # 积分 - bonus = Column(Integer, default=0) + bonus = Column(Float, default=0) # 上传量 - upload = Column(Integer, default=0) + upload = Column(Float, default=0) # 下载量 - download = Column(Integer, default=0) + download = Column(Float, default=0) # 分享率 - ratio = Column(Integer, default=0) + ratio = Column(Float, default=0) # 做种数 - seeding = Column(Integer, default=0) + seeding = Column(Float, default=0) # 下载数 - leeching = Column(Integer, default=0) + leeching = Column(Float, default=0) # 做种体积 - seeding_size = Column(Integer, default=0) + seeding_size = Column(Float, default=0) # 下载体积 - leeching_size = Column(Integer, default=0) + leeching_size = Column(Float, default=0) # 做种人数, 种子大小 JSON seeding_info = Column(String) # 未读消息 diff --git a/app/db/models/userrequest.py b/app/db/models/userrequest.py new file mode 100644 index 00000000..91d0f65f --- /dev/null +++ b/app/db/models/userrequest.py @@ -0,0 +1,69 @@ +from sqlalchemy import Column, Integer, String, Sequence, Float +from sqlalchemy.orm import Session + +from app.db import db_query, Base + + +class UserRequest(Base): + """ + 用户请求表 + """ + # ID + id = Column(Integer, Sequence('id'), primary_key=True, index=True) + # 申请用户 + req_user = Column(String, index=True, nullable=False) + # 申请时间 + req_time = Column(String) + # 申请备注 + req_remark = Column(String) + # 审批用户 + app_user = Column(String, index=True, nullable=False) + # 审批时间 + app_time = Column(String) + # 审批状态 0-待审批 1-通过 2-拒绝 + app_status = Column(Integer, default=0) + # 类型 + type = Column(String) + # 标题 + title = Column(String) + # 年份 + year = Column(String) + # 媒体ID + tmdbid = Column(Integer) + imdbid = Column(String) + tvdbid = Column(Integer) + doubanid = Column(String) + bangumiid = Column(Integer) + # 季号 + season = Column(Integer) + # 海报 + poster = Column(String) + # 背景图 + backdrop = Column(String) + # 评分,float + vote = Column(Float) + # 简介 + description = Column(String) + + @staticmethod + @db_query + def get_by_req_user(db: Session, req_user: str, status: int = None): + if status: + return db.query(UserRequest).filter(UserRequest.req_user == req_user, + UserRequest.app_status == status).all() + else: + return db.query(UserRequest).filter(UserRequest.req_user == req_user).all() + + @staticmethod + @db_query + def get_by_app_user(db: Session, app_user: str, status: int = None): + if status: + return db.query(UserRequest).filter(UserRequest.app_user == app_user, + UserRequest.app_status == status).all() + else: + return db.query(UserRequest).filter(UserRequest.app_user == app_user).all() + + @staticmethod + @db_query + def get_by_status(db: Session, status: int): + return db.query(UserRequest).filter(UserRequest.app_status == status).all() diff --git a/app/db/userrequest_oper.py b/app/db/userrequest_oper.py new file mode 100644 index 00000000..7471602e --- /dev/null +++ b/app/db/userrequest_oper.py @@ -0,0 +1,42 @@ +from typing import Optional + +from app.db import DbOper +from app.db.models.userrequest import UserRequest + + +class UserRequestOper(DbOper): + """ + 用户请求管理 + """ + + def get_need_approve(self) -> Optional[UserRequest]: + """ + 获取待审批申请 + """ + return UserRequest.get_by_status(self._db, 0) + + def get_my_requests(self, username: str) -> Optional[UserRequest]: + """ + 获取我的申请 + """ + return UserRequest.get_by_req_user(self._db, username) + + def approve(self, rid: int) -> bool: + """ + 审批申请 + """ + user_request = UserRequest.get(self._db, rid) + if user_request: + user_request.update(self._db, {"status": 1}) + return True + return False + + def deny(self, rid: int) -> bool: + """ + 拒绝申请 + """ + user_request = UserRequest.get(self._db, rid) + if user_request: + user_request.update(self._db, {"status": 2}) + return True + return False