# backend **Repository Path**: maple_8/backend ## Basic Information - **Project Name**: backend - **Description**: 后端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-25 - **Last Updated**: 2026-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # backend #### 介绍 后端 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 数据库说明 1. 后端默认使用 MySQL(`spring.profiles.active=mysql`)。 2. MySQL 连接配置见 `src/main/resources/application-mysql.yml`。 3. 支持通过环境变量覆盖数据源:`MYSQL_URL`、`MYSQL_USER`、`MYSQL_PASSWORD`。 4. 如需临时切回 H2,请显式指定 `dev` profile 启动。 #### 本地联调注意事项 1. 前端开发端口默认是 `3000`(见 frontend/vite.config.ts),后端需要将 `http://localhost:3000` 和 `http://127.0.0.1:3000` 加入 CORS 白名单。 2. 若前端改为 `5173`,也需要对应加入后端 CORS 白名单。 3. 若出现 `PUT /api/permission/* 403`,优先检查后端 SecurityConfig 的 allowedOrigins 是否包含当前前端端口。 #### 2026-03-25 接口补全 1. 新增接口:`GET /api/publisher/list`(出版社列表)。 2. 新增接口:`GET /api/admin/users`、`GET /api/admin/logs`(用户管理与操作日志)。 3. 新增接口:`GET /api/inventory/flows`(库存流水)。 4. 新增接口:`GET /api/system/settings`、`PUT /api/system/settings`(系统参数查询与保存)。 5. 上述新接口已接入会话鉴权拦截链,遵循现有路由鉴权流程。 #### 2026-03-25 演示数据策略调整 1. `ConsoleDataService` 不再注入出版社/操作日志/库存流水示例数据,默认初始化为空列表。 2. 若 MySQL 中已存在历史示例数据,可执行: `UPDATE permission_kv SET biz_value='[]' WHERE biz_key IN ('console.publishers','console.inventoryFlows','console.operationLogs');` 3. 保留系统参数 `console.systemSettings` 作为配置项,不属于演示业务数据。 #### 2026-04-08 角色与权限快照修复 1. `sys_user` 新增 `role_id` 字段(JPA `ddl-auto=update` 自动补齐),用于存储账号主角色,默认值为 `admin`。 2. `POST /api/auth/login`、`POST /api/auth/register`、`GET /api/auth/me` 返回的用户信息已包含 `roleId`。 3. `GET /api/permission/snapshot` 的 `currentRoleId` 改为优先取当前登录用户的 `role_id`,不再依赖全局持久化角色。 4. `PUT /api/permission/current-role` 仅保留会话内临时语义,不再落库为全局角色状态。 #### 2026-04-08 用户管理字段与编辑能力修复 1. `GET /api/admin/users` 用户列表字段改为返回 `email`,不再返回虚拟手机号。 2. 新增接口 `POST /api/admin/users`,支持创建用户(用户名、邮箱、初始密码、角色 `roleId`)。 3. 新增接口 `PUT /api/admin/users/{id}`,支持更新用户名、邮箱、角色(`roleId`)。 4. 新增接口 `PUT /api/admin/users/{id}/password`,支持重置用户密码。 5. `POST /api/admin/users`、`PUT /api/admin/users/{id}`、`PUT /api/admin/users/{id}/password` 均受 `@RequireOperation("用户管理")` 保护,仅具备该操作权限的角色可编辑用户信息。 6. 安全策略补充:若目标账号为超级管理员(`roleId=admin`),仅允许该账号本人执行编辑与重置密码,其他账号请求将返回 `0403`。 #### 联调差异说明 1. 前端预览模式是纯只读,不应触发任何角色权限持久化接口。 2. 若发现角色显示不一致,优先核对 `sys_user.role_id` 与 `/api/auth/me` 中 `roleId` 是否一致。 #### MySQL 启动排障 1. 若启动报 `Unknown database 'demo1001'`,请先在 MySQL 中创建库:`CREATE DATABASE demo1001;`。 2. 若启动报 `Data too long for column 'biz_value'`,请确认 `permission_kv.biz_value` 为 `LONGTEXT`。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)