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
|
* 路径前缀(待定):/api/admin/borrows
|
||||||
*
|
*
|
||||||
* 计划接口:
|
* 计划接口:
|
||||||
* - 全量借阅记录查询
|
* - 全量搜索借阅记录
|
||||||
* - 手动归还
|
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
class AdminBorrowController {
|
class AdminBorrowController {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.msksbr.bookmgr.controller
|
|||||||
|
|
||||||
import com.msksbr.bookmgr.config.IpExtractor
|
import com.msksbr.bookmgr.config.IpExtractor
|
||||||
import com.msksbr.bookmgr.config.JwtUtils
|
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.script.log
|
||||||
import com.msksbr.bookmgr.service.AuthService
|
import com.msksbr.bookmgr.service.AuthService
|
||||||
import com.msksbr.bookmgr.template.Result
|
import com.msksbr.bookmgr.template.Result
|
||||||
@@ -44,7 +44,7 @@ class AuthController(
|
|||||||
fun login(
|
fun login(
|
||||||
@Valid
|
@Valid
|
||||||
@RequestBody
|
@RequestBody
|
||||||
loginDTO: UserLoginDTO,
|
loginDTO: UserLoginDto,
|
||||||
request: HttpServletRequest
|
request: HttpServletRequest
|
||||||
): Result<out Any?> {
|
): Result<out Any?> {
|
||||||
log.info("[Auth] login attempt: user={}, ip={}", loginDTO.username, ipExtractor.getRealIp(request))
|
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 保证非空
|
* 字段类型为可空 String?,但运行时被 @Valid + @NotBlank 保证非空
|
||||||
*/
|
*/
|
||||||
data class UserLoginDTO(
|
data class UserLoginDto(
|
||||||
@NotBlank(message = "username is required")
|
@NotBlank(message = "username is required")
|
||||||
val username: String?,
|
val username: String?,
|
||||||
@NotBlank(message = "password is required")
|
@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
|
package com.msksbr.bookmgr.service
|
||||||
|
|
||||||
import com.msksbr.bookmgr.dto.UserLoginDTO
|
import com.msksbr.bookmgr.dto.UserLoginDto
|
||||||
import com.msksbr.bookmgr.entity.User
|
import com.msksbr.bookmgr.entity.User
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -13,5 +13,5 @@ interface AuthService {
|
|||||||
* @param loginDTO 包含 username 和 password 的请求体
|
* @param loginDTO 包含 username 和 password 的请求体
|
||||||
* @return 验证成功返回对应的 User 实体,失败返回 null
|
* @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
|
package com.msksbr.bookmgr.service.impl
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
|
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.entity.User
|
||||||
import com.msksbr.bookmgr.mapper.UserMapper
|
import com.msksbr.bookmgr.mapper.UserMapper
|
||||||
import com.msksbr.bookmgr.service.AuthService
|
import com.msksbr.bookmgr.service.AuthService
|
||||||
@@ -29,7 +29,7 @@ class AuthServiceImpl(
|
|||||||
* @param loginDTO 包含 username 和 password
|
* @param loginDTO 包含 username 和 password
|
||||||
* @return 验证成功返回 User,失败返回 null
|
* @return 验证成功返回 User,失败返回 null
|
||||||
*/
|
*/
|
||||||
override fun login(loginDTO: UserLoginDTO): User? {
|
override fun login(loginDTO: UserLoginDto): User? {
|
||||||
val user = userMapper.selectOne(
|
val user = userMapper.selectOne(
|
||||||
QueryWrapper<User>()
|
QueryWrapper<User>()
|
||||||
.eq("username", loginDTO.username)
|
.eq("username", loginDTO.username)
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class DashBoardServiceImpl(
|
|||||||
return Result.success(bookJsonList)
|
return Result.success(bookJsonList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @TODO: 改成返回BorrowInfoDto
|
||||||
override fun getAllBorrowRecords(): Result<Any?> {
|
override fun getAllBorrowRecords(): Result<Any?> {
|
||||||
val borrowRecordList = borrowRecordMapper.selectList(null)
|
val borrowRecordList = borrowRecordMapper.selectList(null)
|
||||||
val borrowRecordJsonList = borrowRecordList.map { borrowRecord ->
|
val borrowRecordJsonList = borrowRecordList.map { borrowRecord ->
|
||||||
|
|||||||
Reference in New Issue
Block a user