33import uuid
44import threading
55from fastapi import FastAPI , Depends , UploadFile , Form , File
6+ from sqlalchemy import or_
67from sqlalchemy .orm import Session
78from starlette .requests import Request
89from starlette .responses import HTMLResponse
@@ -144,15 +145,12 @@ async def index(request: Request, code: str, db: Session = Depends(get_db)):
144145 info = db .query (database .Codes ).filter (database .Codes .code == code ).first ()
145146 if not info :
146147 return {'code' : 404 , 'msg' : f'取件码错误,错误{ error_count - ip_error (ip )} 次将被禁止10分钟' }
147- if info .exp_time < datetime .datetime .now ():
148+ if info .exp_time < datetime .datetime .now () or info . count == 0 :
148149 threading .Thread (target = delete_file , args = ([{'type' : info .type , 'text' : info .text }],)).start ()
149150 db .delete (info )
150151 db .commit ()
151152 return {'code' : 404 , 'msg' : '取件码已过期,请联系寄件人' }
152153 info .count -= 1
153- if info .count == 0 :
154- threading .Thread (target = delete_file , args = ([{'type' : info .type , 'text' : info .text }],)).start ()
155- db .delete (info )
156154 db .commit ()
157155 return {
158156 'code' : 200 ,
@@ -164,7 +162,12 @@ async def index(request: Request, code: str, db: Session = Depends(get_db)):
164162@app .post ('/share' )
165163async def share (text : str = Form (default = None ), style : str = Form (default = '2' ), value : int = Form (default = 1 ),
166164 file : UploadFile = File (default = None ), db : Session = Depends (get_db )):
167- exps = db .query (database .Codes ).filter (database .Codes .exp_time < datetime .datetime .now ())
165+ exps = db .query (database .Codes ).filter (
166+ or_ (
167+ database .Codes .exp_time < datetime .datetime .now (),
168+ database .Codes .count == 0
169+ )
170+ )
168171 threading .Thread (target = delete_file , args = ([[{'type' : old .type , 'text' : old .text }] for old in exps .all ()],)).start ()
169172 exps .delete ()
170173 db .commit ()
0 commit comments