|
|
# slake-school-service · 本地环境
|
|
|
|
|
|
## 1. 环境要求
|
|
|
|
|
|
|
|
|
| 项 | 说明 |
|
|
|
| -------- | -------------------------------------------------------------------------------------- |
|
|
|
| PHP | **8.1+**(当前锁定 Laravel 10,与 `composer.json` 一致;若本机为 PHP 8.2+ 可考虑后续升级到 Laravel 11+) |
|
|
|
| 扩展 | `openssl`、`pdo_mysql`、`mbstring`、`tokenizer`、`xml`、`ctype`、`json`、`bcmath`(Laravel 常规) |
|
|
|
| Composer | 2.x |
|
|
|
| MySQL | 5.7+ 或 8.0+(开发推荐 8.0) |
|
|
|
|
|
|
|
|
|
## 2. 配置方式
|
|
|
|
|
|
项目根目录的 `**.env`** 为本地实际配置(已加入 `.gitignore`,勿提交秘钥)。仓库内 `**.env.example`** 为模板,可执行:
|
|
|
|
|
|
```bash
|
|
|
cp .env.example .env
|
|
|
php artisan key:generate
|
|
|
```
|
|
|
|
|
|
当前默认约定与 `**.env.example**` 一致:
|
|
|
|
|
|
|
|
|
| 变量 | 默认值 | 说明 |
|
|
|
| ----------------------------- | ---------------------------------------------- | ------------------------------------------------------------------ |
|
|
|
| `APP_NAME` | Slake School Service | 应用名 |
|
|
|
| `APP_URL` | [http://127.0.0.1:8000](http://127.0.0.1:8000) | 与 `php artisan serve` 一致 |
|
|
|
| `DB_HOST` | 127.0.0.1 | 数据库地址 |
|
|
|
| `DB_PORT` | **3307** | 与下方 Docker MySQL 映射一致;若使用本机已有 MySQL 的 **3306**,请改为 `3306` 并调整库名/账号 |
|
|
|
| `DB_DATABASE` | slake_school | 库名 |
|
|
|
| `DB_USERNAME` / `DB_PASSWORD` | `root` / **`root_local`** | 与 `docker-compose.yml` 中 **`MYSQL_ROOT_PASSWORD`** 一致;应用账号也可用 `slake` / `slake_local` |
|
|
|
|
|
|
**若登录接口或任意接口报 `SQLSTATE[HY000] [2002] Connection refused`**:表示 **MySQL 未在本机监听**(常见为未启动 Docker 容器或端口不一致)。请先启动数据库(见下文 Docker),或改用本机已安装的 MySQL 并同步修改 `DB_HOST`、`DB_PORT`、账号密码。
|
|
|
|
|
|
|
|
|
## 3. 使用 Docker 启动 MySQL(可选)
|
|
|
|
|
|
若本机未安装 MySQL,可在项目根目录执行:
|
|
|
|
|
|
```bash
|
|
|
docker compose up -d
|
|
|
```
|
|
|
|
|
|
会启动容器 `slake-school-mysql`,将容器 **3306** 映射到本机 **3307**,与默认 `.env` 对齐。
|
|
|
|
|
|
- **root 密码**(仅本机调试用):`root_local`
|
|
|
- 建库、账号在 `docker-compose.yml` 的 `environment` 中已定义,与 `DB_`* 默认一致。
|
|
|
|
|
|
## 4. 使用本机已安装的 MySQL
|
|
|
|
|
|
1. 手动创建数据库:`CREATE DATABASE slake_school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`
|
|
|
2. 创建用户并授权,或沿用 `root`;在 `**.env`** 中修改 `DB_PORT`(如 `3306`)、`DB_USERNAME`、`DB_PASSWORD`。
|
|
|
3. 与 Docker 不要同时占用同一端口。
|
|
|
|
|
|
## 5. 初始化与启动
|
|
|
|
|
|
```bash
|
|
|
cd /path/to/slake-school-service
|
|
|
composer install
|
|
|
# 已存在 .env 且含 APP_KEY 时可跳过
|
|
|
cp -n .env.example .env && php artisan key:generate
|
|
|
php artisan migrate
|
|
|
php artisan db:seed
|
|
|
php artisan serve
|
|
|
```
|
|
|
|
|
|
> **已有数据库**仅需增量挂载「运营管理」侧栏:`php artisan db:seed --class=OperationsMenusSeeder`。仅补课程用字典:`php artisan db:seed --class=CourseDictionarySeeder`。
|
|
|
> **工作台菜单**(驾驶舱 + 雷达地图归组):`php artisan db:seed --class=WorkbenchMenusSeeder`(见 `docs/工作台驾驶舱与雷达地图.md`)。
|
|
|
> **数据资产 · Banner 图管理菜单**:`php artisan db:seed --class=DataAssetsMenusSeeder`(见 `docs/后台菜单目录结构.md` §7)。
|
|
|
|
|
|
`php artisan db:seed`(默认 `DatabaseSeeder`)会依次执行 **`AdminInitSeeder`**(RBAC、菜单、管理员)与 **`CourseDictionarySeeder`**(`course_system` / `course_type` / `yes_no`,对齐 `prototype/pages/course-create.html`)。
|
|
|
|
|
|
浏览器访问:`http://127.0.0.1:8000` 应出现 Laravel 欢迎页。
|
|
|
`AdminInitSeeder` 会初始化 **RBAC、菜单(含工作台、运营管理、系统管理)、默认超级管理员账号**:
|
|
|
|
|
|
| 项目 | 值 |
|
|
|
| --- | --- |
|
|
|
| 用户名 | `admin` |
|
|
|
| 初始密码 | `Admin@123456`(登录后请立即修改) |
|
|
|
|
|
|
管理端 API 前缀为 **`/api/admin/v1`**(见 `routes/admin.php`)。
|
|
|
|
|
|
## 6. 与 `slake-school-web` 联调(Vite)
|
|
|
|
|
|
在仓库 `code/slake-school-web`:
|
|
|
|
|
|
```bash
|
|
|
cp .env.example .env.development
|
|
|
npm install
|
|
|
npm run dev
|
|
|
```
|
|
|
|
|
|
默认 `VITE_API_BASE_URL=/api`,Vite 将 `/api` 代理到 `VITE_PROXY_TARGET`(与 `php artisan serve` 的 `127.0.0.1:8000` 一致)。
|
|
|
**高校雷达网地图**使用腾讯地图,请在 `.env.development` 中配置 `VITE_TENCENT_MAP_KEY`(Key 申请后填入,见 `docs/工作台驾驶舱与雷达地图.md`)。
|
|
|
后端需在 `.env` 中配置 **`SANCTUM_STATEFUL_DOMAINS`**(模板见 `.env.example`),包含本机前端地址(如 `localhost:5173`),以便后续若启用 Cookie 会话与 Sanctum 协同。
|
|
|
|
|
|
## 7. 说明
|
|
|
|
|
|
- **Sanctum**:管理端当前使用 **Bearer Token**(`Authorization: Bearer <token>`),由登录接口签发;`personal_access_tokens` 表由框架维护。
|
|
|
- 生产环境务必将 `APP_DEBUG=false`、使用强密码与独立 `APP_KEY`。
|
|
|
|
|
|
## 8. 修订记录
|
|
|
|
|
|
|
|
|
| 日期 | 说明 |
|
|
|
| ---------- | ---------------------------------------- |
|
|
|
| 2026-05-18 | 初始化改为 `php artisan db:seed`;补充 `CourseDictionarySeeder` 与增量说明。 |
|
|
|
| 2026-05-29 | 新增 §9 小程序 H5 本地调试与 `dev-login` 说明。 |
|
|
|
|
|
|
## 9. 小程序 H5 本地调试(`slake-school-wx`)
|
|
|
|
|
|
目标:**在浏览器中调试 UniApp 页面并调用真实后端**,无需微信开发者工具;小程序真机/开发者工具仍走微信登录。
|
|
|
|
|
|
### 9.1 后端
|
|
|
|
|
|
1. 按 §5 启动 MySQL 与 `php artisan serve`(`http://127.0.0.1:8000`)。
|
|
|
2. `.env` 关键项:
|
|
|
|
|
|
| 变量 | 说明 |
|
|
|
| --- | --- |
|
|
|
| `APP_ENV=local` | 启用 `POST /api/miniapp/v1/auth/dev-login` |
|
|
|
| `WX_APPID` / `WX_SECRET` | 微信小程序 `code2session`(H5 调试可不测此项) |
|
|
|
|
|
|
3. 验证接口:
|
|
|
|
|
|
```bash
|
|
|
curl -X POST http://127.0.0.1:8000/api/miniapp/v1/auth/dev-login \
|
|
|
-H 'Content-Type: application/json' \
|
|
|
-d '{"nickname":"本地调试"}'
|
|
|
```
|
|
|
|
|
|
应返回 `token` 与 `user`。
|
|
|
|
|
|
### 9.2 前端(H5)
|
|
|
|
|
|
```bash
|
|
|
cd code/slake-school-wx
|
|
|
cp .env.development .env.development.local # 可选,覆盖 API 地址
|
|
|
npm install
|
|
|
npm run dev:h5
|
|
|
```
|
|
|
|
|
|
浏览器打开 **`http://localhost:5174`** 或 **`http://127.0.0.1:5174`**(`vite.config.ts` 已设置 `host: 0.0.0.0`)。Vite 将 `/api` 代理到 `127.0.0.1:8000`(见 `vite.config.ts`)。
|
|
|
|
|
|
- 登录页在 H5 环境自动走 **开发登录**,无需 `wx.login`。
|
|
|
- 报名、我的课程/活动、资料、需求等需登录接口会携带 Bearer Token。
|
|
|
|
|
|
### 9.3 微信小程序
|
|
|
|
|
|
```bash
|
|
|
npm run dev:mp-weixin
|
|
|
```
|
|
|
|
|
|
微信开发者工具导入 `dist/dev/mp-weixin`,勾选「不校验合法域名」。API 直连 `VITE_MP_API_BASE`(默认 `http://127.0.0.1:8000/api/miniapp/v1`)。
|
|
|
|
|
|
更多 API 清单见 `docs/小程序UniApp开发方案.md` §8。
|
|
|
|