728x90
320x100
책 정보를 수정하는 기능을 수정하고, 책 삭제 기능을 추가한다!
[개발목표]
- 책정보 수정 기능 수정
- 책 삭제 기능 구현
1. 책 정보 수정 기능 수정
이미 대여중인 책은 책의 소유자가 책 상태 여부를 수정할 수 없다.
bookEditForm.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{common/layout}"
layout:fragment="content">
<head>
<title>책 정보 수정</title>
<script th:src="@{/js/book/bookEditForm.js}"></script>
</head>
<body>
<div class="container" style="max-width: 800px">
<div class="py-5 text-center" >
<h2>책 정보 수정</h2>
</div>
<form action="member.html" th:action th:object="${book}" method="post">
/// 생략 ///
<label for="bookStateCode">상태</label>
<span style="color: red; display: none;" id="bookStateSpan">* 대여 중인 책은 상태를 변경할 수 없습니다.</span>
<select id="bookStateCode" class="form-control" th:field="*{bookStateCode}">
<option th:each="bookStateCode : ${bookStateCodes}" th:value="${bookStateCode.bookStateCode}" th:text="${bookStateCode.bookStateCodeName}"></option>
</select>
/// 생략 ///
</div>
<hr class="my-4">
<div class="row">
<div class="col">
<button class="w-100 btn btn-primary btn-lg" type="submit">저장
</button>
</div>
<div class="col">
<button class="w-100 btn btn-secondary btn-lg" onclick="location.href='member.html'"
th:onclick="|location.href='@{/book/{bookId}(bookId=${book.bookId})}'|" type="button">취소</button>
</div>
</div>
</form>
</div> <!-- /container -->
</body>
</html>
bookEditForm.js
function bookStateEditYn(){
let selectedValue = document.getElementById("bookStateCode").value;
if (selectedValue == 'UNABLE'){
document.getElementById("bookStateCode").disabled = 'true';
document.getElementById('bookStateSpan').style.display = 'block';
}
}
document.addEventListener('DOMContentLoaded', function (){
bookStateEditYn();
})
- 책 상태가 대여 불가능일 때는 이미 대여중인 상태기 때문에 아무리 소유자라고 해도 책 상태를 수정할 수 없게끔 스크립트 작성.
2. 책 삭제 기능 구현
책을 소유한 자가 등록한 책을 삭제하고 싶을 수도 있다. 다만 대여중일 때는 삭제가 불가능하다.
bookMapper.xml
<update id="deleteBook" parameterType="java.lang.String">
UPDATE BOOK
SET USE_AT = 'N'
WHERE BOOK_ID =#{bookId}
</update>
bookMapper.java
void deleteBook(@Param("bookId") String bookId);
bookService, bookServiceImpl.java
void deleteBook (String bookId);
@Override
public void deleteBook(String bookId) {
bookMapper.deleteBook(bookId);
}
bookController.java
/**
* 책 삭제 (논리삭제)
* @param bookId
* @return
*/
@PostMapping("/{bookId}/deleteBook")
public ResponseEntity<String> deleteBook (@PathVariable String bookId){
bookService.deleteBook(bookId);
return ResponseEntity.ok("삭제 완료");
}
book.js
function deleteBtn(){
let bookId = document.getElementById("bookId").value;
let bookStateCode = document.getElementById("bookStateCode").value;
if(bookStateCode == '대여불가능'){
alert("대여중 일 때는 삭제가 불가능합니다.");
return;
}
if (confirm("책을 삭제하시겠습니까?")){
fetch("/book/" + bookId + "/deleteBook", {
method : "POST"
})
.then(response => {
if (response.ok){
alert("삭제가 완료되었습니다.");
window.location.href = "/book";
} else {
console.log("삭제 실패");
}
})
.catch(error => {console.error("Error : ", error)})
}
}
document.addEventListener('DOMContentLoaded', function (){
let deleteButton = document.getElementById("deleteBtn");
if (deleteButton) {
document.getElementById("deleteBtn").addEventListener('click', deleteBtn);
}
})
- 책 삭제 기능은 논리 삭제로 삭제 기능을 구현하였다.
- 책 삭제 버트는 보이게 해놨지만, 대여중일 때는 삭제할 수 없게끔 구현했다.
728x90
320x100
'💻 뚝딱뚝딱 > 팀내도서대여시스템(OBRS)' 카테고리의 다른 글
[개발일지#009] 로그인 / 로그아웃 / 회원가입 수정 및 구현 (0) | 2024.04.10 |
---|---|
[개발일지#008] 나의책 / 빌린책 기능 구현 (0) | 2024.04.09 |
[개발일지#006] 책 대여 / 반납 기능 구현 (0) | 2024.04.07 |
[개발일지#005] 데이터베이스 수정작업 그리고 그에 따른 XML 수정 (0) | 2024.04.06 |
[개발일지#004] 타임리프 레이아웃 적용 및 네비게이션 바 생성/디자인 및 구현 (0) | 2024.04.05 |