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
This commit is contained in:
@@ -7,8 +7,7 @@ import org.springframework.web.bind.annotation.RestController
|
||||
* 路径前缀(待定):/api/admin/borrows
|
||||
*
|
||||
* 计划接口:
|
||||
* - 全量借阅记录查询
|
||||
* - 手动归还
|
||||
* - 全量搜索借阅记录
|
||||
*/
|
||||
@RestController
|
||||
class AdminBorrowController {
|
||||
|
||||
@@ -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<out Any?> {
|
||||
log.info("[Auth] login attempt: user={}, ip={}", loginDTO.username, ipExtractor.getRealIp(request))
|
||||
|
||||
@@ -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
|
||||
)
|
||||
+1
-1
@@ -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")
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.msksbr.bookmgr.service
|
||||
|
||||
interface AdminBorrowService {
|
||||
fun searchBorrows(query: String): Result<Any?>
|
||||
}
|
||||
@@ -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?
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.msksbr.bookmgr.service
|
||||
|
||||
interface BorrowService {
|
||||
fun getAllMyBorrows(userId: Long): Result<Any?>
|
||||
fun searchMyBorrows(query: String): Result<Any?>
|
||||
fun getOneBorrow(borrowId: Long): Result<Any?>
|
||||
fun borrowBook(bookId: Long): Result<Any?>
|
||||
fun returnBook(borrowId: Long): Result<Any?>
|
||||
}
|
||||
@@ -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<User>()
|
||||
.eq("username", loginDTO.username)
|
||||
|
||||
@@ -30,6 +30,7 @@ class DashBoardServiceImpl(
|
||||
return Result.success(bookJsonList)
|
||||
}
|
||||
|
||||
// @TODO: 改成返回BorrowInfoDto
|
||||
override fun getAllBorrowRecords(): Result<Any?> {
|
||||
val borrowRecordList = borrowRecordMapper.selectList(null)
|
||||
val borrowRecordJsonList = borrowRecordList.map { borrowRecord ->
|
||||
|
||||
Reference in New Issue
Block a user