---
tags: backend, flow
---
# Backend Flow
```plantuml
@startuml
==/POST Login API==
Frontend->Backend:student_id, password
Backend->DB:write login record
Backend->Server:student_id, password
alt succes
Server->Backend:Login Success: token, ...
Backend->DB:write user table
Backend->Frontend:Login Success: token, studentId, name, code, msg
else failed
Server->Backend:http 401 | 403 | 504 | 500
Backend->Frontend:msg, detail
end
==when server is shutdown==
Frontend->Backend:student_id, password
Backend->DB:write login record
Backend->x Server:student, password
Backend->Frontend:http 503 Service Unavailable
==/GET get record API==
Frontend->Backend:token
DB->Backend:get user info
Backend->Backend:check user
alt valid
DB->Backend:get 最後更新時間
Backend->Server:get record by token
Server->Backend:record
Backend->DB:update record table
DB->Backend:get record from DB
Backend->Backend:組合校務系統和DB的資料、排序、分頁、過濾status
Backend->Frontend:record, code, msg
else invalid
Backend->Frontend:http 401
end
==when server is shutdown==
Frontend->Backend:token
DB->Backend:get user info
Backend->Backend:check user
alt valid
DB->Backend:get 最後更新時間
Backend->x Server:get record by token
DB->Backend:get record from DB 註明未驗證
Backend->Backend:組合校務系統和DB的資料、排序、分頁、過濾status
Backend->Frontend:record, code, msg
else invalid
Backend->Frontend:http 401
end
@enduml
```
```plantuml
@startuml
participant Frontend order 10
participant Backend order 20
participant DB order 25
participant Server order 30
==/POST Leave application API==
Frontend->Backend:請假紀錄
DB->Backend:get user info
Backend->Backend:check user
alt valid
Backend->Server:token, 請假紀錄
Backend->DB:write 請假紀錄
Server->Backend:http 200 Success: data, ...
Backend->DB:write status to record
Backend->Frontend:code, msg
else invalid
Backend->Frontend:http 401
end
==when server is shutdown==
Frontend->Backend:請假紀錄
DB->Backend:get user info
Backend->Backend:check user
alt valid
Backend->DB:write 請假紀錄
Backend->x Server:token, 請假紀錄
Backend->DB:write status to record
Backend->Frontend:code, msg: 告訴使用者校務系統無法\n使用,將來排程送出請假
else invalid
Backend->Frontend:http 401
end
==/GET getCourse API==
Frontend->Backend:token
DB->Backend:get user info
Backend->Backend:check user
alt valid
Backend->Server:token
Server->Backend:http 200: courses, ...
Backend->DB:write courses to DB
Backend->Frontend:courses, code, msg
else invalid
Backend->Frontend:http 401
end
==when server is shutdown==
Frontend->Backend:token
DB->Backend:get user info
Backend->Backend:check user
alt valid
Backend->x Server:token
DB->Backend:get exsited course
alt have courses in DB
Backend->Frontend:courses
else no saved courses
Backend->Frontend:http 503 Service Unavailable
end
else invalid
Backend->Frontend:http 401
end
@enduml
```