This commit is contained in:
Zzzz
2026-04-28 10:53:09 +08:00
parent 5dc91a4e8e
commit ff044e6aab
58 changed files with 793 additions and 635 deletions
@@ -44,7 +44,7 @@ public class BookManagementServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getServletPath();
if ("/books/new".equals(path)) {
renderForm(request, response, "Create book", "/books", new Book(), Collections.emptyMap(),
renderForm(request, response, "创建图书", "/books", new Book(), Collections.emptyMap(),
Collections.emptyMap(), null);
return;
}
@@ -57,7 +57,7 @@ public class BookManagementServlet extends HttpServlet {
return;
}
if ("/book-categories/new".equals(path)) {
renderCategoryForm(request, response, "Create category", "/book-categories", new BookCategory(),
renderCategoryForm(request, response, "创建分类", "/book-categories", new BookCategory(),
Collections.emptyMap(), Collections.emptyMap(), null);
return;
}
@@ -134,12 +134,12 @@ public class BookManagementServlet extends HttpServlet {
long id = requiredLong(request.getParameter("id"), -1L);
ServiceResult<Optional<Book>> result = bookService.findBook(id);
if (!result.isSuccessful() || !result.getData().isPresent()) {
flashError(request, result.isSuccessful() ? "Book was not found." : result.getMessage());
flashError(request, result.isSuccessful() ? "未找到图书。" : result.getMessage());
response.sendRedirect(request.getContextPath() + "/books");
return;
}
renderForm(request, response, "Edit book", "/books/update", result.getData().get(),
renderForm(request, response, "编辑图书", "/books/update", result.getData().get(),
Collections.emptyMap(), Collections.emptyMap(), null);
}
@@ -160,26 +160,26 @@ public class BookManagementServlet extends HttpServlet {
long id = requiredLong(request.getParameter("id"), -1L);
ServiceResult<Optional<BookCategory>> result = bookService.findCategory(id);
if (!result.isSuccessful() || !result.getData().isPresent()) {
flashError(request, result.isSuccessful() ? "Category was not found." : result.getMessage());
flashError(request, result.isSuccessful() ? "未找到分类。" : result.getMessage());
response.sendRedirect(request.getContextPath() + "/book-categories");
return;
}
renderCategoryForm(request, response, "Edit category", "/book-categories/update", result.getData().get(),
renderCategoryForm(request, response, "编辑分类", "/book-categories/update", result.getData().get(),
Collections.emptyMap(), Collections.emptyMap(), null);
}
private void createBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BookForm form = readBookForm(request, false);
if (!form.getErrors().isEmpty()) {
renderForm(request, response, "Create book", "/books", form.getBook(), form.getValues(),
form.getErrors(), "Please correct the highlighted book fields.");
renderForm(request, response, "创建图书", "/books", form.getBook(), form.getValues(),
form.getErrors(), "请修正高亮的图书字段。");
return;
}
ServiceResult<Long> result = bookService.createBook(currentUser(request), form.getBook());
if (!result.isSuccessful()) {
handleFormFailure(request, response, "Create book", "/books", form, result);
handleFormFailure(request, response, "创建图书", "/books", form, result);
return;
}
@@ -190,14 +190,14 @@ public class BookManagementServlet extends HttpServlet {
private void updateBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BookForm form = readBookForm(request, true);
if (!form.getErrors().isEmpty()) {
renderForm(request, response, "Edit book", "/books/update", form.getBook(), form.getValues(),
form.getErrors(), "Please correct the highlighted book fields.");
renderForm(request, response, "编辑图书", "/books/update", form.getBook(), form.getValues(),
form.getErrors(), "请修正高亮的图书字段。");
return;
}
ServiceResult<Void> result = bookService.updateBook(currentUser(request), form.getBook());
if (!result.isSuccessful()) {
handleFormFailure(request, response, "Edit book", "/books/update", form, result);
handleFormFailure(request, response, "编辑图书", "/books/update", form, result);
return;
}
@@ -224,14 +224,14 @@ public class BookManagementServlet extends HttpServlet {
throws ServletException, IOException {
CategoryForm form = readCategoryForm(request, false);
if (!form.getErrors().isEmpty()) {
renderCategoryForm(request, response, "Create category", "/book-categories", form.getCategory(),
form.getValues(), form.getErrors(), "Please correct the highlighted category fields.");
renderCategoryForm(request, response, "创建分类", "/book-categories", form.getCategory(),
form.getValues(), form.getErrors(), "请修正高亮的分类字段。");
return;
}
ServiceResult<Long> result = bookService.createCategory(currentUser(request), form.getCategory());
if (!result.isSuccessful()) {
handleCategoryFormFailure(request, response, "Create category", "/book-categories", form, result);
handleCategoryFormFailure(request, response, "创建分类", "/book-categories", form, result);
return;
}
@@ -243,14 +243,14 @@ public class BookManagementServlet extends HttpServlet {
throws ServletException, IOException {
CategoryForm form = readCategoryForm(request, true);
if (!form.getErrors().isEmpty()) {
renderCategoryForm(request, response, "Edit category", "/book-categories/update", form.getCategory(),
form.getValues(), form.getErrors(), "Please correct the highlighted category fields.");
renderCategoryForm(request, response, "编辑分类", "/book-categories/update", form.getCategory(),
form.getValues(), form.getErrors(), "请修正高亮的分类字段。");
return;
}
ServiceResult<Void> result = bookService.updateCategory(currentUser(request), form.getCategory());
if (!result.isSuccessful()) {
handleCategoryFormFailure(request, response, "Edit category", "/book-categories/update", form, result);
handleCategoryFormFailure(request, response, "编辑分类", "/book-categories/update", form, result);
return;
}
@@ -338,20 +338,20 @@ public class BookManagementServlet extends HttpServlet {
Book book = new Book();
if (requireId) {
book.setId(parseLong(values.get("id"), "id", "Select a valid book.", errors));
book.setId(parseLong(values.get("id"), "id", "请选择有效的图书。", errors));
}
book.setIdentifier(values.get("identifier"));
book.setTitle(values.get("title"));
book.setAuthor(values.get("author"));
book.setCategoryId(parseLong(values.get("categoryId"), "categoryId", "Select a category.", errors));
book.setTotalCopies(parseInt(values.get("totalCopies"), "totalCopies", "Enter a valid total copy count.", errors));
book.setCategoryId(parseLong(values.get("categoryId"), "categoryId", "请选择分类。", errors));
book.setTotalCopies(parseInt(values.get("totalCopies"), "totalCopies", "请输入有效的馆藏总数。", errors));
book.setAvailableCopies(parseInt(values.get("availableCopies"), "availableCopies",
"Enter a valid available copy count.", errors));
"请输入有效的可借数量。", errors));
try {
book.setStatus(BookStatus.fromCode(values.get("status")));
} catch (IllegalArgumentException ex) {
errors.put("status", "Select a status.");
errors.put("status", "请选择状态。");
}
return new BookForm(book, values, errors);
@@ -376,7 +376,7 @@ public class BookManagementServlet extends HttpServlet {
BookCategory category = new BookCategory();
if (requireId) {
category.setId(parseLong(values.get("id"), "id", "Select a valid category.", errors));
category.setId(parseLong(values.get("id"), "id", "请选择有效的分类。", errors));
}
category.setName(values.get("name"));
category.setDescription(values.get("description"));
@@ -454,7 +454,7 @@ public class BookManagementServlet extends HttpServlet {
}
private boolean isPermissionDenied(ServiceResult<?> result) {
return !result.isSuccessful() && "You do not have permission to manage books.".equals(result.getMessage());
return !result.isSuccessful() && "您无权管理图书。".equals(result.getMessage());
}
private void forwardDenied(HttpServletRequest request, HttpServletResponse response, String message)
@@ -115,7 +115,7 @@ public class BorrowingManagementServlet extends HttpServlet {
throws IOException, ServletException {
long id = requiredLong(request.getParameter("id"), -1L);
ServiceResult<Void> result = id <= 0
? ServiceResult.failure("Select a valid borrowing record.")
? ServiceResult.failure("请选择有效的借阅记录。")
: borrowingService.returnBook(currentUser(request), id);
redirectWithResult(request, response, result);
}
@@ -124,7 +124,7 @@ public class BorrowingManagementServlet extends HttpServlet {
throws IOException, ServletException {
long id = requiredLong(request.getParameter("id"), -1L);
ServiceResult<Void> result = id <= 0
? ServiceResult.failure("Select a valid borrowing record.")
? ServiceResult.failure("请选择有效的借阅记录。")
: borrowingService.renewLoan(currentUser(request), id);
redirectWithResult(request, response, result);
}
@@ -185,12 +185,12 @@ public class BorrowingManagementServlet extends HttpServlet {
if (result.hasErrors()) {
return result.getErrors().values().iterator().next();
}
return "Borrowing action failed.";
return "借阅操作失败。";
}
private boolean isPermissionDenied(ServiceResult<?> result) {
return !result.isSuccessful()
&& "You do not have permission to manage borrowing.".equals(result.getMessage());
&& "您无权管理借阅。".equals(result.getMessage());
}
private void forwardDenied(HttpServletRequest request, HttpServletResponse response, String message)
@@ -20,7 +20,7 @@ import javax.servlet.http.HttpSession;
public class ReaderLoanHistoryServlet extends HttpServlet {
private static final String HISTORY_JSP = "/WEB-INF/jsp/reader/loans.jsp";
private static final String UNAUTHORIZED_JSP = "/WEB-INF/jsp/auth/unauthorized.jsp";
private static final String HISTORY_DENIED_MESSAGE = "You do not have permission to view loan history.";
private static final String HISTORY_DENIED_MESSAGE = "您无权查看借阅历史。";
private BorrowingServiceImpl borrowingService;
@@ -41,7 +41,7 @@ public class ReaderManagementServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getServletPath();
if ("/readers/new".equals(path)) {
renderForm(request, response, "Create reader", "/readers", defaultReader(), Collections.emptyMap(),
renderForm(request, response, "创建读者", "/readers", defaultReader(), Collections.emptyMap(),
Collections.emptyMap(), null);
return;
}
@@ -99,12 +99,12 @@ public class ReaderManagementServlet extends HttpServlet {
long id = requiredLong(request.getParameter("id"), -1L);
ServiceResult<Optional<Reader>> result = readerService.findReader(id);
if (!result.isSuccessful() || !result.getData().isPresent()) {
flashError(request, result.isSuccessful() ? "Reader profile was not found." : result.getMessage());
flashError(request, result.isSuccessful() ? "未找到读者档案。" : result.getMessage());
response.sendRedirect(request.getContextPath() + "/readers");
return;
}
renderForm(request, response, "Edit reader", "/readers/update", result.getData().get(),
renderForm(request, response, "编辑读者", "/readers/update", result.getData().get(),
Collections.emptyMap(), Collections.emptyMap(), null);
}
@@ -112,14 +112,14 @@ public class ReaderManagementServlet extends HttpServlet {
throws ServletException, IOException {
ReaderForm form = readReaderForm(request, false);
if (!form.getErrors().isEmpty()) {
renderForm(request, response, "Create reader", "/readers", form.getReader(), form.getValues(),
form.getErrors(), "Please correct the highlighted reader fields.");
renderForm(request, response, "创建读者", "/readers", form.getReader(), form.getValues(),
form.getErrors(), "请修正高亮的读者字段。");
return;
}
ServiceResult<Long> result = readerService.createReader(currentUser(request), form.getReader());
if (!result.isSuccessful()) {
handleFormFailure(request, response, "Create reader", "/readers", form, result);
handleFormFailure(request, response, "创建读者", "/readers", form, result);
return;
}
@@ -131,14 +131,14 @@ public class ReaderManagementServlet extends HttpServlet {
throws ServletException, IOException {
ReaderForm form = readReaderForm(request, true);
if (!form.getErrors().isEmpty()) {
renderForm(request, response, "Edit reader", "/readers/update", form.getReader(), form.getValues(),
form.getErrors(), "Please correct the highlighted reader fields.");
renderForm(request, response, "编辑读者", "/readers/update", form.getReader(), form.getValues(),
form.getErrors(), "请修正高亮的读者字段。");
return;
}
ServiceResult<Void> result = readerService.updateReader(currentUser(request), form.getReader());
if (!result.isSuccessful()) {
handleFormFailure(request, response, "Edit reader", "/readers/update", form, result);
handleFormFailure(request, response, "编辑读者", "/readers/update", form, result);
return;
}
@@ -195,21 +195,21 @@ public class ReaderManagementServlet extends HttpServlet {
Reader reader = new Reader();
if (requireId) {
reader.setId(parseLong(values.get("id"), "id", "Select a valid reader.", errors));
reader.setId(parseLong(values.get("id"), "id", "请选择有效的读者。", errors));
}
reader.setIdentifier(values.get("identifier"));
reader.setUserId(optionalPositiveLong(values.get("userId"), "userId",
"Enter a valid linked account ID.", errors));
"请输入有效的关联账户 ID", errors));
reader.setFullName(values.get("fullName"));
reader.setPhone(values.get("phone"));
reader.setEmail(values.get("email"));
reader.setMaxBorrowCount(parseInt(values.get("maxBorrowCount"), "maxBorrowCount",
"Enter a valid max borrow count.", errors));
"请输入有效的最大借阅数量。", errors));
try {
reader.setStatus(ReaderStatus.fromCode(values.get("status")));
} catch (IllegalArgumentException ex) {
errors.put("status", "Select a status.");
errors.put("status", "请选择状态。");
}
return new ReaderForm(reader, values, errors);
@@ -304,7 +304,7 @@ public class ReaderManagementServlet extends HttpServlet {
}
private boolean isPermissionDenied(ServiceResult<?> result) {
return !result.isSuccessful() && "You do not have permission to manage readers.".equals(result.getMessage());
return !result.isSuccessful() && "您无权管理读者。".equals(result.getMessage());
}
private void forwardDenied(HttpServletRequest request, HttpServletResponse response, String message)
@@ -46,7 +46,7 @@ public class ReportServlet extends HttpServlet {
private boolean isPermissionDenied(ServiceResult<?> result) {
return !result.isSuccessful()
&& "You do not have permission to view reports.".equals(result.getMessage());
&& "您无权查看报表。".equals(result.getMessage());
}
private void forwardDenied(HttpServletRequest request, HttpServletResponse response, String message)
@@ -14,14 +14,14 @@ public class RoleAreaServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String servletPath = request.getServletPath();
if (servletPath.startsWith("/admin")) {
request.setAttribute("areaName", "Administration");
request.setAttribute("areaSummary", "Account, role, permission, and system-maintenance entry point.");
request.setAttribute("areaName", "系统管理");
request.setAttribute("areaSummary", "账户、角色、权限和系统维护入口。");
} else if (servletPath.startsWith("/librarian")) {
request.setAttribute("areaName", "Librarian Workspace");
request.setAttribute("areaSummary", "Book, reader, borrowing, return, renewal, and overdue entry point.");
request.setAttribute("areaName", "馆员工作台");
request.setAttribute("areaSummary", "图书、读者、借阅、归还、续借和逾期处理入口。");
} else {
request.setAttribute("areaName", "Reader Center");
request.setAttribute("areaSummary", "Catalog search and reader self-service entry point.");
request.setAttribute("areaName", "读者中心");
request.setAttribute("areaSummary", "馆藏检索和读者自助服务入口。");
}
request.getRequestDispatcher(ROLE_HOME_JSP).forward(request, response);
@@ -21,7 +21,7 @@ import javax.servlet.http.HttpSession;
public class SystemLogServlet extends HttpServlet {
private static final String LOGS_JSP = "/WEB-INF/jsp/maintenance/system-logs.jsp";
private static final String UNAUTHORIZED_JSP = "/WEB-INF/jsp/auth/unauthorized.jsp";
private static final String DENIED_MESSAGE = "You do not have permission to view system logs.";
private static final String DENIED_MESSAGE = "您无权查看系统日志。";
private SystemLogService systemLogService;
@@ -30,7 +30,7 @@ public class UserManagementServlet extends HttpServlet {
private static final String UNAUTHORIZED_JSP = "/WEB-INF/jsp/auth/unauthorized.jsp";
private static final String FLASH_SUCCESS = "flashSuccess";
private static final String FLASH_ERROR = "flashError";
private static final String DENIED_MESSAGE = "You do not have permission to manage users.";
private static final String DENIED_MESSAGE = "您无权管理用户。";
private UserAccountService userAccountService;
@@ -44,7 +44,7 @@ public class UserManagementServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getServletPath();
if ("/admin/users/new".equals(path)) {
renderForm(request, response, "Create user account", "/admin/users", defaultUser(),
renderForm(request, response, "创建用户账户", "/admin/users", defaultUser(),
Collections.emptyMap(), Collections.emptyMap(), null);
return;
}
@@ -108,12 +108,12 @@ public class UserManagementServlet extends HttpServlet {
return;
}
if (!result.isSuccessful() || !result.getData().isPresent()) {
flashError(request, result.isSuccessful() ? "User account was not found." : result.getMessage());
flashError(request, result.isSuccessful() ? "未找到用户账户。" : result.getMessage());
response.sendRedirect(request.getContextPath() + "/admin/users");
return;
}
renderForm(request, response, "Edit user account", "/admin/users/update", result.getData().get(),
renderForm(request, response, "编辑用户账户", "/admin/users/update", result.getData().get(),
Collections.emptyMap(), Collections.emptyMap(), null);
}
@@ -121,15 +121,15 @@ public class UserManagementServlet extends HttpServlet {
throws ServletException, IOException {
UserForm form = readUserForm(request, false);
if (!form.getErrors().isEmpty()) {
renderForm(request, response, "Create user account", "/admin/users", form.getUser(), form.getValues(),
form.getErrors(), "Please correct the highlighted account fields.");
renderForm(request, response, "创建用户账户", "/admin/users", form.getUser(), form.getValues(),
form.getErrors(), "请修正高亮的账户字段。");
return;
}
ServiceResult<Long> result = userAccountService.createUser(currentUser(request), form.getUser(),
form.getPassword(), clientIp(request));
if (!result.isSuccessful()) {
handleFormFailure(request, response, "Create user account", "/admin/users", form, result);
handleFormFailure(request, response, "创建用户账户", "/admin/users", form, result);
return;
}
@@ -141,15 +141,15 @@ public class UserManagementServlet extends HttpServlet {
throws ServletException, IOException {
UserForm form = readUserForm(request, true);
if (!form.getErrors().isEmpty()) {
renderForm(request, response, "Edit user account", "/admin/users/update", form.getUser(), form.getValues(),
form.getErrors(), "Please correct the highlighted account fields.");
renderForm(request, response, "编辑用户账户", "/admin/users/update", form.getUser(), form.getValues(),
form.getErrors(), "请修正高亮的账户字段。");
return;
}
ServiceResult<Void> result = userAccountService.updateUser(currentUser(request), form.getUser(),
form.getPassword(), clientIp(request));
if (!result.isSuccessful()) {
handleFormFailure(request, response, "Edit user account", "/admin/users/update", form, result);
handleFormFailure(request, response, "编辑用户账户", "/admin/users/update", form, result);
return;
}
@@ -206,7 +206,7 @@ public class UserManagementServlet extends HttpServlet {
User user = new User();
if (requireId) {
user.setId(parseLong(values.get("id"), "id", "Select a valid user account.", errors));
user.setId(parseLong(values.get("id"), "id", "请选择有效的用户账户。", errors));
}
user.setUsername(values.get("username"));
user.setDisplayName(values.get("displayName"));
@@ -214,7 +214,7 @@ public class UserManagementServlet extends HttpServlet {
try {
user.setRole(Role.fromCode(values.get("role")));
} catch (IllegalArgumentException ex) {
errors.put("role", "Select a role.");
errors.put("role", "请选择角色。");
}
return new UserForm(user, values, errors, request.getParameter("password"));
@@ -253,7 +253,7 @@ public class UserManagementServlet extends HttpServlet {
if ("false".equals(normalized) || UserSearchCriteria.INACTIVE_STATUS.equals(normalized)) {
return false;
}
errors.put("active", "Select an active state.");
errors.put("active", "请选择启用状态。");
return false;
}