From 5b995230593397b629ab5b5b109036e9bcb6a126 Mon Sep 17 00:00:00 2001 From: msksbr515 Date: Sat, 23 May 2026 00:40:05 +0800 Subject: [PATCH] feat(borrow): add borrow service interfaces and search capability - Add BorrowService and AdminBorrowService interfaces - Add BorrowInfoDto for borrow record data transfer - Rename UserLoginDTO to UserLoginDto for naming consistency - Update dashboard to use structured borrow record mapping --- .../bookmgr/controller/AdminBorrowController.kt | 3 +-- .../msksbr/bookmgr/controller/AuthController.kt | 4 ++-- .../kotlin/com/msksbr/bookmgr/dto/BorrowInfoDto.kt | 14 ++++++++++++++ .../dto/{UserLoginDTO.kt => UserLoginDto.kt} | 2 +- .../msksbr/bookmgr/service/AdminBorrowService.kt | 5 +++++ .../com/msksbr/bookmgr/service/AuthService.kt | 4 ++-- .../com/msksbr/bookmgr/service/BorrowService.kt | 9 +++++++++ .../msksbr/bookmgr/service/impl/AuthServiceImpl.kt | 4 ++-- .../bookmgr/service/impl/DashBoardServiceImpl.kt | 1 + 9 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 src/main/kotlin/com/msksbr/bookmgr/dto/BorrowInfoDto.kt rename src/main/kotlin/com/msksbr/bookmgr/dto/{UserLoginDTO.kt => UserLoginDto.kt} (95%) create mode 100644 src/main/kotlin/com/msksbr/bookmgr/service/AdminBorrowService.kt create mode 100644 src/main/kotlin/com/msksbr/bookmgr/service/BorrowService.kt diff --git a/src/main/kotlin/com/msksbr/bookmgr/controller/AdminBorrowController.kt b/src/main/kotlin/com/msksbr/bookmgr/controller/AdminBorrowController.kt index 549a38d..8cdcea1 100644 --- a/src/main/kotlin/com/msksbr/bookmgr/controller/AdminBorrowController.kt +++ b/src/main/kotlin/com/msksbr/bookmgr/controller/AdminBorrowController.kt @@ -7,8 +7,7 @@ import org.springframework.web.bind.annotation.RestController * 路径前缀(待定):/api/admin/borrows * * 计划接口: -* - 全量借阅记录查询 -* - 手动归还 +* - 全量搜索借阅记录 */ @RestController class AdminBorrowController { diff --git a/src/main/kotlin/com/msksbr/bookmgr/controller/AuthController.kt b/src/main/kotlin/com/msksbr/bookmgr/controller/AuthController.kt index eafe002..aca6c52 100644 --- a/src/main/kotlin/com/msksbr/bookmgr/controller/AuthController.kt +++ b/src/main/kotlin/com/msksbr/bookmgr/controller/AuthController.kt @@ -2,7 +2,7 @@ package com.msksbr.bookmgr.controller import com.msksbr.bookmgr.config.IpExtractor import com.msksbr.bookmgr.config.JwtUtils -import com.msksbr.bookmgr.dto.UserLoginDTO +import com.msksbr.bookmgr.dto.UserLoginDto import com.msksbr.bookmgr.script.log import com.msksbr.bookmgr.service.AuthService import com.msksbr.bookmgr.template.Result @@ -44,7 +44,7 @@ class AuthController( fun login( @Valid @RequestBody - loginDTO: UserLoginDTO, + loginDTO: UserLoginDto, request: HttpServletRequest ): Result { log.info("[Auth] login attempt: user={}, ip={}", loginDTO.username, ipExtractor.getRealIp(request)) diff --git a/src/main/kotlin/com/msksbr/bookmgr/dto/BorrowInfoDto.kt b/src/main/kotlin/com/msksbr/bookmgr/dto/BorrowInfoDto.kt new file mode 100644 index 0000000..a9ba63e --- /dev/null +++ b/src/main/kotlin/com/msksbr/bookmgr/dto/BorrowInfoDto.kt @@ -0,0 +1,14 @@ +package com.msksbr.bookmgr.dto + +import com.msksbr.bookmgr.entity.Book +import java.util.Date + +class BorrowInfoDto( + val id: Long, + val book: Book, + val userId: Long, + val username: String, + val borrowTime: Date, + val returnTime: Date?, + val string: String +) \ No newline at end of file diff --git a/src/main/kotlin/com/msksbr/bookmgr/dto/UserLoginDTO.kt b/src/main/kotlin/com/msksbr/bookmgr/dto/UserLoginDto.kt similarity index 95% rename from src/main/kotlin/com/msksbr/bookmgr/dto/UserLoginDTO.kt rename to src/main/kotlin/com/msksbr/bookmgr/dto/UserLoginDto.kt index a6d862b..8b14f08 100644 --- a/src/main/kotlin/com/msksbr/bookmgr/dto/UserLoginDTO.kt +++ b/src/main/kotlin/com/msksbr/bookmgr/dto/UserLoginDto.kt @@ -11,7 +11,7 @@ import jakarta.validation.constraints.NotBlank * * 字段类型为可空 String?,但运行时被 @Valid + @NotBlank 保证非空 */ -data class UserLoginDTO( +data class UserLoginDto( @NotBlank(message = "username is required") val username: String?, @NotBlank(message = "password is required") diff --git a/src/main/kotlin/com/msksbr/bookmgr/service/AdminBorrowService.kt b/src/main/kotlin/com/msksbr/bookmgr/service/AdminBorrowService.kt new file mode 100644 index 0000000..fcf0628 --- /dev/null +++ b/src/main/kotlin/com/msksbr/bookmgr/service/AdminBorrowService.kt @@ -0,0 +1,5 @@ +package com.msksbr.bookmgr.service + +interface AdminBorrowService { + fun searchBorrows(query: String): Result +} \ No newline at end of file diff --git a/src/main/kotlin/com/msksbr/bookmgr/service/AuthService.kt b/src/main/kotlin/com/msksbr/bookmgr/service/AuthService.kt index a64a574..42fc24f 100644 --- a/src/main/kotlin/com/msksbr/bookmgr/service/AuthService.kt +++ b/src/main/kotlin/com/msksbr/bookmgr/service/AuthService.kt @@ -1,6 +1,6 @@ package com.msksbr.bookmgr.service -import com.msksbr.bookmgr.dto.UserLoginDTO +import com.msksbr.bookmgr.dto.UserLoginDto import com.msksbr.bookmgr.entity.User /* @@ -13,5 +13,5 @@ interface AuthService { * @param loginDTO 包含 username 和 password 的请求体 * @return 验证成功返回对应的 User 实体,失败返回 null */ - fun login(loginDTO: UserLoginDTO): User? + fun login(loginDTO: UserLoginDto): User? } diff --git a/src/main/kotlin/com/msksbr/bookmgr/service/BorrowService.kt b/src/main/kotlin/com/msksbr/bookmgr/service/BorrowService.kt new file mode 100644 index 0000000..b945431 --- /dev/null +++ b/src/main/kotlin/com/msksbr/bookmgr/service/BorrowService.kt @@ -0,0 +1,9 @@ +package com.msksbr.bookmgr.service + +interface BorrowService { + fun getAllMyBorrows(userId: Long): Result + fun searchMyBorrows(query: String): Result + fun getOneBorrow(borrowId: Long): Result + fun borrowBook(bookId: Long): Result + fun returnBook(borrowId: Long): Result +} \ No newline at end of file diff --git a/src/main/kotlin/com/msksbr/bookmgr/service/impl/AuthServiceImpl.kt b/src/main/kotlin/com/msksbr/bookmgr/service/impl/AuthServiceImpl.kt index f8ee38f..6653aeb 100644 --- a/src/main/kotlin/com/msksbr/bookmgr/service/impl/AuthServiceImpl.kt +++ b/src/main/kotlin/com/msksbr/bookmgr/service/impl/AuthServiceImpl.kt @@ -1,7 +1,7 @@ package com.msksbr.bookmgr.service.impl import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper -import com.msksbr.bookmgr.dto.UserLoginDTO +import com.msksbr.bookmgr.dto.UserLoginDto import com.msksbr.bookmgr.entity.User import com.msksbr.bookmgr.mapper.UserMapper import com.msksbr.bookmgr.service.AuthService @@ -29,7 +29,7 @@ class AuthServiceImpl( * @param loginDTO 包含 username 和 password * @return 验证成功返回 User,失败返回 null */ - override fun login(loginDTO: UserLoginDTO): User? { + override fun login(loginDTO: UserLoginDto): User? { val user = userMapper.selectOne( QueryWrapper() .eq("username", loginDTO.username) diff --git a/src/main/kotlin/com/msksbr/bookmgr/service/impl/DashBoardServiceImpl.kt b/src/main/kotlin/com/msksbr/bookmgr/service/impl/DashBoardServiceImpl.kt index 23c363f..85f338d 100644 --- a/src/main/kotlin/com/msksbr/bookmgr/service/impl/DashBoardServiceImpl.kt +++ b/src/main/kotlin/com/msksbr/bookmgr/service/impl/DashBoardServiceImpl.kt @@ -30,6 +30,7 @@ class DashBoardServiceImpl( return Result.success(bookJsonList) } + // @TODO: 改成返回BorrowInfoDto override fun getAllBorrowRecords(): Result { val borrowRecordList = borrowRecordMapper.selectList(null) val borrowRecordJsonList = borrowRecordList.map { borrowRecord ->