# ai_coding **Repository Path**: shaoyn/ai_coding ## Basic Information - **Project Name**: ai_coding - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-11 - **Last Updated**: 2026-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ai_coding 基于 Spring Boot 的 Web 基础项目,集成 MyBatis-Plus、Sa-Token 认证框架和 Redis 缓存,提供用户登录及认证鉴权的完整范例。 ## 技术栈 | 类别 | 技术 | 版本 | | -------- | -------------------------------------- | -------- | | 基础框架 | Spring Boot | 2.7.18 | | JDK | OpenJDK | 8 / 21 | | ORM | MyBatis-Plus | 3.5.5 | | 认证 | Sa-Token | 1.37.0 | | 数据库 | MySQL | 8.0 | | 缓存 | Redis (Lettuce 连接池) | 6.0+ | | 前端 | Thymeleaf + HTML + CSS + Vanilla JS | — | | 安全 | BCrypt(Spring Security Crypto) | — | | 构建工具 | Maven | 3.9+ | ## 项目结构 ``` src/main/java/com/example/demo/ ├── DemoApplication.java # 启动类 + 自动建库建表 ├── config/ │ ├── AppStartupRunner.java # 首次启动自动创建 admin 用户 │ └── SaTokenConfig.java # Sa-Token 路由拦截配置 ├── controller/ │ ├── HealthController.java # 健康检查 /health │ └── LoginController.java # 登录/首页/退出 ├── entity/ │ └── User.java # 用户实体(t_user) ├── mapper/ │ └── UserMapper.java # MyBatis-Plus BaseMapper └── service/ └── UserService.java # BCrypt 校验 + Sa-Token 登录 src/main/resources/ ├── application.yml # 主配置(MySQL / Redis / Sa-Token) ├── templates/ │ ├── login.html # 登录页面 │ └── home.html # 登录后首页 ├── static/ │ ├── css/login.css # 登录页样式 │ └── js/login.js # 前端登录交互(fetch API) └── sql/ └── schema.sql # 数据库初始化 DDL ``` ## 快速开始 ### 环境要求 - JDK 8 或 21 - Maven 3.9+ - MySQL 8.0 已启动(localhost:3306) - Redis 6.0+ 已启动(127.0.0.1:6379) ### 数据库配置 首次启动时程序会自动创建 `ai_coding` 数据库与 `t_user` 表,并生成默认管理员: - **用户名**:admin - **密码**:admin123 如需手动建表,可执行 `src/main/resources/sql/schema.sql`。 ### 启动 ```bash # 编译打包 mvn clean package -DskipTests # 启动 java -jar target/demo-0.0.1-SNAPSHOT.jar ``` 启动后访问:http://localhost:8080/login ### API | 方法 | 路径 | 说明 | | ---- | ------------ | ------------------------------------ | | GET | `/login` | 登录页面 | | POST | `/api/login` | 登录接口 `{username, password}` | | GET | `/home` | 首页(需登录,由 Sa-Token 拦截保护) | | GET | `/api/logout`| 退出登录 | | GET | `/health` | 健康检查(无需登录) | ### 认证流程 ```text ┌──────────┐ POST /api/login ┌──────────┐ StpUtil.login() ┌───────┐ │ 浏览器 │ ──────────────────→ │ 后端 │ ─────────────────→ │ Redis │ │ login.js │ ←────── token ──────│ BCrypt │ ←────── ok ────────│ Token │ └──────────┘ Cookie: satoken └──────────┘ └───────┘ │ ▼ 访问 /home 携带 satoken cookie → SaInterceptor.checkLogin → 读取 Redis token ``` ## 开发规范 ### 包结构约定 - `controller` — 处理 HTTP 请求,返回页面或 JSON。不包含业务逻辑。 - `service` — 业务逻辑层,可调用多个 Mapper,方法与接口颗粒度对齐。 - `mapper` — 数据访问层。必须继承 MyBatis-Plus 的 `BaseMapper`,不带 XML。 - `entity` — 实体类,必须使用 `@TableName` 标注表名;字段遵循下划线 → 驼峰映射。 - `config` — 仅存放 `@Configuration` 类或启动 Runner。 ### 数据库表规范 - 表名使用 `t_` 前缀(由 MyBatis-Plus `table-prefix: t_` 全局配置) - 主键使用 `id INT AUTO_INCREMENT` - 时间字段统一定义为 `create_time DATETIME DEFAULT CURRENT_TIMESTAMP` - 编码统一 `utf8mb4` ### 依赖版本管理 - 第三发方库的版本号必须在 `pom.xml` 中显式声明 - 不使用快照版本 - 优先使用 Spring Boot Parent 管理的依赖 ### Git 分支管理 - `master` 分支仅用于发布稳定版本 - `dev` 分支为主要开发分支 - 约定式提交参见[Conventional Commits](https://www.conventionalcommits.org/zh-hans/) ### 安全和代码约定 - 所有平台凭据(数据库、Redis)不得出现在日志中 - 用户密码加密存储,明文不得写入数据库或文件 - 不可复用已过期的认证令牌 ### 日志 生产环境: ```yaml logging: level: root: WARN com.example: INFO ``` ## License MIT