From bc5d5b3d2e5d02dce585e60f7a3bdf0ebbc2f69d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E8=87=AA=E8=BE=BE?= <980324341@qq.com>
Date: Fri, 4 Sep 2026 10:21:24 +0800
Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E7=AE=A1=E7=90=86=E5=90=8E?=
=?UTF-8?q?=E5=8F=B0=E9=A1=B5=E9=9D=A2=E5=90=8C=E6=BA=90=E6=89=98=E7=AE=A1?=
=?UTF-8?q?=E5=88=B0=20Java(classpath:/static)=E5=B9=B6=E6=8E=A5=E5=85=A5?=
=?UTF-8?q?=20Java=20=E7=99=BB=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
把 Flask web_source/admin.html 与 static/* 拷入 backend-java resources/static,
经 Spring 默认静态映射同源服务于 api.aishufu.top:18080;/static 根相对引用通过
static/static 子目录镜像零改动保持。页面登录改直连 Java POST /login(cookie+
浏览器持久 deviceId),登出走 Java POST /logout。新增 AdminConsoleController:
GET /、/admin、/login、/logout 页面转发,及 /api/admin/current-user、
/current-user/menus(管理员角色,返回旧前端契约的 item/items 形状)。admin.js
增加全局 fetch 响应解包(ApiResponse data 展开且保留 data 键,401 跳登录)与
URL 兼容映射层(把 Flask 别名统一到 Java 规范路径)。
---
.../controller/AdminConsoleController.java | 88 +
.../src/main/resources/static/admin.html | 6579 +++++++++++++++
.../src/main/resources/static/login.html | 887 ++
.../static/static/admin-interactions.js | 333 +
.../src/main/resources/static/static/admin.js | 7145 +++++++++++++++++
.../src/main/resources/static/static/bg.jpg | Bin 0 -> 164259 bytes
.../src/main/resources/static/static/logo.jpg | Bin 0 -> 10772 bytes
.../resources/static/static/logo_thumb.png | Bin 0 -> 6360 bytes
8 files changed, 15032 insertions(+)
create mode 100644 backend-java/src/main/java/com/nanri/aiimage/modules/admin/controller/AdminConsoleController.java
create mode 100644 backend-java/src/main/resources/static/admin.html
create mode 100644 backend-java/src/main/resources/static/login.html
create mode 100644 backend-java/src/main/resources/static/static/admin-interactions.js
create mode 100644 backend-java/src/main/resources/static/static/admin.js
create mode 100644 backend-java/src/main/resources/static/static/bg.jpg
create mode 100644 backend-java/src/main/resources/static/static/logo.jpg
create mode 100644 backend-java/src/main/resources/static/static/logo_thumb.png
diff --git a/backend-java/src/main/java/com/nanri/aiimage/modules/admin/controller/AdminConsoleController.java b/backend-java/src/main/java/com/nanri/aiimage/modules/admin/controller/AdminConsoleController.java
new file mode 100644
index 00000000..b8e775f1
--- /dev/null
+++ b/backend-java/src/main/java/com/nanri/aiimage/modules/admin/controller/AdminConsoleController.java
@@ -0,0 +1,88 @@
+package com.nanri.aiimage.modules.admin.controller;
+
+import com.nanri.aiimage.common.api.ApiResponse;
+import com.nanri.aiimage.modules.admin.support.AdminAuthSupport;
+import com.nanri.aiimage.modules.permission.model.entity.AdminUserEntity;
+import com.nanri.aiimage.modules.permission.model.vo.PermissionMenuItemVo;
+import com.nanri.aiimage.modules.permission.service.PermissionMenuService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 管理后台页面与"当前管理员"自描述接口(Java 收敛自 Flask 侧 web_source/admin.html 的依赖)。
+ *
+ *
页面经静态资源托管于同源(classpath:/static 下的 admin.html / login.html),
+ * 登录/登出沿用 auth 模块(POST /login、POST /logout)。这里提供 GET 页面转发与
+ * /api/admin/current-user、/current-user/menus,保持与旧前端契约一致({item}、{items})。
+ */
+@RestController
+@RequiredArgsConstructor
+@Tag(name = "管理后台页面", description = "管理后台静态页路由与当前管理员信息")
+public class AdminConsoleController {
+
+ private final AdminAuthSupport adminAuthSupport;
+ private final PermissionMenuService permissionMenuService;
+
+ @GetMapping("/")
+ @Operation(summary = "根路径跳管理后台", hidden = true)
+ public String root() {
+ return "redirect:/admin.html";
+ }
+
+ @GetMapping("/admin")
+ @Operation(summary = "管理后台入口", hidden = true)
+ public String adminPage() {
+ return "redirect:/admin.html";
+ }
+
+ @GetMapping("/login")
+ @Operation(summary = "登录页入口", hidden = true)
+ public String loginPage() {
+ return "forward:/login.html";
+ }
+
+ @GetMapping("/logout")
+ @Operation(summary = "登出 GET 兜底(POST 走 auth 模块)", hidden = true)
+ public String logoutPage() {
+ return "redirect:/login.html";
+ }
+
+ @GetMapping("/api/admin/current-user")
+ @Operation(summary = "当前登录管理员概要")
+ public ApiResponse