完整功能说明.md 9.4 KB

后台管理系统完整功能说明

功能概述

后台管理系统用于管理小程序中的书籍数据,实现了完整的书籍管理功能,包括:

  1. 管理员登录 - 只有管理员可以登录后台管理系统
  2. 书籍管理 - 书籍的增删改查
  3. 书籍状态管理 - 上架/下架操作
  4. 批量操作 - 批量删除、批量上架、批量下架

后端实现

1. 数据库设计

用户表添加role字段

users 表中添加 role 字段,用于区分管理员和普通用户:

ALTER TABLE `users` 
ADD COLUMN `role` VARCHAR(20) DEFAULT 'user' COMMENT '用户角色:admin-管理员,user-普通用户' AFTER `status`,
ADD INDEX `idx_role` (`role`);

创建默认管理员账号

INSERT INTO `users` (`username`, `nickname`, `password`, `role`, `status`, `created_at`, `updated_at`)
SELECT 'admin', '管理员', '0192023a7bbd73250516f069df18b500', 'admin', 1, NOW(), NOW()
WHERE NOT EXISTS (SELECT 1 FROM `users` WHERE `username` = 'admin');

默认管理员账号:

  • 用户名:admin
  • 密码:admin123(MD5加密后:0192023a7bbd73250516f069df18b500

2. 实体类

User.java

  • 添加 role 字段(String类型)
  • 用于区分管理员和普通用户

Book.java

  • 包含书籍的所有字段
  • 支持状态管理(status:0-下架,1-上架)

3. DTO和VO

AdminLoginDTO.java

  • 管理员登录DTO
  • 包含用户名和密码

AdminLoginVO.java

  • 管理员登录VO
  • 包含用户信息和token

BookManageDTO.java

  • 书籍管理DTO
  • 包含书籍的所有可编辑字段

AdminBookVO.java

  • 后台管理书籍VO
  • 包含书籍的所有信息,包括分类名称

4. 服务层

AdminService.java

  • 管理员登录服务
  • 验证用户名和密码
  • 检查用户角色(只有admin可以登录)
  • 检查用户状态
  • 返回token

AdminBookService.java

  • 书籍管理服务
  • 分页查询书籍(支持关键词、分类、状态筛选)
  • 根据ID查询书籍
  • 创建书籍
  • 更新书籍
  • 删除书籍(单个/批量)
  • 上架书籍(单个/批量)
  • 下架书籍(单个/批量)

5. 控制器

AdminController.java

  • 管理员登录接口
  • POST /api/admin/login - 管理员登录

AdminBookController.java

  • 书籍管理接口
  • GET /api/admin/book/list - 分页查询书籍
  • GET /api/admin/book/{id} - 根据ID查询书籍
  • POST /api/admin/book - 创建书籍
  • PUT /api/admin/book/{id} - 更新书籍
  • DELETE /api/admin/book/{id} - 删除书籍
  • DELETE /api/admin/book/batch - 批量删除书籍
  • PUT /api/admin/book/{id}/publish - 上架书籍
  • PUT /api/admin/book/{id}/unpublish - 下架书籍
  • PUT /api/admin/book/batch/publish - 批量上架书籍
  • PUT /api/admin/book/batch/unpublish - 批量下架书籍

6. 权限控制

AdminInterceptor.java

  • 管理员权限拦截器
  • 拦截所有 /api/admin/** 路径的请求
  • 排除登录接口 /api/admin/login
  • 验证请求头中的token
  • 如果token无效,返回401未授权错误

AdminWebConfig.java

  • Web配置类
  • 注册拦截器
  • 配置拦截路径和排除路径

前端实现

1. API接口

api.js

  • 统一请求方法
  • 管理员登录API
  • 书籍管理API(增删改查、上架下架、批量操作)
  • 分类查询API

2. 登录页面

login.html

  • 管理员登录表单
  • 用户名和密码验证
  • 登录成功后保存token到localStorage
  • 跳转到书籍管理页面
  • 错误提示和加载状态

3. 书籍管理页面

books.html

  • 书籍列表展示
  • 搜索和筛选功能(关键词、状态、分类)
  • 分页功能
  • 添加书籍(模态框)
  • 编辑书籍(模态框)
  • 删除书籍(单个/批量)
  • 上架/下架书籍(单个/批量)
  • 退出登录

功能特性

1. 管理员登录

登录权限

  • 只有 roleadmin 的用户可以登录
  • 普通用户(roleuser)不能登录后台管理系统
  • 登录时会验证用户角色和状态

Token管理

  • Token保存在localStorage中
  • Token格式:admin_token_{userId}
  • 所有后台管理接口都需要在请求头中携带token

2. 书籍管理

查询功能

  • 支持按书名、作者搜索
  • 支持按状态筛选(上架/下架)
  • 支持按分类筛选
  • 支持分页查询
  • 支持查看所有状态的书籍(后台管理)

添加书籍

  • 填写书籍信息(书名、作者、封面、简介等)
  • 设置书籍价格、是否免费、是否VIP
  • 选择分类
  • 设置书籍状态(上架/下架)
  • 参数验证

编辑书籍

  • 修改书籍信息
  • 保留原有的统计信息(浏览次数、点赞数、阅读次数)
  • 参数验证

删除书籍

  • 单个删除:点击"删除"按钮,确认后删除
  • 批量删除:选中多个书籍后点击"批量删除",确认后删除

上架/下架

  • 单个操作:点击"上架"或"下架"按钮
  • 批量操作:选中多个书籍后点击"批量上架"或"批量下架"
  • 状态更新后自动刷新列表

3. 权限控制

接口权限

  • 所有 /api/admin/** 接口都需要token
  • 登录接口 /api/admin/login 不需要token
  • 如果token无效,返回401未授权错误

前端权限

  • 登录页面会检查是否已登录,如果已登录会跳转到书籍管理页面
  • 书籍管理页面会检查token,如果token不存在会跳转到登录页面

使用步骤

1. 数据库初始化

mysql -u root -p books_db < book/src/main/resources/db/admin_schema.sql

2. 启动后端服务

cd book
mvn spring-boot:run

3. 启动前端开发服务器

cd book-admin
npm install  # 首次使用需要安装依赖
npm run dev  # 启动开发服务器

4. 登录

  • 用户名:admin
  • 密码:admin123

5. 管理书籍

  • 查看书籍列表
  • 搜索和筛选书籍
  • 添加新书籍
  • 编辑现有书籍
  • 删除书籍
  • 上架/下架书籍
  • 批量操作

API接口详细说明

管理员登录

POST /api/admin/login

请求体:

{
  "username": "admin",
  "password": "admin123"
}

响应:

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "id": 1,
    "username": "admin",
    "nickname": "管理员",
    "role": "admin",
    "token": "admin_token_1"
  }
}

分页查询书籍

GET /api/admin/book/list?page=1&size=10&keyword=&status=1&categoryId=

参数:

  • page - 页码(默认:1)
  • size - 每页数量(默认:10)
  • keyword - 关键词(可选,搜索书名、作者)
  • status - 状态(可选,0-下架,1-上架)
  • categoryId - 分类ID(可选)

响应:

{
  "code": 200,
  "message": "成功",
  "data": {
    "list": [...],
    "total": 100,
    "page": 1,
    "size": 10
  }
}

创建书籍

POST /api/admin/book

请求头:

Authorization: admin_token_1

请求体:

{
  "title": "书名",
  "author": "作者",
  "cover": "封面URL",
  "image": "图片URL",
  "brief": "简介",
  "desc": "描述",
  "introduction": "详细介绍",
  "price": 0.00,
  "isFree": false,
  "isVip": false,
  "categoryId": 1,
  "status": 1
}

更新书籍

PUT /api/admin/book/{id}

请求头和请求体同创建书籍。

删除书籍

DELETE /api/admin/book/{id}

请求头:

Authorization: admin_token_1

上架书籍

PUT /api/admin/book/{id}/publish

请求头:

Authorization: admin_token_1

下架书籍

PUT /api/admin/book/{id}/unpublish

请求头:

Authorization: admin_token_1

数据库表结构

users表

  • id - 用户ID
  • username - 用户名
  • password - 密码(MD5加密)
  • role - 用户角色(admin-管理员,user-普通用户)
  • status - 状态(0-禁用,1-启用)
  • 其他字段...

books表

  • id - 书籍ID
  • title - 书名
  • author - 作者
  • cover - 封面URL
  • image - 图片URL
  • brief - 简介
  • desc - 描述
  • introduction - 详细介绍
  • price - 价格
  • is_free - 是否免费
  • is_vip - 是否VIP
  • category_id - 分类ID
  • status - 状态(0-下架,1-上架)
  • view_count - 浏览次数
  • like_count - 点赞数
  • read_count - 阅读次数
  • created_at - 创建时间
  • updated_at - 更新时间

注意事项

  1. 密码加密:系统使用MD5加密密码,默认管理员密码 admin123 的MD5值为 0192023a7bbd73250516f069df18b500
  2. Token管理:当前使用的是模拟token(admin_token_{userId}),生产环境建议使用JWT Token
  3. CORS配置:后端已配置CORS,允许跨域请求
  4. API地址:前端API地址配置在 utils/api.js 中,默认是 http://localhost:8081
  5. Vue.js版本:前端使用Vue.js 3,通过CDN引入
  6. 权限验证:权限拦截器会验证token,如果token无效会返回401错误

后续优化建议

  1. JWT Token:使用JWT Token替代模拟token
  2. Token过期:添加token过期时间管理
  3. 操作日志:记录管理员操作日志
  4. 数据统计:添加数据统计功能(书籍数量、用户数量等)
  5. 用户管理:添加用户管理功能
  6. 分类管理:添加分类管理功能
  7. 图片上传:添加图片上传功能
  8. 数据导出:添加数据导出功能(Excel、CSV等)
  9. 权限细化:细化权限管理(不同管理员有不同的权限)
  10. 操作确认:添加操作确认对话框,防止误操作