签入版本

This commit is contained in:
2026-10-11 19:06:33 +08:00
parent 17d28de8b7
commit 4084c6bd17
674 changed files with 58855 additions and 1892 deletions
@@ -17,7 +17,7 @@
```bash
# 进入项目目录(以实际解压路径为准)
cd RXThinkCMF_Laravel13_EleVue
cd RXThinkCMF_Laravel13_NaiveVue
```
:::tip 温馨提示
@@ -76,7 +76,7 @@ APP_DEBUG=true
DB_CONNECTION=mysql # 数据库类型(mysql / pgsql / sqlsrv / sqlite)
DB_HOST=127.0.0.1 # 数据库服务器地址
DB_PORT=3306 # 数据库端口
DB_DATABASE=rxthinkcmf.laravel13.elevue # 数据库名称(需提前创建)
DB_DATABASE=rxthinkcmf.laravel13.naivevue # 数据库名称(需提前创建)
DB_USERNAME=root # 数据库用户名
DB_PASSWORD=root # 数据库密码
DB_PREFIX=laravel_ # 表前缀(数据库脚本使用 laravel_ 前缀,必须保留)
@@ -118,7 +118,7 @@ composer dev
# 方式二:单独启动 API 服务(内置 PHP 开发服务器,默认监听 127.0.0.1:8000)
# -----------------------------------------------------------------------------
# serve → 启动 Laravel 内置的 PHP 开发服务器
# 启动后浏览器访问 http://localhost:8000 即可
# 启动后浏览器访问 http://admin.laravel13.naivevue 即可
php artisan serve
# -----------------------------------------------------------------------------
@@ -156,13 +156,13 @@ INFO Press Ctrl-C to quit.
# -----------------------------------------------------------------------------
# 健康检查(Laravel 内置 /up 路由)
# -----------------------------------------------------------------------------
curl http://localhost:8000/up
curl http://admin.laravel13.naivevue/up
# → {"status":"ok"}
# -----------------------------------------------------------------------------
# 验证码接口(公开接口,同时验证 PHP → Redis 链路)
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/captcha
curl http://admin.laravel13.naivevue/api/captcha
# → {"code":0,"ok":true,"msg":"操作成功","data":{"key":"...","captcha":"data:image/png;base64,..."}}
# -----------------------------------------------------------------------------
@@ -171,7 +171,7 @@ curl http://localhost:8000/api/captcha
# -X POST → 使用 POST 方法
# -H → 设置请求头(Content-Type: application/json)
# -d → 发送 JSON 格式的请求体
curl -X POST http://localhost:8000/api/login \
curl -X POST http://admin.laravel13.naivevue/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456"}'
@@ -9,15 +9,15 @@
```text
document/
├── mysql/
│ └── rxthinkcmf.laravel13.elevue.sql # MySQL 版本
│ └── rxthinkcmf.laravel13.naivevue.sql # MySQL 版本
├── postgresql/
│ └── rxthinkcmf.laravel13.elevue.sql # PostgreSQL 版本
│ └── rxthinkcmf.laravel13.naivevue.sql # PostgreSQL 版本
├── sqlserver/
│ └── rxthinkcmf.laravel13.elevue.sql # SQL Server 版本
│ └── rxthinkcmf.laravel13.naivevue.sql # SQL Server 版本
├── oracle/
│ └── rxthinkcmf.laravel13.elevue.sql # Oracle 版本
│ └── rxthinkcmf.laravel13.naivevue.sql # Oracle 版本
└── sqlite/
└── rxthinkcmf.laravel13.elevue.sql # SQLite 版本
└── rxthinkcmf.laravel13.naivevue.sql # SQLite 版本
```
各数据库脚本已针对对应的 SQL 语法做了适配,包含完整的表结构(25 张业务表,`laravel_` 前缀)与初始数据。
@@ -41,7 +41,7 @@ mysql -u root -p
-- 创建项目数据库
-- CHARACTER SET utf8mb4 → 支持 emoji 等四字节字符
-- COLLATE utf8mb4_general_ci → 不区分大小写的排序规则
CREATE DATABASE `rxthinkcmf.laravel13.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE `rxthinkcmf.laravel13.naivevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
EXIT;
```
@@ -54,7 +54,7 @@ EXIT;
# -u root -proot → 数据库用户名和密码
# rxthinkcmf... → 目标数据库名
# < file.sql → 将 SQL 文件内容作为 mysql 命令的输入
mysql -u root -proot rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.laravel13.elevue.sql
mysql -u root -proot rxthinkcmf.laravel13.naivevue < document/mysql/rxthinkcmf.laravel13.naivevue.sql
```
:::tip 温馨提示
@@ -68,7 +68,7 @@ mysql -u root -proot rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.lar
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=root
DB_PASSWORD=root
DB_PREFIX=laravel_ # 必须保留,脚本中表均为 laravel_ 前缀
@@ -89,10 +89,10 @@ sudo -u postgres psql
-- 创建项目数据库
-- OWNER postgres → 指定数据库所有者
-- ENCODING 'UTF8' → 使用 UTF-8 编码
CREATE DATABASE "rxthinkcmf.laravel13.elevue" OWNER postgres ENCODING 'UTF8';
CREATE DATABASE "rxthinkcmf.laravel13.naivevue" OWNER postgres ENCODING 'UTF8';
-- 授予用户对该数据库的所有权限
GRANT ALL PRIVILEGES ON DATABASE "rxthinkcmf.laravel13.elevue" TO postgres;
GRANT ALL PRIVILEGES ON DATABASE "rxthinkcmf.laravel13.naivevue" TO postgres;
\q
```
@@ -105,7 +105,7 @@ GRANT ALL PRIVILEGES ON DATABASE "rxthinkcmf.laravel13.elevue" TO postgres;
# -U postgres → 连接用户
# -d ... → 目标数据库
# -f file.sql → 执行 SQL 文件
psql -U postgres -d rxthinkcmf.laravel13.elevue -f document/postgresql/rxthinkcmf.laravel13.elevue.sql
psql -U postgres -d rxthinkcmf.laravel13.naivevue -f document/postgresql/rxthinkcmf.laravel13.naivevue.sql
```
### 3. 配置 .env
@@ -114,7 +114,7 @@ psql -U postgres -d rxthinkcmf.laravel13.elevue -f document/postgresql/rxthinkcm
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=postgres
DB_PASSWORD=root
DB_PREFIX=laravel_
@@ -146,7 +146,7 @@ touch database/database.sqlite
# sqlite3 → SQLite 命令行工具
# 数据库文件路径 → SQLite 数据库存储在单个文件中
# < file.sql → 将 SQL 文件作为输入执行
sqlite3 database/database.sqlite < document/sqlite/rxthinkcmf.laravel13.elevue.sql
sqlite3 database/database.sqlite < document/sqlite/rxthinkcmf.laravel13.naivevue.sql
```
### 3. 配置 .env
@@ -178,7 +178,7 @@ DB_PREFIX=laravel_
# -P root → 密码
# -Q → 执行 SQL 查询后退出
# COLLATE Chinese_PRC_CI_AS → 中文排序规则(不区分大小写)
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elevue] COLLATE Chinese_PRC_CI_AS"
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.naivevue] COLLATE Chinese_PRC_CI_AS"
```
### 2. 导入 SQL 脚本
@@ -189,7 +189,7 @@ sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elev
# -----------------------------------------------------------------------------
# -d rxthinkcmf... → 目标数据库
# -i file.sql → 执行 SQL 文件
sqlcmd -S localhost -U sa -P root -d rxthinkcmf.laravel13.elevue -i document/sqlserver/rxthinkcmf.laravel13.elevue.sql
sqlcmd -S localhost -U sa -P root -d rxthinkcmf.laravel13.naivevue -i document/sqlserver/rxthinkcmf.laravel13.naivevue.sql
```
### 3. 配置 .env
@@ -198,7 +198,7 @@ sqlcmd -S localhost -U sa -P root -d rxthinkcmf.laravel13.elevue -i document/sql
DB_CONNECTION=sqlsrv
DB_HOST=127.0.0.1
DB_PORT=1433
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=sa
DB_PASSWORD=root
DB_PREFIX=laravel_
@@ -218,15 +218,15 @@ sqlplus system/root@localhost:1521/XE
-- DATAFILE → 数据文件的物理路径
-- SIZE 100M → 初始大小 100MB
-- AUTOEXTEND ON NEXT 100M → 空间不足时自动扩展 100MB
CREATE TABLESPACE "rxthinkcmf_laravel13_elevue"
DATAFILE '/u01/oradata/rxthinkcmf_laravel13_elevue.dbf'
CREATE TABLESPACE "rxthinkcmf_laravel13_naivevue"
DATAFILE '/u01/oradata/rxthinkcmf_laravel13_naivevue.dbf'
SIZE 100M AUTOEXTEND ON NEXT 100M;
-- 创建数据库用户
-- IDENTIFIED BY → 设置密码
-- DEFAULT TABLESPACE → 指定默认表空间
CREATE USER "root" IDENTIFIED BY "root"
DEFAULT TABLESPACE "rxthinkcmf_laravel13_elevue";
DEFAULT TABLESPACE "rxthinkcmf_laravel13_naivevue";
-- 授权
-- CONNECT → 连接权限
@@ -247,7 +247,7 @@ EXIT;
# sqlplus → Oracle 命令行工具
# root/root@localhost:1521/XE → 用户/密码@主机:端口/服务名
# @file.sql → 执行 SQL 文件
sqlplus root/root@localhost:1521/XE @document/oracle/rxthinkcmf.laravel13.elevue.sql
sqlplus root/root@localhost:1521/XE @document/oracle/rxthinkcmf.laravel13.naivevue.sql
```
### 3. 配置 .env
@@ -256,7 +256,7 @@ sqlplus root/root@localhost:1521/XE @document/oracle/rxthinkcmf.laravel13.elevue
DB_CONNECTION=oracle
DB_HOST=127.0.0.1
DB_PORT=1521
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=root
DB_PASSWORD=root
DB_PREFIX=laravel_
@@ -280,7 +280,7 @@ DB_PREFIX=laravel_
php artisan --version
# 方式二:手动测试登录接口(POST 请求 + JSON 参数)
curl http://localhost:8000/api/login -X POST \
curl http://admin.laravel13.naivevue/api/login -X POST \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456"}'
```
@@ -292,13 +292,13 @@ curl http://localhost:8000/api/login -X POST \
# MySQL:查询用户表记录数(验证表是否创建成功且有数据)
# -----------------------------------------------------------------------------
# -e → 执行 SQL 后退出
mysql -u root -proot rxthinkcmf.laravel13.elevue -e "SELECT COUNT(*) FROM laravel_user;"
mysql -u root -proot rxthinkcmf.laravel13.naivevue -e "SELECT COUNT(*) FROM laravel_user;"
# -----------------------------------------------------------------------------
# PostgreSQL:查询用户表记录数
# -----------------------------------------------------------------------------
# -c → 执行 SQL 命令
psql -U postgres -d rxthinkcmf.laravel13.elevue -c "SELECT COUNT(*) FROM laravel_user;"
psql -U postgres -d rxthinkcmf.laravel13.naivevue -c "SELECT COUNT(*) FROM laravel_user;"
# -----------------------------------------------------------------------------
# SQLite:查询用户表记录数
@@ -309,7 +309,7 @@ sqlite3 database/database.sqlite "SELECT COUNT(*) FROM laravel_user;"
# SQL Server:查询用户表记录数
# -----------------------------------------------------------------------------
# -Q → 执行查询后退出
sqlcmd -S localhost -U sa -P root -d rxthinkcmf.laravel13.elevue -Q "SELECT COUNT(*) FROM laravel_user;"
sqlcmd -S localhost -U sa -P root -d rxthinkcmf.laravel13.naivevue -Q "SELECT COUNT(*) FROM laravel_user;"
# -----------------------------------------------------------------------------
# Oracle:查询用户表记录数(需先进入 SQL 命令行)
@@ -348,7 +348,7 @@ EXIT;
```bash
# --default-character-set=utf8mb4 → 指定字符集为 utf8mb4(支持 emoji)
mysql -u root -proot --default-character-set=utf8mb4 rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.laravel13.elevue.sql
mysql -u root -proot --default-character-set=utf8mb4 rxthinkcmf.laravel13.naivevue < document/mysql/rxthinkcmf.laravel13.naivevue.sql
```
### Q: 报 `Table 'xxx.users' doesn't exist`
@@ -368,13 +368,13 @@ DB_PREFIX=laravel_
# 先删除旧数据库再重建(⚠️ 会清空所有数据)
# -----------------------------------------------------------------------------
# DROP DATABASE IF EXISTS → 如果存在则删除
mysql -u root -proot -e "DROP DATABASE IF EXISTS \`rxthinkcmf.laravel13.elevue\`;"
mysql -u root -proot -e "DROP DATABASE IF EXISTS \`rxthinkcmf.laravel13.naivevue\`;"
# 创建数据库(指定字符集)
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT CHARACTER SET utf8mb4;"
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.naivevue\` DEFAULT CHARACTER SET utf8mb4;"
# 重新导入 SQL
mysql -u root -proot rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.laravel13.elevue.sql
mysql -u root -proot rxthinkcmf.laravel13.naivevue < document/mysql/rxthinkcmf.laravel13.naivevue.sql
```
### Q: 导入很慢或中断
@@ -7,7 +7,7 @@ Docker 方案适合快速体验项目功能,无需在本机手动安装 PHP、
## 架构说明
```text
浏览器 → localhost:8000 → [Nginx 容器:80] → [PHP-FPM 容器:9000] → Laravel 应用
浏览器 → admin.laravel13.naivevue → [Nginx 容器:80] → [PHP-FPM 容器:9000] → Laravel 应用
↕
[MySQL 容器:3306] + [Redis 容器:6379]
```
@@ -20,7 +20,7 @@ Docker 方案适合快速体验项目功能,无需在本机手动安装 PHP、
## 文件结构
```text
RXThinkCMF_Laravel13_EleVue/
RXThinkCMF_Laravel13_NaiveVue/
├── docker-compose.yml # 容器编排(项目根目录)
├── .dockerignore # 构建上下文排除(.env、vendor、SQL 等)
├── docker/
@@ -51,7 +51,7 @@ composer setup
项目已内置完整的 Docker 配置文件(`docker-compose.yml`、`docker/Dockerfile`、`docker/nginx.conf`),无需手动创建,直接启动即可:
```bash
cd RXThinkCMF_Laravel13_EleVue
cd RXThinkCMF_Laravel13_NaiveVue
# 启动所有服务(首次会自动构建镜像,约 2-5 分钟)
docker compose up -d
@@ -135,7 +135,7 @@ services:
- DB_CONNECTION=mysql
- DB_HOST=mysql
- DB_PORT=3306
- DB_DATABASE=${MYSQL_DATABASE:-rxthinkcmf.laravel13.elevue}
- DB_DATABASE=${MYSQL_DATABASE:-rxthinkcmf.laravel13.naivevue}
- DB_USERNAME=root
- DB_PASSWORD=${MYSQL_ROOT_PASSWORD:-root123}
@@ -151,7 +151,7 @@ services:
- JWT_SECRET=${JWT_SECRET:-your_random_jwt_secret_key_at_least_32_bytes_long}
# 文件访问域名(接口返回上传文件的完整地址)
- FILE_DOMAIN_URL=${DOMAIN_URL:-http://localhost:8000}
- FILE_DOMAIN_URL=${DOMAIN_URL:-http://admin.laravel13.naivevue}
# 跨域来源(快速体验默认放开)
- CORS_ALLOW_ORIGIN=${CORS_ALLOW_ORIGIN:-*}
@@ -177,10 +177,10 @@ services:
- "${MYSQL_PORT:-3306}:3306" # 宿主机端口(默认 3306),可通过环境变量覆盖
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123} # root 密码
MYSQL_DATABASE: ${MYSQL_DATABASE:-rxthinkcmf.laravel13.elevue} # 自动创建的数据库
MYSQL_DATABASE: ${MYSQL_DATABASE:-rxthinkcmf.laravel13.naivevue} # 自动创建的数据库
volumes:
- mysql_data:/var/lib/mysql # 数据持久化
- ./document/mysql/rxthinkcmf.laravel13.elevue.sql:/docker-entrypoint-initdb.d/init.sql:ro # 初始化 SQL(仅首次启动执行)
- ./document/mysql/rxthinkcmf.laravel13.naivevue.sql:/docker-entrypoint-initdb.d/init.sql:ro # 初始化 SQL(仅首次启动执行)
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
@@ -425,9 +425,9 @@ NGINX_PORT=8000
MYSQL_PORT=3306
REDIS_PORT=6379
# MySQL(首次启动自动导入 document/mysql/rxthinkcmf.laravel13.elevue.sql)
# MySQL(首次启动自动导入 document/mysql/rxthinkcmf.laravel13.naivevue.sql)
MYSQL_ROOT_PASSWORD=Your_Strong_Password_2024
MYSQL_DATABASE=rxthinkcmf.laravel13.elevue
MYSQL_DATABASE=rxthinkcmf.laravel13.naivevue
# Redis
REDIS_PASSWORD=Your_Redis_Password_2024
@@ -435,8 +435,8 @@ REDIS_PASSWORD=Your_Redis_Password_2024
# 应用
JWT_SECRET=<32 字符以上随机值,openssl rand -base64 32 生成>
APP_DEBUG=false
DOMAIN_URL=http://localhost:8000
CORS_ALLOW_ORIGIN=http://localhost:8000
DOMAIN_URL=http://admin.laravel13.naivevue
CORS_ALLOW_ORIGIN=http://admin.laravel13.naivevue
```
:::tip 与本地 .env 的关系
@@ -460,8 +460,8 @@ CORS_ALLOW_ORIGIN=http://localhost:8000
| 服务 | 地址 | 说明 |
|------|------|------|
| 后端 API | http://localhost:8000 | Nginx → PHP-FPM → Laravel |
| 健康检查 | http://localhost:8000/up | Laravel 内置健康路由 |
| 后端 API | http://admin.laravel13.naivevue | Nginx → PHP-FPM → Laravel |
| 健康检查 | http://admin.laravel13.naivevue/up | Laravel 内置健康路由 |
| MySQL | localhost:3306 | 用户名 root,默认密码 root123 |
| Redis | localhost:6379 | 默认密码 redis123 |
@@ -469,15 +469,15 @@ CORS_ALLOW_ORIGIN=http://localhost:8000
```bash
# 健康检查
curl http://localhost:8000/up
curl http://admin.laravel13.naivevue/up
# 验证码(同时验证 PHP→Redis 链路,返回 code=0 即成功)
curl http://localhost:8000/api/captcha
curl http://admin.laravel13.naivevue/api/captcha
# → {"code":0,"ok":true,"msg":"操作成功","data":{...}}
# 登录获取 Token(默认管理员账号 admin / 123456,登录后立即修改)
# 验证码参数 key/code 与 /api/captcha 响应字段一致
curl -X POST http://localhost:8000/api/login \
curl -X POST http://admin.laravel13.naivevue/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456","key":"<captcha_key>","code":"<验证码字符>"}'
```
@@ -532,10 +532,10 @@ docker compose exec mysql bash
# 数据库操作
# --------------------------------------------------------------------------
# 导入 SQL(手动方式,首次启动已自动导入)
docker compose exec -T mysql mysql -uroot -pYour_Strong_Password_2024 rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.laravel13.elevue.sql
docker compose exec -T mysql mysql -uroot -pYour_Strong_Password_2024 rxthinkcmf.laravel13.naivevue < document/mysql/rxthinkcmf.laravel13.naivevue.sql
# 进入 MySQL 命令行
docker compose exec mysql mysql -uroot -pYour_Strong_Password_2024 rxthinkcmf.laravel13.elevue
docker compose exec mysql mysql -uroot -pYour_Strong_Password_2024 rxthinkcmf.laravel13.naivevue
# --------------------------------------------------------------------------
# Laravel Artisan 命令
@@ -35,7 +35,7 @@ LOG_LEVEL=debug # 日志级别(生产改为 info)
DB_CONNECTION=mysql # 数据库类型(mysql / pgsql / sqlsrv / sqlite)
DB_HOST=127.0.0.1 # 数据库地址
DB_PORT=3306 # 端口
DB_DATABASE=rxthinkcmf.laravel13.elevue # 数据库名
DB_DATABASE=rxthinkcmf.laravel13.naivevue # 数据库名
DB_USERNAME=root # 用户名
DB_PASSWORD=root # 密码
DB_PREFIX=laravel_ # 表前缀(脚本使用 laravel_ 前缀,必须保留)
@@ -228,7 +228,7 @@ APP_DEBUG=true # 开启调试模式(异常返回真实
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_PREFIX=laravel_
CORS_ALLOW_ORIGIN=* # 允许所有来源(Vite 代理/直连均可用)
@@ -441,7 +441,7 @@ MySQL 是项目默认推荐的关系型数据库,集成环境已自带,开
# 若前面有分号则去掉,保存后重启 Laragon
# 创建数据库
D:\laragon\bin\mysql\bin\mysql.exe -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
D:\laragon\bin\mysql\bin\mysql.exe -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.naivevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
```
```sh [macOS]
@@ -450,7 +450,7 @@ brew services start mysql
sudo mysql_secure_installation
# 创建数据库
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.naivevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
```
```sh [Ubuntu / Debian]
@@ -460,7 +460,7 @@ sudo systemctl enable mysql
sudo mysql_secure_installation
# 创建数据库
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.naivevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
```
```sh [Rocky Linux / CentOS]
@@ -470,7 +470,7 @@ sudo systemctl enable mysqld
sudo mysql_secure_installation
# 创建数据库
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.naivevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
```
:::
@@ -481,7 +481,7 @@ mysql -u root -proot -e "CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=root
DB_PASSWORD=root
DB_PREFIX=laravel_
@@ -507,7 +507,7 @@ PostgreSQL 功能强大,支持 JSONB、全文检索等高级特性,需单独
psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'root';"
# 创建数据库
psql -U postgres -c "CREATE DATABASE \"rxthinkcmf.laravel13.elevue\" OWNER postgres ENCODING 'UTF8';"
psql -U postgres -c "CREATE DATABASE \"rxthinkcmf.laravel13.naivevue\" OWNER postgres ENCODING 'UTF8';"
```
```sh [macOS]
@@ -518,8 +518,8 @@ brew services start postgresql
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"
# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.laravel13.elevue\" TO postgres;"
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.naivevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.laravel13.naivevue\" TO postgres;"
```
```sh [Ubuntu / Debian]
@@ -530,8 +530,8 @@ sudo systemctl start postgresql
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"
# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.laravel13.elevue\" TO postgres;"
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.naivevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.laravel13.naivevue\" TO postgres;"
```
```sh [Rocky Linux / CentOS]
@@ -543,7 +543,7 @@ sudo systemctl start postgresql
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"
# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.naivevue\" OWNER postgres ENCODING 'UTF8';"
```
:::
@@ -554,7 +554,7 @@ sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.laravel13.elevue\" OWNER
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=postgres
DB_PASSWORD=root
DB_PREFIX=laravel_
@@ -592,7 +592,7 @@ DB_PREFIX=laravel_
```
:::warning
SQLite 仅适合开发与测试。完整初始化数据请导入 `document/sqlite/rxthinkcmf.laravel13.elevue.sql`(五种数据库各有专用脚本,按 `document/<数据库类型>/` 分组,见 [2.5 数据库初始化](/zh/quickstart/database-init.html))。
SQLite 仅适合开发与测试。完整初始化数据请导入 `document/sqlite/rxthinkcmf.laravel13.naivevue.sql`(五种数据库各有专用脚本,按 `document/<数据库类型>/` 分组,见 [2.5 数据库初始化](/zh/quickstart/database-init.html))。
:::
### SQL Server 数据库
@@ -611,7 +611,7 @@ SQL Server 是微软商业数据库,Windows 下安装 ODBC 驱动后开箱即
# 完整 DLL 清单与选择规则见 7.6 数据库迁移工具 → 驱动安装与环境配置
# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elevue] COLLATE Chinese_PRC_CI_AS"
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.naivevue] COLLATE Chinese_PRC_CI_AS"
```
```sh [macOS]
@@ -624,7 +624,7 @@ docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=root" \
pecl install pdo_sqlsrv
# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elevue] COLLATE Chinese_PRC_CI_AS"
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.naivevue] COLLATE Chinese_PRC_CI_AS"
```
```sh [Ubuntu / Debian]
@@ -646,7 +646,7 @@ echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php/8.3/mods-available/pdo_sqlsrv
sudo phpenmod pdo_sqlsrv
# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elevue] COLLATE Chinese_PRC_CI_AS"
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.naivevue] COLLATE Chinese_PRC_CI_AS"
```
```sh [Rocky Linux / CentOS]
@@ -666,7 +666,7 @@ sudo pecl install pdo_sqlsrv
echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php.d/pdo_sqlsrv.ini
# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elevue] COLLATE Chinese_PRC_CI_AS"
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.naivevue] COLLATE Chinese_PRC_CI_AS"
```
:::
@@ -677,7 +677,7 @@ sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.laravel13.elev
DB_CONNECTION=sqlsrv
DB_HOST=127.0.0.1
DB_PORT=1433
DB_DATABASE=rxthinkcmf.laravel13.elevue
DB_DATABASE=rxthinkcmf.laravel13.naivevue
DB_USERNAME=sa
DB_PASSWORD=root
DB_PREFIX=laravel_
@@ -711,7 +711,7 @@ Oracle 是企业级商业数据库,需手动安装 Instant Client 和 pdo_oci
# DB_CONNECTION=oracle
# DB_HOST=127.0.0.1
# DB_PORT=1521
# DB_DATABASE=rxthinkcmf.laravel13.elevue
# DB_DATABASE=rxthinkcmf.laravel13.naivevue
# DB_USERNAME=root
# DB_PASSWORD=root
```
@@ -981,24 +981,25 @@ strict-ssl = false
### 前端依赖清单
进入前端仓库执行 `pnpm install` 后会安装以下核心依赖:
进入 `ui/` 目录执行 `pnpm install` 后会安装以下核心依赖:
| 依赖 | 版本 | 说明 |
|------|------|------|
| `vue` | ^3.4.27 | 核心框架 |
| `element-plus` | ^2.7.4 | UI 组件库 |
| `pinia` | ^2.1.7 | 状态管理 |
| `vue-router` | ^4.3.2 | 路由管理 |
| `axios` | ^0.27.2 | HTTP 请求 |
| `vue` | ^3.5.1 | 核心框架 |
| `naive-ui` | ^2.40.0 | UI 组件库 |
| `pinia` | ^2.2.2 | 状态管理 |
| `vue-router` | ^4.4.3 | 路由管理 |
| `axios` | ^1.7.7 | HTTP 请求 |
| `typescript` | ^4.9.5 | 类型系统 |
| `vite` | ^3.2.10 | 构建工具 |
| `vite` | ^5.4.3 | 构建工具 |
| `tinymce` | 5.10.3 | 富文本编辑器 |
| `echarts` | ^5.5.0 | 图表库 |
| `tailwindcss` | ^3.4.3 | CSS 框架 |
| `xlsx` | ^0.18.5 | Excel 处理 |
| `@element-plus/icons-vue` | ^2.3.1 | Element Plus 图标 |
| `dayjs` | ^1.11.11 | 日期处理 |
| `lodash` | ^4.17.21 | 工具函数库 |
| `@vueup/vue-quill` | 1.0.0-beta.8 | 富文本编辑器(Quill) |
| `echarts` | ^5.5.1 | 图表库 |
| `tailwindcss` | ^3.4.10 | CSS 框架 |
| `xlsx` | ^0.17.5 | Excel 处理 |
| `@vicons/antd` | ^0.10.0 | 图标库 |
| `date-fns` | ^2.30.0 | 日期处理 |
| `lodash-es` | ^4.17.21 | 工具函数库 |
## 开发工具推荐
@@ -59,7 +59,7 @@ A: 检查以下几点:
1. MySQL 服务是否启动:`systemctl status mysql`
2. `.env` 中的 `DB_*` 配置是否正确(`DB_HOST`、`DB_PORT`、`DB_USERNAME`、`DB_PASSWORD`、`DB_DATABASE`)
3. 数据库是否已创建并导入 `document/mysql/rxthinkcmf.laravel13.elevue.sql`(本项目 migrations 为空,**不会自动建表**)
3. 数据库是否已创建并导入 `document/mysql/rxthinkcmf.laravel13.naivevue.sql`(本项目 migrations 为空,**不会自动建表**)
4. `DB_PREFIX` 是否为 `laravel_`(漏配会报 `Table 'xxx.users' doesn't exist`)
5. 原生测试连接:`mysql -h 127.0.0.1 -P 3306 -u root -p -e "SELECT 1;"`
@@ -88,7 +88,7 @@ pnpm install # 重新安装所有依赖
A: 检查以下几点:
1. 后端服务是否启动(`curl http://localhost:8000/api/captcha` 验证)
1. 后端服务是否启动(`curl http://admin.laravel13.naivevue/api/captcha` 验证)
2. Vite 代理配置是否正确(`vite.config.ts` 中的 `target`,改完重启 `pnpm dev`)
3. API 路径是否正确(应以 `/api` 开头)
@@ -107,7 +107,7 @@ A: 打开浏览器控制台(F12)查看错误信息,常见原因:
A: 正常现象。本项目 `database/migrations/` 为空,**建表以 SQL 脚本为准**,`migrate` 只初始化迁移记录表。请手动导入:
```bash
mysql -uroot -proot rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.laravel13.elevue.sql
mysql -uroot -proot rxthinkcmf.laravel13.naivevue < document/mysql/rxthinkcmf.laravel13.naivevue.sql
```
详见 [2.5 数据库初始化](/zh/quickstart/database-init.html)。
@@ -16,7 +16,7 @@
```bash
# GET 请求获取验证码(返回 Base64 编码的图片 + 验证码 key)
curl http://localhost:8000/api/captcha
curl http://admin.laravel13.naivevue/api/captcha
```
响应示例:
@@ -52,7 +52,7 @@ curl http://localhost:8000/api/captcha
# password → 密码
# key → 步骤一返回的验证码 key(与 captcha 响应字段命名一致)
# code → 验证码图片上显示的字符
curl -X POST http://localhost:8000/api/login \
curl -X POST http://admin.laravel13.naivevue/api/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
@@ -100,7 +100,7 @@ curl -X POST http://localhost:8000/api/login \
# -----------------------------------------------------------------------------
# pageNo=1\&pageSize=10 → 分页参数(\& 是 bash 转义,防止 & 被解释为后台运行符)
# -H "Authorization: Bearer <token>" → 在请求头中携带 JWT Token
curl "http://localhost:8000/api/user/page?pageNo=1&pageSize=10" \
curl "http://admin.laravel13.naivevue/api/user/page?pageNo=1&pageSize=10" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
```
@@ -136,33 +136,33 @@ curl "http://localhost:8000/api/user/page?pageNo=1&pageSize=10" \
# -----------------------------------------------------------------------------
# 获取当前登录用户信息
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/index/getUser \
curl http://admin.laravel13.naivevue/api/index/getUser \
-H "Authorization: Bearer <your_token>"
# -----------------------------------------------------------------------------
# 获取当前用户的菜单列表(用于前端动态路由)
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/index/getMenus \
curl http://admin.laravel13.naivevue/api/index/getMenus \
-H "Authorization: Bearer <your_token>"
# -----------------------------------------------------------------------------
# 获取字典项(gender = 性别字典的编码)
# -----------------------------------------------------------------------------
curl http://localhost:8000/api/dict/item/getDictItemList/gender \
curl http://admin.laravel13.naivevue/api/dict/item/getDictItemList/gender \
-H "Authorization: Bearer <your_token>"
# -----------------------------------------------------------------------------
# 刷新 Token(access_token 过期后,用 refresh_token 换取新的令牌对)
# -----------------------------------------------------------------------------
# refresh 为公开接口(无需 access_token)
curl -X POST http://localhost:8000/api/refresh \
curl -X POST http://admin.laravel13.naivevue/api/refresh \
-H "Content-Type: application/json" \
-d '{"refresh_token": "<your_refresh_token>"}'
# -----------------------------------------------------------------------------
# 登出(令牌即时失效,需携带 access_token)
# -----------------------------------------------------------------------------
curl -X POST http://localhost:8000/api/logout \
curl -X POST http://admin.laravel13.naivevue/api/logout \
-H "Authorization: Bearer <your_token>"
```
@@ -224,7 +224,7 @@ HTTP 状态码为 200,前端据 body `code=401` 触发跳转登录。
## ApiFox 配置建议
1. 创建环境,设置变量:
- `base_url` = `http://localhost:8000`
- `base_url` = `http://admin.laravel13.naivevue`
- `token` = 登录后填入 access_token
2. 在请求头中使用变量:
@@ -1,7 +1,7 @@
# 2.4 前端服务启动
:::tip 概述
本章指导您启动前端开发服务器,包括依赖安装、环境配置和 Vite 开发服务器启动。前端为本仓库 `ui/` 目录内的 EleVue 管理后台(Vue3 + ElementPlus)。
本章指导您启动前端开发服务器,包括依赖安装、环境配置和 Vite 开发服务器启动。前端为本仓库 `ui/` 目录内的 NaiveVue 管理后台(Vue3 + NaiveUI)。
:::
## 步骤一:安装依赖
@@ -48,7 +48,7 @@ VITE_PORT = 8001
VITE_PUBLIC_PATH = /
# 代理配置(JSON 数组格式:[["前缀","目标地址"]])
VITE_PROXY = [["/api","http://localhost:8000/api"]]
VITE_PROXY = [["/api","http://admin.laravel13.naivevue/api"]]
# API 接口基础路径(留空,由代理处理)
VITE_GLOB_API_URL =
@@ -60,7 +60,7 @@ VITE_GLOB_API_URL_PREFIX = /api
VITE_GLOB_UPLOAD_URL = /api/upload
# 图片访问地址(附件域名,对应后端 FILE_DOMAIN_URL)
VITE_GLOB_IMG_URL = http://file.laravel13.elevue
VITE_GLOB_IMG_URL = http://file.laravel13.naivevue
# 是否启用 Mock 数据(false = 使用真实后端 API)
VITE_USE_MOCK = false
@@ -127,7 +127,7 @@ server: {
port: 8001, // 开发服务器端口(对应 VITE_PORT)
proxy: {
'/api': {
target: 'http://localhost:8000/api', // 后端服务地址(对应 VITE_PROXY)
target: 'http://admin.laravel13.naivevue/api', // 后端服务地址(对应 VITE_PROXY)
changeOrigin: true, // 开启跨域(修改请求头的 Origin)
rewrite: (path) => path, // 保持路径不变(不做路径替换)
},
@@ -138,7 +138,7 @@ server: {
后端使用虚拟域名时(见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html)),target 改为对应地址:
```typescript
target: 'http://admin.laravel13.elevue/api',
target: 'http://admin.laravel13.naivevue/api',
```
确保后端服务已启动(`php artisan serve`),然后访问 `http://localhost:8001`。
@@ -151,7 +151,7 @@ target: 'http://admin.laravel13.elevue/api',
4. 登录成功后进入控制台页面
:::tip 代理原理
浏览器 → `http://localhost:8001/api/login` → Vite 代理 → `http://localhost:8000/api/login` → 后端处理
浏览器 → `http://localhost:8001/api/login` → Vite 代理 → `http://admin.laravel13.naivevue/api/login` → 后端处理
代理方式下前端无需关心跨域;若改为直连后端(`VITE_GLOB_API_URL` 配置完整地址),则依赖后端 CORS 配置(`.env` 中 `CORS_ALLOW_ORIGIN`)。
:::
@@ -206,7 +206,7 @@ server: {
```bash
# 确认后端在运行(直接请求后端验证码接口)
curl http://localhost:8000/api/captcha
curl http://admin.laravel13.naivevue/api/captcha
# → {"code":0,...} 即后端正常
```
@@ -21,7 +21,7 @@
D:\laragon\www\ # 站点根目录(Apache 主 DocumentRoot)
D:\laragon\bin\apache\httpd-2.4.x-...\ # Apache 主目录(下称 $HTTPD_HOME)
D:\laragon\bin\php\php-8.3.x-Win32-vs16-x64\ # PHP 8.3 目录(下称 $PHP_HOME)
D:\laragon\www\RXThinkCMF_Laravel13_EleVue\ # 项目根目录(下称 $PROJECT)
D:\laragon\www\RXThinkCMF_Laravel13_NaiveVue\ # 项目根目录(下称 $PROJECT)
```
:::warning PATH 中的 php 版本陷阱
@@ -55,13 +55,13 @@ $PHP_HOME\php.exe -i | findstr "extension_dir"
编辑 `C:\Windows\System32\drivers\etc\hosts`(管理员权限):
```text
127.0.0.1 admin.laravel13.elevue file.laravel13.elevue
127.0.0.1 admin.laravel13.naivevue file.laravel13.naivevue
```
| 域名 | 用途 |
|------|------|
| `admin.laravel13.elevue` | 应用入口(DocumentRoot 指向项目 `public/`) |
| `file.laravel13.elevue` | 附件目录(DocumentRoot 指向项目 `uploads/`) |
| `admin.laravel13.naivevue` | 应用入口(DocumentRoot 指向项目 `public/`) |
| `file.laravel13.naivevue` | 附件目录(DocumentRoot 指向项目 `uploads/`) |
同系列项目域名格式为 `admin.<项目>.<前端品牌>`,如 `admin.laravel13.antdvue`、`admin.laravel13.naivevue`。
@@ -84,11 +84,11 @@ Include "conf/vhost/*.conf" # 手动配置
# 项目应用本地虚拟主机配置
<VirtualHost *:80>
ServerAdmin rxthinkcmf@163.com
ServerName admin.laravel13.elevue
DocumentRoot "D:\laragon\www\RXThinkCMF_Laravel13_EleVue\public"
ServerName admin.laravel13.naivevue
DocumentRoot "D:\laragon\www\RXThinkCMF_Laravel13_NaiveVue\public"
ErrorLog "logs/laravel13-error.log"
CustomLog "logs/laravel13-access.log" common
<Directory "D:\laragon\www\RXThinkCMF_Laravel13_EleVue\public">
<Directory "D:\laragon\www\RXThinkCMF_Laravel13_NaiveVue\public">
AllowOverride All
Require all granted
</Directory>
@@ -96,11 +96,11 @@ Include "conf/vhost/*.conf" # 手动配置
# 项目附件目录本地虚拟主机配置
<VirtualHost *:80>
ServerName file.laravel13.elevue
DocumentRoot "D:\laragon\www\RXThinkCMF_Laravel13_EleVue\uploads"
ServerName file.laravel13.naivevue
DocumentRoot "D:\laragon\www\RXThinkCMF_Laravel13_NaiveVue\uploads"
ErrorLog "logs/laravel13-error.log"
CustomLog "logs/laravel13-access.log" common
<Directory "D:\laragon\www\RXThinkCMF_Laravel13_EleVue\uploads">
<Directory "D:\laragon\www\RXThinkCMF_Laravel13_NaiveVue\uploads">
AllowOverride All
Require all granted
</Directory>
@@ -267,9 +267,9 @@ $PHP_HOME\php.exe artisan tinker --execute="try { \Illuminate\Support\Facades\Re
□ $PHP_HOME\php.exe -m | findstr redis → redis
□ httpd.exe -t → Syntax OK
□ tasklist 查看 redis-server.exe → 进程存在,6379 LISTENING
□ curl http://admin.laravel13.elevue/api/captcha
□ curl http://admin.laravel13.naivevue/api/captcha
→ {"code":0,"ok":true,"msg":"操作成功","data":{...}}
□ curl -X POST http://admin.laravel13.elevue/api/login
□ curl -X POST http://admin.laravel13.naivevue/api/login
→ {"code":1,"ok":false,"msg":"参数验证失败","data":{...}} (路由已通)
```