BorrowRecordController.java
package org.darkroomlibrary.controller;
import org.darkroomlibrary.aop.NormalizePageQuery;
import org.darkroomlibrary.aop.RequireRole;
import org.darkroomlibrary.domain.type.UserRole;
import org.darkroomlibrary.web.response.ApiResponse;
import org.darkroomlibrary.web.dto.query.BorrowRecordPageQuery;
import org.darkroomlibrary.web.view.BorrowRecordView;
import org.darkroomlibrary.service.BorrowRecordService;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import java.util.List;
/**
* 借阅记录控制器
*/
@RestController
@RequestMapping("/borrowRecord")
public class BorrowRecordController {
@Resource
private BorrowRecordService borrowRecordService;
/**
* 读者借书
*
* @param bookId 图书ID
* @return ApiResponse<Void>
*/
@RequireRole(UserRole.READER)
@PostMapping("/borrow/{bookId}")
public ApiResponse<Void> borrow(@PathVariable Integer bookId) {
return borrowRecordService.borrow(bookId);
}
/**
* 读者归还本人借阅,管理员可代还
*
* @param recordId 记录ID
* @return ApiResponse<Void>
*/
@RequireRole({UserRole.READER, UserRole.ADMIN})
@PostMapping("/return/{recordId}")
public ApiResponse<Void> returnBook(@PathVariable Integer recordId) {
return borrowRecordService.returnBook(recordId);
}
/**
* 读者续借
*
* @param recordId 记录ID
* @return ApiResponse<Void>
*/
@RequireRole(UserRole.READER)
@PostMapping("/renew/{recordId}")
public ApiResponse<Void> renew(@PathVariable Integer recordId) {
return borrowRecordService.renew(recordId);
}
/**
* 分页查询借阅记录
*
* @param dto 查询参数
* @return ApiResponse<List<BorrowRecordView>>
*/
@NormalizePageQuery
@RequireRole({UserRole.READER, UserRole.ADMIN})
@PostMapping("/query")
public ApiResponse<List<BorrowRecordView>> query(@RequestBody BorrowRecordPageQuery dto) {
return borrowRecordService.query(dto);
}
}