서비스에는 여러 변수 상황이 있는데, 비품의 상태가 의도치 않게 튀지 않게 대응하였습니다.
User 및 여러 Entity에 대해서 삭제 되어도 History는 남아있어야 한다고 판단하여 SoftDelete를 적용하였습니다.
비품의 상태 및 History는 요청(Requests) 프로세스에 의해 관리됩니다.
비품의 상태는 코드 중 빨간 박스 안에서 비품(Supply) 내부의 메서드에 의해 관리됩니다.
History는 요청(Requests) 데이터 그 자체가 History가 됩니다.
비품 등록시 바로 User를 입력할 수 있습니다.
이 User도 해당 비품의 기록에 남아야 하기 때문에 비품 등록과 동시에 Requests도 생성.
Admin은 수정을 통해 비품을 사용자에게 직접 부여할 수 있습니다.
해당 기능에 의해 변경된 이력들도 History에 남겨야 합니다.
유저가 탈퇴될 때 가지고 있는 비품들을 자동으로 반납 처리 하도록 하였습니다.
그리고 유저가 이전에 진행했던 요청들 중 미처리 요청들은 거절 처리 되도록 진행하였습니다.
비품의 사용 유저 내역에 공용 비품은 부서가 입력 되어 있는데, 처음에는 Requests(요청)의 신청 User의 부서를 조회하였습니다. 이에 책임자(신청자) User가 부서이동을 하면 비품의 유저내역 History도 같이 이동하는 오류가 있었습니다. 이를 잡기 위해 Requests에서도 부서와의 연관관계를 맺게 되었습니다.