之前我們分享了FastAPI(七十一)實戰開發《在線課程學習系統》接口開發-- 查看留言,這次我們分享留言列表開發。
列表獲取,也需要登錄,根據登錄用戶來獲取對應的留言。邏輯梳理如下。
1.判斷用戶是否登錄 2.根據登錄用戶查詢留言列表 3.留言列表中要根據是留言回覆,進行列表重組
我們根據邏輯去梳理下對應的crud
def get_message_list(db: Session, userid: int): return db.query(Message).filter(or_(Message.senduser.id == userid, Message.acceptusers.id == userid,Message.status==0)).all()
我們根據邏輯去開發對應的代碼。
@usersRouter.get(path="/messagelist") async def messagelist(user: UsernameRole = Depends(get_cure_user), db: Session = Depends(get_db)): users = get_user_username(db, user.username) messagelist = get_message_list(db=db, userid=users.id) message_list = [] mainmessage = [] if len(messagelist) > 0: for item in messagelist: if item.pid == "": messageone = MessageOne(id=item.id, senduser=get_user(db,item.senduser).username, acceptusers=get_user(db,item.acceptusers).username, read=item.read, sendtime=item.sendtime, addtime=str(item.addtime), context=item.context) mainmessage.append(messageone.id) all_pid = get_pid_message(db, item.id) if len(all_pid) > 0: allpidlist = [] for items in all_pid: message = MessagePid(id=item.id, senduser=get_user(db,items.senduser).username, acceptusers=get_user(db,items.acceptusers).username, read=items.read, sendtime=items.sendtime, addtime=str(items.addtime), context=items.context, pid=items.pid) allpidlist.append(message) messageone.pid = allpidlist message_list.append(messageone) else: if item.pid not in mainmessage: message = get_message(db, item.pid) if message: all_pid = get_pid_message(db, message.id) messageone = MessageOne(id=message.id, senduser=get_user(db,message.senduser).username, acceptusers=get_user(db,message.acceptusers).username, read=message.read, sendtime=message.sendtime, addtime=str(message.addtime), context=message.context) if len(all_pid) > 0: allpidlist = [] for item in all_pid: messagepid = MessagePid(id=message.id, senduser=get_user(db,item.senduser).username, acceptusers=get_user(db,item.acceptusers).username, read=item.read, sendtime=item.sendtime, addtime=str(item.addtime), context=item.context, pid=item.pid) allpidlist.append(messagepid) messageone.pid = allpidlist message_list.append(messageone) return reponse(code=200, message='成功', data=jsonable_encoder(message_list))