更改地址,适配小张电脑地址

This commit is contained in:
xiao12feng8 2025-12-05 23:36:21 +08:00
parent 5d7dae4466
commit 3fe0be6357
22 changed files with 1332 additions and 37 deletions

View File

@ -72,6 +72,13 @@ public class StudyLearningRecordController extends BaseController
{
Long studentId = getUserId();
List<StudyLearningRecord> list = learningRecordService.selectLearningRecordListByStudentId(studentId);
// 添加调试日志2025-12-05 18:20
for (StudyLearningRecord record : list) {
logger.info("【API返回】学生ID={}, 课程ID={}, 进度={}, 学习时长={}秒",
studentId, record.getCourseId(), record.getProgress(), record.getTotalDuration());
}
return success(list);
}

View File

@ -6,9 +6,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://101.35.101.159:3306/study?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: study
password: rx4aywZZNP3rnrkm
url: jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭

View File

@ -0,0 +1,150 @@
# 前端IP地址配置更新说明
## 更新时间
2025年12月5日
## 更新内容
将所有前端配置文件中的服务器IP地址从 `192.168.0.106` 更新为 `192.168.137.1`
---
## 已更新的文件清单
### 1. Vite配置文件
- ✅ `fronted_uniapp/vite.config.js`
- 更新 `/api` 代理目标
- 更新 `/ws` WebSocket代理目标
- ✅ `fronted_uniapp/fronted_uniapp/vite.config.js`
- 更新 `/api` 代理目标
- 更新 `/login` 代理目标
- 更新 `/register` 代理目标
- 更新 `/ws` WebSocket代理目标
### 2. 配置文件
- ✅ `fronted_uniapp/fronted_uniapp/config.js`
- 更新 `baseURL`: `http://192.168.137.1:30091/api`
- 更新 `wsHost`: `192.168.137.1`
- ✅ `fronted_uniapp/fronted_uniapp/src/config.js`
- 更新 `baseURL`: `http://192.168.137.1:30091`
- 更新 `wsHost`: `192.168.137.1`
- ✅ `fronted_uniapp/fronted_uniapp/src/utils/config.js`
- 已在前面更新APP配置文件
- 更新H5环境hostname判断逻辑
- ✅ `fronted_uniapp/utils/config.js`
- 已在前面更新APP配置文件
- ✅ `fronted_uniapp/yuyin/utils/config.js`
- 更新 `DEFAULT_SERVER_HOST`: `192.168.137.1`
- 更新 `DEV_SERVER_HOST`: `192.168.137.1`
- 更新 `DEFAULT_SERVER_PORT`: `30091`
- 更新H5环境hostname判断逻辑
### 3. 请求工具文件
- ✅ `fronted_uniapp/fronted_uniapp/src/utils/request.js`
- 更新H5环境hostname判断
- 更新localhost检测逻辑
- 更新默认返回地址: `http://192.168.137.1:30091`
- ✅ `fronted_uniapp/utils/request.js`
- 更新默认返回地址: `http://192.168.137.1:30091`
- ✅ `fronted_uniapp/yuyin/utils/request.js`
- 更新H5环境hostname判断
- 更新localhost检测逻辑
- 更新默认返回地址: `http://192.168.137.1:30091`
### 4. 应用入口文件
- ✅ `fronted_uniapp/fronted_uniapp/src/App.vue`
- 更新 `APP_DEV_HOST`: `192.168.137.1`
- 更新 `LOCAL_HOST`: `192.168.137.1`
### 5. 其他工具文件
- ✅ `fronted_uniapp/fronted_uniapp/src/utils/screenStream.js`
- 更新默认服务器地址: `192.168.137.1`
---
## 配置生效说明
### H5开发环境
当你运行 `npm run dev:h5` 时:
- 前端运行在: `http://localhost:20002``http://192.168.137.1:20002`
- Vite会将所有 `/api`、`/login`、`/register`、`/ws` 请求代理到 `http://192.168.137.1:30091`
### APP环境
- APP默认连接到: `http://192.168.137.1:30091`
- 支持通过本地存储动态配置服务器地址
- 配置方法: `uni.setStorageSync('server_host', '新的IP地址')`
---
## 验证方法
### 1. 验证H5环境
```bash
# 启动前端
cd fronted_uniapp/fronted_uniapp
npm run dev:h5
# 打开浏览器控制台,查看网络请求
# 应该看到请求发送到: http://192.168.137.1:30091
```
### 2. 验证APP环境
```bash
# 在APP中打开控制台
# 查看打印的服务器地址
# 应该显示: 当前服务器地址192.168.137.1:30091
```
### 3. 快速测试
在浏览器访问: `http://192.168.137.1:30091`
应该能看到后端服务的登录页面。
---
## 注意事项
1. **本地开发**: 确保后端服务运行在 `192.168.137.1:30091`
2. **防火墙**: 确保Windows防火墙已开放30091端口
3. **网络环境**: 手机和电脑必须在同一WiFi网络
4. **IP变化**: 如果电脑IP地址变化需要重新修改这些配置文件
---
## 相关文档
- 完整配置指南: `../配置指南-192.168.137.1.md`
- 快速参考手册: `../快速参考-课件管理.md`
- 视频播放配置: `../log/视频播放配置指南.md`
---
## 故障排查
### 问题1: H5环境无法连接后端
**检查**:
1. 后端服务是否启动
2. vite.config.js中的代理配置是否正确
3. 浏览器控制台是否有网络错误
### 问题2: APP无法连接后端
**检查**:
1. 手机和电脑是否在同一WiFi
2. 防火墙是否开放30091端口
3. APP配置的IP地址是否正确
4. 在手机浏览器访问 `http://192.168.137.1:30091` 测试
### 问题3: WebSocket连接失败
**检查**:
1. vite.config.js中的 `/ws` 代理配置
2. 后端WebSocket服务是否启动
3. 浏览器控制台WebSocket连接状态
---
**配置完成!现在你的前端项目已配置为使用 192.168.137.1:30091 作为后端服务器地址。**

View File

@ -3,10 +3,10 @@
*/
export default {
// 后端API服务器地址
baseURL: 'http://192.168.0.106:30091/api',
baseURL: 'http://192.168.137.1:30091/api',
// WebSocket服务器地址用于监控
wsHost: '192.168.0.106',
wsHost: '192.168.137.1',
wsPort: 30091,
// 其他配置

View File

@ -1,7 +1,7 @@
<script>
import config from '@/utils/config.js'
const APP_DEV_HOST = '192.168.0.106'
const APP_DEV_HOST = '192.168.137.1'
const APP_DEV_PORT = 30091
export default {
@ -14,7 +14,7 @@
// #ifdef APP-PLUS
const { serverHost, serverPort } = config.getServerConfig()
// 使
const LOCAL_HOST = '192.168.0.106'
const LOCAL_HOST = '192.168.137.1'
const LOCAL_PORT = 30091
if (serverHost !== LOCAL_HOST || serverPort !== LOCAL_PORT) {

View File

@ -3,10 +3,10 @@
*/
export default {
// 后端API服务器地址
baseURL: 'http://192.168.0.106:30091',
baseURL: 'http://192.168.137.1:30091',
// WebSocket服务器地址用于监控
wsHost: '192.168.0.106',
wsHost: '192.168.137.1',
wsPort: 30091,
// 其他配置

View File

@ -14,9 +14,9 @@ import '../polyfills/url.js'
*/
// 默认服务器配置(仅在未配置本地存储时使用)
const DEFAULT_SERVER_HOST = '192.168.0.106' // 本地开发服务器地址
const DEFAULT_SERVER_HOST = '192.168.137.1' // 本地开发服务器地址
const DEFAULT_SERVER_PORT = 30091 // 默认后端服务端口(与后端配置一致)
const DEV_SERVER_HOST = '192.168.0.106' // H5/APP默认地址
const DEV_SERVER_HOST = '192.168.137.1' // H5/APP默认地址
const DEV_SERVER_PORT = 30091
const IS_DEV = false // 强制使用生产环境
const isH5 = typeof window !== 'undefined' && typeof document !== 'undefined'
@ -87,10 +87,10 @@ const { serverHost, serverPort } = getServerConfig()
// API基础地址
let API_BASE_URL = `http://${serverHost}:${serverPort}`
// H5环境如果访问的是localhost/192.168.0.106,使用当前主机
// H5环境如果访问的是localhost/192.168.137.1,使用当前主机
if (typeof window !== 'undefined' && window.location) {
const hostname = window.location.hostname
if (hostname === 'localhost' || hostname === '192.168.0.106') {
if (hostname === 'localhost' || hostname === '192.168.137.1') {
API_BASE_URL = `http://${hostname}:${serverPort}`
}
}

View File

@ -51,7 +51,7 @@ class Request {
// H5环境如果访问的是localhost使用Vite代理
if (typeof window !== 'undefined' && window.location) {
const hostname = window.location.hostname
if (hostname === 'localhost' || hostname === '192.168.0.106') {
if (hostname === 'localhost' || hostname === '192.168.137.1') {
// H5环境使用后端服务器地址不通过Vite代理
// 因为Vite代理只配置了/api和/ws其他路径需要直接访问后端
return baseURL
@ -61,10 +61,10 @@ class Request {
// #ifdef APP-PLUS
// App环境如果使用localhost给出提示
if (serverHost === 'localhost' || serverHost === '192.168.0.106') {
if (serverHost === 'localhost' || serverHost === '127.0.0.1') {
console.error('❌ App环境无法使用localhost请配置电脑的局域网IP地址')
console.error('❌ 配置方法uni.setStorageSync("server_host", "你的电脑IP")')
console.error('❌ 例如uni.setStorageSync("server_host", "192.168.0.106")')
console.error('❌ 例如uni.setStorageSync("server_host", "192.168.137.1")')
}
// #endif
@ -72,7 +72,7 @@ class Request {
} catch (error) {
console.error('获取baseURL失败:', error)
// 返回默认值(本地开发服务器)
return 'http://192.168.0.106:30091'
return 'http://192.168.137.1:30091'
}
}

View File

@ -97,7 +97,7 @@ class ScreenStreamClient {
// 如果仍然没有配置,使用默认值
if (!serverHost) {
serverHost = '192.168.0.106' // 默认服务器地址
serverHost = '192.168.137.1' // 默认服务器地址
console.warn('⚠️ 未配置服务器地址,使用默认值:', serverHost)
}
if (!serverPort) {

View File

@ -25,24 +25,24 @@ export default defineConfig({
strictPort: false,
proxy: {
'/api': {
target: 'http://192.168.0.106:30091',
target: 'http://192.168.137.1:30091',
changeOrigin: true,
secure: false
},
// 代理登录等接口
'/login': {
target: 'http://192.168.0.106:30091',
target: 'http://192.168.137.1:30091',
changeOrigin: true,
secure: false
},
'/register': {
target: 'http://192.168.0.106:30091',
target: 'http://192.168.137.1:30091',
changeOrigin: true,
secure: false
},
// 代理 WebSocket 连接
'/ws': {
target: 'http://192.168.0.106:30091',
target: 'http://192.168.137.1:30091',
ws: true,
changeOrigin: true,
secure: false

View File

@ -39,9 +39,9 @@ const IS_DEV = resolveIsDev()
// - 开发测试使用局域网IP如 192.168.1.164
// - 正式部署必须改成服务器的公网IP或域名
//
const DEFAULT_SERVER_HOST = '192.168.1.164' // ⚠️ 正式部署时改成公网IP或域名
const DEFAULT_SERVER_HOST = '192.168.137.1' // ⚠️ 正式部署时改成公网IP或域名
const DEFAULT_SERVER_PORT = 30091 // 后端端口
const DEV_SERVER_HOST = '192.168.1.164' // 开发服务器地址局域网IP
const DEV_SERVER_HOST = '192.168.137.1' // 开发服务器地址局域网IP
const DEV_SERVER_PORT = 30091
const isH5 = typeof window !== 'undefined' && typeof document !== 'undefined'

View File

@ -71,7 +71,7 @@ class Request {
} catch (error) {
console.error('获取baseURL失败:', error)
// 返回默认值
return 'http://192.168.0.106:8080'
return 'http://192.168.137.1:30091'
}
}

View File

@ -19,13 +19,13 @@ export default defineConfig({
strictPort: false,
proxy: {
'/api': {
target: 'http://192.168.0.106:30091',
target: 'http://192.168.137.1:30091',
changeOrigin: true,
secure: false
},
// 代理 WebSocket 连接
'/ws': {
target: 'http://192.168.0.106:30091',
target: 'http://192.168.137.1:30091',
ws: true,
changeOrigin: true,
secure: false

View File

@ -32,10 +32,10 @@ const resolveIsDev = () => {
const IS_DEV = resolveIsDev()
const DEFAULT_SERVER_HOST = '192.168.0.106' // 服务器地址
const DEFAULT_SERVER_PORT = 8080 // 后端端口
const DEV_SERVER_HOST = '192.168.0.106' // 开发服务器地址
const DEV_SERVER_PORT = 8080
const DEFAULT_SERVER_HOST = '192.168.137.1' // 服务器地址
const DEFAULT_SERVER_PORT = 30091 // 后端端口
const DEV_SERVER_HOST = '192.168.137.1' // 开发服务器地址
const DEV_SERVER_PORT = 30091
const isH5 = typeof window !== 'undefined' && typeof document !== 'undefined'
// 本地存储的key
@ -104,10 +104,10 @@ const { serverHost, serverPort } = getServerConfig()
// API基础地址
let API_BASE_URL = `http://${serverHost}:${serverPort}`
// H5环境如果访问的是localhost/192.168.0.106,跟随当前主机
// H5环境如果访问的是localhost/192.168.137.1,跟随当前主机
if (typeof window !== 'undefined' && window.location) {
const hostname = window.location.hostname
if (hostname === 'localhost' || hostname === '192.168.0.106') {
if (hostname === 'localhost' || hostname === '192.168.137.1') {
API_BASE_URL = `http://${hostname}:${serverPort}`
}
}

View File

@ -51,7 +51,7 @@ class Request {
// H5环境如果访问的是localhost使用localhost通过Vite代理
if (typeof window !== 'undefined' && window.location) {
const hostname = window.location.hostname
if (hostname === 'localhost' || hostname === '192.168.0.106') {
if (hostname === 'localhost' || hostname === '192.168.137.1') {
// H5开发环境通过 Vite 代理 /api -> 本地后端
return '/api'
}
@ -60,10 +60,10 @@ class Request {
// #ifdef APP-PLUS
// App环境如果使用localhost给出提示
if (serverHost === 'localhost' || serverHost === '192.168.0.106') {
if (serverHost === 'localhost' || serverHost === '127.0.0.1') {
console.error('❌ App环境无法使用localhost请配置电脑的局域网IP地址')
console.error('❌ 配置方法uni.setStorageSync("server_host", "你的电脑IP")')
console.error('❌ 例如uni.setStorageSync("server_host", "192.168.0.106")')
console.error('❌ 例如uni.setStorageSync("server_host", "192.168.137.1")')
}
// #endif
@ -71,7 +71,7 @@ class Request {
} catch (error) {
console.error('获取baseURL失败:', error)
// 返回默认值
return 'http://192.168.0.106:30091'
return 'http://192.168.137.1:30091'
}
}

View File

@ -0,0 +1,136 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 国语教育平台 - 本地环境一键配置
echo IP地址: 192.168.137.1
echo ========================================
echo.
:: 检查管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
echo [错误] 请以管理员身份运行此脚本!
echo.
echo 右键点击此bat文件选择"以管理员身份运行"
pause
exit /b 1
)
echo [1/3] 创建文件存储目录...
echo.
:: 创建主目录
if not exist "D:\wwwroot\study_web\web\profile" (
mkdir "D:\wwwroot\study_web\web\profile"
echo ✓ 已创建: D:\wwwroot\study_web\web\profile
) else (
echo ○ 已存在: D:\wwwroot\study_web\web\profile
)
:: 创建upload目录
if not exist "D:\wwwroot\study_web\web\profile\upload" (
mkdir "D:\wwwroot\study_web\web\profile\upload"
echo ✓ 已创建: D:\wwwroot\study_web\web\profile\upload
) else (
echo ○ 已存在: D:\wwwroot\study_web\web\profile\upload
)
:: 创建子目录
if not exist "D:\wwwroot\study_web\web\profile\upload\courseware" (
mkdir "D:\wwwroot\study_web\web\profile\upload\courseware"
echo ✓ 已创建: courseware (课件目录)
) else (
echo ○ 已存在: courseware (课件目录)
)
if not exist "D:\wwwroot\study_web\web\profile\upload\voice" (
mkdir "D:\wwwroot\study_web\web\profile\upload\voice"
echo ✓ 已创建: voice (语音目录)
) else (
echo ○ 已存在: voice (语音目录)
)
if not exist "D:\wwwroot\study_web\web\profile\upload\screenshots" (
mkdir "D:\wwwroot\study_web\web\profile\upload\screenshots"
echo ✓ 已创建: screenshots (截图目录)
) else (
echo ○ 已存在: screenshots (截图目录)
)
if not exist "D:\wwwroot\study_web\web\profile\upload\avatar" (
mkdir "D:\wwwroot\study_web\web\profile\upload\avatar"
echo ✓ 已创建: avatar (头像目录)
) else (
echo ○ 已存在: avatar (头像目录)
)
echo.
echo [2/3] 配置Windows防火墙...
echo.
:: 检查防火墙规则是否已存在
netsh advfirewall firewall show rule name="国语教育平台后端 30091" >nul 2>&1
if %errorLevel% equ 0 (
echo ○ 防火墙规则已存在,跳过配置
) else (
:: 添加防火墙规则
netsh advfirewall firewall add rule name="国语教育平台后端 30091" dir=in action=allow protocol=tcp localport=30091 >nul 2>&1
if %errorLevel% equ 0 (
echo ✓ 已开放端口 30091
) else (
echo ✗ 开放端口失败,请手动配置防火墙
)
)
echo.
echo [3/3] 检查配置文件...
echo.
:: 获取脚本所在目录
set "SCRIPT_DIR=%~dp0"
:: 检查后端配置文件
if exist "%SCRIPT_DIR%Study-Vue-redis\ry-study-admin\src\main\resources\application.yml" (
echo ✓ 后端配置文件存在
echo 位置: Study-Vue-redis\ry-study-admin\src\main\resources\application.yml
) else (
echo ○ 后端配置文件检查失败(可能是路径问题,请手动确认)
)
:: 检查APP配置文件
if exist "%SCRIPT_DIR%fronted_uniapp\fronted_uniapp\src\utils\config.js" (
echo ✓ APP配置文件存在
echo 位置: fronted_uniapp\fronted_uniapp\src\utils\config.js
echo.
echo 【已自动配置】IP地址已设置为 192.168.137.1
) else (
echo ○ APP配置文件检查失败可能是路径问题请手动确认
echo 文件位置: fronted_uniapp\fronted_uniapp\src\utils\config.js
)
echo.
echo ========================================
echo 配置完成!
echo ========================================
echo.
echo 📁 文件存储位置: D:\wwwroot\study_web\web\profile\upload\
echo 🌐 后端访问地址: http://192.168.137.1:30091
echo 🔓 防火墙端口: 30091 (已开放)
echo.
echo 下一步操作:
echo.
echo 【如果防火墙配置失败,请手动配置】
echo 方法1: 重新以管理员身份运行本脚本
echo 方法2: 在PowerShell中执行以管理员身份
echo netsh advfirewall firewall add rule name="国语教育平台后端 30091" dir=in action=allow protocol=tcp localport=30091
echo.
echo 【启动和测试】
echo 1. APP配置已自动设置为 192.168.137.1
echo 2. 启动后端: cd Study-Vue-redis\ry-study-admin ^&^& mvn spring-boot:run
echo 3. 浏览器测试: http://192.168.137.1:30091
echo 4. 手机浏览器测试: http://192.168.137.1:30091 (确保同一WiFi)
echo 5. 编译运行APP到真机
echo.
echo 详细说明: 配置指南-192.168.137.1.md 和 快速参考-课件管理.md
echo.
pause

165
当前配置状态.md Normal file
View File

@ -0,0 +1,165 @@
# 配置状态总结
根据你刚才运行的配置脚本,当前状态如下:
## ✅ 已完成的配置
### 1. 文件存储目录 - 已创建
```
D:\wwwroot\study_web\web\profile\upload\
├── ✓ courseware\ (课件目录)
├── ✓ voice\ (语音目录)
├── ✓ screenshots\ (截图目录)
└── ✓ avatar\ (头像目录)
```
### 2. APP服务器地址 - 已配置
- **IP地址**: `192.168.137.1`
- **配置文件**: `fronted_uniapp\fronted_uniapp\src\utils\config.js`
- **状态**: ✅ 已自动修改为 192.168.137.1
---
## ⚠️ 需要手动处理的配置
### 防火墙配置 - 需要以管理员身份运行
**问题**: 防火墙端口30091配置失败
**解决方法(任选一种)**:
#### 方法1: 使用PowerShell脚本推荐
1. 找到文件: `配置防火墙.ps1`
2. 右键点击 → 选择"**以管理员身份运行**"
3. 按提示完成配置
#### 方法2: 手动运行命令
1. 按 `Win + X`,选择"**Windows PowerShell (管理员)**"
2. 执行以下命令:
```powershell
New-NetFirewallRule -DisplayName "国语教育平台后端 30091" -Direction Inbound -Protocol TCP -LocalPort 30091 -Action Allow
```
#### 方法3: 通过图形界面
1. 打开 **控制面板****Windows Defender 防火墙** → **高级设置**
2. 点击左侧 **入站规则** → 右侧 **新建规则**
3. 选择 **端口** → 下一步
4. 选择 **TCP**,特定本地端口输入: `30091` → 下一步
5. 选择 **允许连接** → 下一步
6. 全选(域、专用、公用)→ 下一步
7. 名称输入: `国语教育平台后端 30091` → 完成
---
## 🚀 下一步操作
### 第1步: 配置防火墙
使用上面的任一方法配置防火墙
### 第2步: 启动后端服务
```powershell
cd D:\Desktop\Project\ry_study-v_03\ry_study-v_03\Study-Vue-redis\ry-study-admin
mvn spring-boot:run
```
或者如果已经打包成jar
```powershell
java -jar target\ry-study-admin.jar
```
### 第3步: 测试后端访问
#### 本机测试:
在浏览器访问: `http://192.168.137.1:30091`
应该看到若依管理系统的登录页面。
#### 手机测试:
1. 确保手机和电脑连接**同一个WiFi**
2. 在手机浏览器访问: `http://192.168.137.1:30091`
3. 如果能打开登录页面,说明网络配置正确
### 第4步: 运行APP
1. 在HBuilderX中打开项目: `fronted_uniapp\fronted_uniapp`
2. 运行到真机或模拟器
3. 登录测试
---
## 🧪 验证配置是否成功
运行测试脚本检查所有配置:
```
双击运行: 测试配置.bat
```
---
## 📋 配置检查清单
使用前请确认以下项目:
- [x] **文件夹已创建**: `D:\wwwroot\study_web\web\profile\upload\`
- [ ] **防火墙已配置**: 端口30091已开放
- [ ] **后端服务已启动**: 监听 0.0.0.0:30091
- [ ] **本机测试通过**: `http://192.168.137.1:30091` 可访问
- [ ] **手机测试通过**: 手机浏览器可访问
- [x] **APP配置已更新**: IP地址为 192.168.137.1
- [ ] **APP编译运行**: 真机测试成功
---
## ❓ 常见问题
### Q: 为什么防火墙配置失败?
**A**: 需要以管理员身份运行脚本。请使用 `配置防火墙.ps1` 并右键选择"以管理员身份运行"。
### Q: 如何确认防火墙是否配置成功?
**A**:
1. 打开 控制面板 → Windows Defender 防火墙 → 高级设置
2. 查看 入站规则,找到"国语教育平台后端 30091"
3. 确认状态为"已启用"
或者运行 `测试配置.bat` 自动检查。
### Q: 手机无法访问后端怎么办?
**A**: 检查以下几点:
1. 手机和电脑在同一WiFi网络
2. 防火墙已正确配置
3. 后端服务正在运行
4. 电脑IP确实是 192.168.137.1(可能会变化)
确认IP地址
```powershell
ipconfig | findstr "IPv4"
```
### Q: 如何验证后端是否正常运行?
**A**: 后端启动后,应该能看到类似输出:
```
Started RuoYiApplication in X.XXX seconds
```
访问 `http://192.168.137.1:30091` 应该显示登录页面。
---
## 📞 技术支持文档
- **完整配置指南**: `配置指南-192.168.137.1.md`
- **快速参考手册**: `快速参考-课件管理.md`
- **视频播放配置**: `log\视频播放配置指南.md`
---
## 🎯 总结
**当前进度**: 60%
- ✅ 文件夹创建完成
- ✅ APP配置完成
- ⚠️ 防火墙需要手动配置
- ⏳ 后端服务等待启动
- ⏳ 测试验证待完成
**立即行动**: 运行 `配置防火墙.ps1`(以管理员身份)完成防火墙配置!

View File

@ -0,0 +1,243 @@
# 课件管理和视频播放 - 快速参考
## 🎯 你的配置信息
| 项目 | 值 |
|------|-----|
| **本机IP地址** | `192.168.137.1` |
| **后端端口** | `30091` |
| **后端访问地址** | `http://192.168.137.1:30091` |
| **文件存储路径** | `D:\wwwroot\study_web\web\profile\upload\` |
---
## 📂 文件夹结构
```
D:\wwwroot\study_web\web\profile\upload\
├── courseware\ # 课件文件(视频、文档等)
├── voice\ # 语音评测录音
├── screenshots\ # 屏幕监控截图
└── avatar\ # 用户头像
```
**创建命令**:右键以管理员身份运行 `一键配置本地环境.bat`
---
## 🚀 快速启动流程
### 1. 配置环境(首次使用)
```powershell
# 右键以管理员身份运行
一键配置本地环境.bat
```
### 2. 启动后端服务
```powershell
cd Study-Vue-redis\ry-study-admin
mvn spring-boot:run
```
### 3. 测试后端是否启动成功
浏览器访问: `http://192.168.137.1:30091`
### 4. 编译运行APP
在HBuilderX中打开 `fronted_uniapp\fronted_uniapp` 项目,运行到真机
---
## 📚 课件管理功能
### 后台管理系统操作
#### 1. 上传课件
1. 登录后台: `http://192.168.137.1:30091``http://localhost:30091`
2. 进入【教学管理】→【课件管理】
3. 点击【新增课件】
4. 填写信息:
- **课件名称**: 如"第一课:拼音学习"
- **所属课程**: 选择对应课程
- **课件类型**: 视频/文档/音频
- **课件文件**: 点击上传按钮
- **排序号**: 控制显示顺序(数字越小越靠前)
5. 点击【确定】提交
#### 2. 文件上传限制
- **最大文件大小**: 2GB
- **支持的视频格式**: MP4, AVI, MKV, FLV推荐MP4
- **支持的文档格式**: PDF, PPT, PPTX, DOC, DOCX
- **支持的音频格式**: MP3, WAV, M4A
#### 3. 课件管理
- **查看列表**: 教学管理 → 课件管理
- **编辑课件**: 点击【修改】按钮
- **删除课件**: 点击【删除】按钮(会同时删除文件)
- **按课程筛选**: 使用课程下拉框筛选
### APP端使用
#### 1. 查看课件
1. 登录APP
2. 进入【课程学习】
3. 选择课程
4. 查看课件列表
#### 2. 播放视频
- 点击视频课件即可播放
- 支持暂停、快进、调节音量
- 自动记录学习进度
---
## 🎥 视频文件路径说明
### 路径映射关系
| 类型 | 示例 |
|------|------|
| **数据库存储** | `/profile/upload/2025/12/05/abc123.mp4` |
| **物理路径** | `D:\wwwroot\study_web\web\profile\upload\2025\12\05\abc123.mp4` |
| **APP访问URL** | `http://192.168.137.1:30091/profile/upload/2025/12/05/abc123.mp4` |
| **后台管理访问** | `http://192.168.137.1:30091/profile/upload/2025/12/05/abc123.mp4` |
### 访问流程
```
用户请求视频
http://192.168.137.1:30091/profile/upload/2025/12/05/video.mp4
Spring Boot (ResourcesConfig.java)
映射到: D:\wwwroot\study_web\web\profile\upload\2025\12\05\video.mp4
返回视频文件流
浏览器/APP播放器播放
```
---
## 🔧 常用API接口
### 1. 文件上传
```http
POST http://192.168.137.1:30091/common/upload
Content-Type: multipart/form-data
file: [文件对象]
```
**返回示例**:
```json
{
"code": 200,
"msg": "操作成功",
"fileName": "/profile/upload/2025/12/05/abc123.mp4",
"url": "http://192.168.137.1:30091/profile/upload/2025/12/05/abc123.mp4"
}
```
### 2. 课件管理API
| 功能 | 方法 | URL |
|------|------|-----|
| 获取课件列表 | GET | `/study/courseware/list` |
| 获取课件详情 | GET | `/study/courseware/{id}` |
| 新增课件 | POST | `/study/courseware` |
| 修改课件 | PUT | `/study/courseware` |
| 删除课件 | DELETE | `/study/courseware/{id}` |
| APP端获取课件 | GET | `/study/courseware/app/list?courseId=xxx` |
---
## ❓ 常见问题
### Q1: APP无法连接后端
**检查清单**:
- [ ] 手机和电脑在同一WiFi网络
- [ ] 防火墙已开放30091端口运行`测试配置.bat`检查)
- [ ] 后端服务已启动
- [ ] APP配置的IP是 `192.168.137.1`
**快速测试**:
在手机浏览器访问 `http://192.168.137.1:30091`,如果能打开登录页面,说明网络通畅。
### Q2: 视频无法播放?
**检查清单**:
- [ ] 视频文件确实存在于 `D:\wwwroot\study_web\web\profile\upload\` 目录
- [ ] 视频格式为MP4其他格式可能不兼容
- [ ] 在浏览器中直接访问视频URL测试
- [ ] 文件权限正确(右键 → 属性 → 安全)
**测试方法**:
1. 找到视频在数据库中的路径,如 `/profile/upload/2025/12/05/test.mp4`
2. 在浏览器访问: `http://192.168.137.1:30091/profile/upload/2025/12/05/test.mp4`
3. 如果能播放,说明服务器配置正确
### Q3: 上传课件失败?
**可能原因**:
1. 文件太大超过2GB限制
2. 目标文件夹不存在或无写权限
3. 磁盘空间不足
**解决方法**:
1. 检查文件大小
2. 运行 `一键配置本地环境.bat` 重新创建文件夹
3. 检查D盘剩余空间
### Q4: 如何修改IP地址
**如果你的电脑IP变化了**:
1. 修改APP配置文件
- 文件: `fronted_uniapp\fronted_uniapp\src\utils\config.js`
- 第17行: `const DEFAULT_SERVER_HOST = '新的IP地址'`
- 第19行: `const DEV_SERVER_HOST = '新的IP地址'`
2. 重新编译APP
3. 或者在APP设置中动态配置如果实现了设置页面
---
## 🔐 安全提示
1. **开发环境**: 当前配置适用于局域网开发测试
2. **生产部署**: 需要修改为公网IP或域名
3. **防火墙**: 生产环境建议配置更严格的防火墙规则
4. **文件大小**: 根据实际需求调整上传限制
5. **备份**: 定期备份 `D:\wwwroot\study_web\web\profile\` 目录
---
## 📞 文件位置速查
| 文件 | 位置 |
|------|------|
| 后端配置 | `Study-Vue-redis\ry-study-admin\src\main\resources\application.yml` |
| APP配置 | `fronted_uniapp\fronted_uniapp\src\utils\config.js` |
| 课件控制器 | `Study-Vue-redis\ry-study-admin\src\main\java\com\ddnai\web\controller\study\StudyCoursewareController.java` |
| 文件上传工具 | `Study-Vue-redis\ry-study-common\src\main\java\com\ddnai\common\utils\file\FileUploadUtils.java` |
| 资源配置 | `Study-Vue-redis\ry-study-admin\src\main\java\com\ddnai\framework\config\ResourcesConfig.java` |
---
## 📝 测试检查单
使用前请完成以下检查:
- [ ] 运行 `一键配置本地环境.bat` (以管理员身份)
- [ ] 运行 `测试配置.bat` 验证配置
- [ ] 启动后端服务
- [ ] 浏览器访问 `http://192.168.137.1:30091` 测试
- [ ] 手机浏览器访问测试手机连接同一WiFi
- [ ] 编译运行APP到真机
- [ ] 上传一个测试视频课件
- [ ] 在APP中播放测试视频
全部通过后,系统即可正常使用!

23
测试学习进度API.bat Normal file
View File

@ -0,0 +1,23 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 测试学习进度API
echo ========================================
echo.
echo 1. 查询学习记录表中的进度:
mysql -u root -proot -e "USE study; SELECT lr.id, lr.student_id, c.course_name AS 课程, lr.progress AS 进度百分比, lr.learn_count AS 学习次数, lr.last_learn_time AS 最后学习 FROM learning_record lr LEFT JOIN course c ON lr.course_id = c.id WHERE c.course_name LIKE '%%古诗%%' ORDER BY lr.last_learn_time DESC LIMIT 5;"
echo.
echo 2. 查询课程课件数量:
mysql -u root -proot -e "USE study; SELECT c.id, c.course_name AS 课程, COUNT(cw.id) AS 课件总数 FROM course c LEFT JOIN courseware cw ON c.id = cw.course_id WHERE c.course_name LIKE '%%古诗%%' GROUP BY c.id;"
echo.
echo 3. 查询学生完成情况:
mysql -u root -proot -e "USE study; SELECT ld.student_id AS 学生ID, COUNT(DISTINCT ld.courseware_id) AS 已学课件数 FROM learning_detail ld WHERE ld.course_id = 1 AND ld.student_id IN (120, 452) GROUP BY ld.student_id;"
echo.
echo ========================================
echo 测试完成
echo ========================================
pause

126
测试配置.bat Normal file
View File

@ -0,0 +1,126 @@
@echo off
chcp 65001 >nul
echo ========================================
echo 配置测试工具
echo IP地址: 192.168.137.1
echo ========================================
echo.
echo [1] 检查文件夹是否存在...
echo.
set "PROFILE_PATH=D:\wwwroot\study_web\web\profile"
set "UPLOAD_PATH=%PROFILE_PATH%\upload"
if exist "%PROFILE_PATH%" (
echo ✓ 主目录存在: %PROFILE_PATH%
) else (
echo ✗ 主目录不存在: %PROFILE_PATH%
echo 请先运行"一键配置本地环境.bat"
)
if exist "%UPLOAD_PATH%\courseware" (
echo ✓ 课件目录存在: %UPLOAD_PATH%\courseware
) else (
echo ✗ 课件目录不存在
)
if exist "%UPLOAD_PATH%\voice" (
echo ✓ 语音目录存在: %UPLOAD_PATH%\voice
) else (
echo ✗ 语音目录不存在
)
if exist "%UPLOAD_PATH%\screenshots" (
echo ✓ 截图目录存在: %UPLOAD_PATH%\screenshots
) else (
echo ✗ 截图目录不存在
)
if exist "%UPLOAD_PATH%\avatar" (
echo ✓ 头像目录存在: %UPLOAD_PATH%\avatar
) else (
echo ✗ 头像目录不存在
)
echo.
echo [2] 检查防火墙规则...
echo.
netsh advfirewall firewall show rule name="国语教育平台后端 30091" >nul 2>&1
if %errorLevel% equ 0 (
echo ✓ 防火墙规则已配置
netsh advfirewall firewall show rule name="国语教育平台后端 30091" | findstr /C:"LocalPort" /C:"Action"
) else (
echo ✗ 防火墙规则未配置
echo 请以管理员身份运行"一键配置本地环境.bat"
)
echo.
echo [3] 检查端口占用...
echo.
netstat -ano | findstr ":30091" >nul 2>&1
if %errorLevel% equ 0 (
echo ✓ 端口30091已被占用后端服务可能正在运行
echo.
echo 占用端口的进程:
netstat -ano | findstr ":30091"
) else (
echo ○ 端口30091未被占用后端服务未启动
echo 启动命令: cd Study-Vue-redis\ry-study-admin ^&^& mvn spring-boot:run
)
echo.
echo [4] 检查本机IP地址...
echo.
ipconfig | findstr /C:"IPv4" | findstr "192.168"
if %errorLevel% equ 0 (
echo.
echo ⚠️ 请确认你的电脑IP地址是否为 192.168.137.1
echo 如果不是请修改APP配置文件中的IP地址
) else (
echo ○ 未检测到192.168网段的IP
)
echo.
echo [5] 检查APP配置文件...
echo.
set "APP_CONFIG=fronted_uniapp\fronted_uniapp\src\utils\config.js"
if exist "%APP_CONFIG%" (
echo ✓ APP配置文件存在
findstr "192.168.137.1" "%APP_CONFIG%" >nul 2>&1
if %errorLevel% equ 0 (
echo ✓ 已配置IP地址: 192.168.137.1
) else (
echo ✗ 未配置IP地址192.168.137.1,请检查配置文件
)
) else (
echo ✗ APP配置文件不存在
)
echo.
echo ========================================
echo 测试完成
echo ========================================
echo.
echo 建议的测试步骤:
echo.
echo 1. 如果文件夹或防火墙配置有问题:
echo 以管理员身份运行"一键配置本地环境.bat"
echo.
echo 2. 启动后端服务:
echo cd Study-Vue-redis\ry-study-admin
echo mvn spring-boot:run
echo.
echo 3. 在浏览器中测试后端:
echo http://192.168.137.1:30091
echo.
echo 4. 在手机浏览器中测试确保手机和电脑在同一WiFi
echo http://192.168.137.1:30091
echo.
echo 5. 编译并运行APP到真机测试
echo.
pause

View File

@ -0,0 +1,343 @@
# 国语教育平台配置指南
## 本机IP: 192.168.137.1
---
## 📁 一、本地电脑需要创建的文件夹
根据后端配置文件 `application.yml` 中的设置:
```yaml
ruoyi:
profile: D:\wwwroot\study_web\web\profile
```
### 需要创建的完整目录结构:
```
D:\
└── wwwroot\
└── study_web\
└── web\
└── profile\
└── upload\
├── courseware\ # 课件文件(视频、文档等)
├── voice\ # 语音评测音频文件
├── screenshots\ # 屏幕监控截图
└── avatar\ # 用户头像
```
### Windows PowerShell 创建命令:
```powershell
# 以管理员身份运行PowerShell执行以下命令
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\courseware" -ItemType Directory -Force
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\voice" -ItemType Directory -Force
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\screenshots" -ItemType Directory -Force
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\avatar" -ItemType Directory -Force
```
**说明:**
- `courseware` - 存放课件文件视频、PDF、PPT等
- `voice` - 存放语音评测的录音文件
- `screenshots` - 存放学习监控的屏幕截图
- `avatar` - 存放用户头像图片
---
## 🔧 二、后端配置Spring Boot
### 1. 后端服务器地址配置
**文件**: `Study-Vue-redis\ry-study-admin\src\main\resources\application.yml`
**当前配置**:
```yaml
server:
port: 30091
ruoyi:
profile: D:\wwwroot\study_web\web\profile
```
**重要**: 确保后端监听所有网络接口,而不仅仅是 localhost。
如果你需要让手机APP访问需要确保后端配置为
```yaml
server:
port: 30091
address: 0.0.0.0 # 监听所有网络接口
```
### 2. 开放防火墙端口
**Windows防火墙配置** - 必须执行!
```powershell
# 以管理员身份运行PowerShell
netsh advfirewall firewall add rule name="国语教育平台后端 30091" dir=in action=allow protocol=tcp localport=30091
```
或者通过图形界面:
1. 控制面板 → Windows Defender 防火墙 → 高级设置
2. 入站规则 → 新建规则
3. 端口 → TCP → 特定本地端口: `30091`
4. 允许连接 → 完成
### 3. 启动后端服务
```powershell
cd D:\Desktop\Project\ry_study-v_03\ry_study-v_03\Study-Vue-redis\ry-study-admin
# 使用Maven启动
mvn spring-boot:run
# 或者如果已经打包成jar
java -jar target/ry-study-admin.jar
```
---
## 📱 三、移动端APP配置
### 1. 修改APP的服务器地址配置
**文件**: `fronted_uniapp\fronted_uniapp\src\utils\config.js`
**需要修改的内容**:
```javascript
// 第17行修改默认服务器地址为你的电脑IP
const DEFAULT_SERVER_HOST = '192.168.137.1' // ← 修改这里
// 第18行确认端口号
const DEFAULT_SERVER_PORT = 30091
```
### 2. 验证配置
修改后APP将访问
- **API地址**: `http://192.168.137.1:30091`
- **文件访问地址**: `http://192.168.137.1:30091/profile/...`
---
## 🎥 四、课件管理和视频播放说明
### 1. 课件文件存储路径
当你通过后台管理系统上传课件时:
**存储规则**:
- 数据库存储的路径: `/profile/upload/2025/12/05/课件名称.mp4`
- 实际物理路径: `D:\wwwroot\study_web\web\profile\upload\2025\12\05\课件名称.mp4`
### 2. 课件管理功能使用流程
#### 后台管理系统操作:
1. **登录后台管理系统**
- 访问地址: `http://localhost:20002` (本地开发)
- 或: `http://192.168.137.1:30091` (直接访问后端)
2. **上传课件**
- 进入"教学管理" → "课件管理"
- 点击"新增课件"
- 选择课程、填写课件信息
- 上传视频/文档文件
- 系统会自动保存到 `D:\wwwroot\study_web\web\profile\upload\` 目录
3. **课件列表管理**
- 可以查看、编辑、删除课件
- 支持按课程筛选
- 支持课件排序
#### APP端使用
1. **查看课件列表**
- 登录APP后进入课程详情
- 可以看到该课程的所有课件列表
2. **播放视频课件**
- 点击课件即可播放
- 视频URL: `http://192.168.137.1:30091/profile/upload/2025/12/05/xxx.mp4`
### 3. 视频播放访问流程
```
APP发起请求
http://192.168.137.1:30091/profile/upload/2025/12/05/video.mp4
Spring Boot接收请求 (ResourcesConfig.java)
映射到物理路径: D:\wwwroot\study_web\web\profile\upload\2025\12\05\video.mp4
返回视频文件流给APP
APP播放器播放视频
```
---
## 🧪 五、测试连接是否正常
### 1. 测试后端服务是否启动
在浏览器中访问:
```
http://192.168.137.1:30091
```
应该看到若依管理系统的登录页面。
### 2. 测试文件访问是否正常
假设你已经上传了一个测试视频,可以在浏览器中直接访问:
```
http://192.168.137.1:30091/profile/upload/2025/12/05/test.mp4
```
如果能播放或下载,说明配置正确。
### 3. 测试APP连接
在APP中
1. 打开控制台/日志
2. 查看请求地址是否为: `http://192.168.137.1:30091/...`
3. 尝试登录和访问课件
4. 检查是否有网络错误
---
## ⚠️ 六、常见问题排查
### 问题1: APP无法连接后端
**检查清单**:
- [ ] 手机和电脑在同一WiFi网络
- [ ] 防火墙已开放30091端口
- [ ] 后端服务已启动
- [ ] APP配置的IP地址正确 (192.168.137.1)
**测试方法**:
在手机浏览器访问: `http://192.168.137.1:30091`
### 问题2: 视频无法播放
**检查清单**:
- [ ] 文件夹权限正确建议Everyone完全控制
- [ ] 视频文件确实存在于指定路径
- [ ] 视频格式APP支持推荐MP4
- [ ] 文件路径没有中文或特殊字符
**测试方法**:
1. 在Windows资源管理器中找到视频文件
2. 直接双击播放确认文件完好
3. 在浏览器中访问视频URL测试
### 问题3: 上传课件失败
**检查清单**:
- [ ] 文件大小不超过2GB (application.yml配置)
- [ ] 目标文件夹存在且可写
- [ ] 磁盘空间充足
---
## 🚀 七、快速启动步骤
### 第1步创建文件夹
```powershell
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\courseware" -ItemType Directory -Force
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\voice" -ItemType Directory -Force
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\screenshots" -ItemType Directory -Force
New-Item -Path "D:\wwwroot\study_web\web\profile\upload\avatar" -ItemType Directory -Force
```
### 第2步开放防火墙
```powershell
netsh advfirewall firewall add rule name="国语教育平台后端 30091" dir=in action=allow protocol=tcp localport=30091
```
### 第3步修改APP配置
编辑: `fronted_uniapp\fronted_uniapp\src\utils\config.js`
```javascript
const DEFAULT_SERVER_HOST = '192.168.137.1' // 修改为你的IP
```
### 第4步启动后端
```powershell
cd Study-Vue-redis\ry-study-admin
mvn spring-boot:run
```
### 第5步测试访问
浏览器访问: `http://192.168.137.1:30091`
### 第6步编译和运行APP
在HBuilderX中运行APP到真机或模拟器
---
## 📝 八、文件上传API说明
### 通用文件上传接口
**接口地址**: `POST /common/upload`
**请求方式**: `multipart/form-data`
**请求参数**:
- `file`: 文件对象
**返回示例**:
```json
{
"code": 200,
"msg": "操作成功",
"fileName": "/profile/upload/2025/12/05/abc123.mp4",
"newFileName": "abc123.mp4",
"originalFilename": "课程视频.mp4",
"url": "http://192.168.137.1:30091/profile/upload/2025/12/05/abc123.mp4"
}
```
### 课件管理API
**获取课件列表**: `GET /study/courseware/list`
**新增课件**: `POST /study/courseware`
**修改课件**: `PUT /study/courseware`
**删除课件**: `DELETE /study/courseware/{id}`
---
## 🔐 九、安全建议
1. **生产环境**: 修改 `application.yml` 中的 `token.secret` 为随机32位字符串
2. **Swagger**: 生产环境设置 `swagger.enabled: false`
3. **防火墙**: 仅开放必要端口
4. **文件上传**: 设置合理的文件大小限制
5. **备份**: 定期备份 `D:\wwwroot\study_web\web\profile` 目录
---
## 📞 附录:关键配置文件位置
```
项目根目录/
├── Study-Vue-redis/
│ └── ry-study-admin/
│ └── src/main/resources/
│ └── application.yml # 后端主配置
└── fronted_uniapp/
└── fronted_uniapp/
└── src/utils/
└── config.js # APP服务器地址配置
```
---
**配置完成后,你就可以**:
✅ 在后台管理系统上传和管理课件
✅ APP端访问和播放视频课件
✅ 语音评测功能正常使用
✅ 屏幕监控功能正常使用

102
配置防火墙.ps1 Normal file
View File

@ -0,0 +1,102 @@
# 国语教育平台 - 防火墙配置脚本
# 请右键点击,选择"使用PowerShell运行"
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " 国语教育平台 - 防火墙配置" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
# 检查管理员权限
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "[错误] 请以管理员身份运行此脚本!" -ForegroundColor Red
Write-Host ""
Write-Host "右键点击此文件,选择'以管理员身份运行'" -ForegroundColor Yellow
Write-Host ""
Read-Host "按Enter键退出"
exit 1
}
Write-Host "[1/2] 检查现有防火墙规则..." -ForegroundColor Green
Write-Host ""
# 检查规则是否存在
$existingRule = Get-NetFirewallRule -DisplayName "国语教育平台后端 30091" -ErrorAction SilentlyContinue
if ($existingRule) {
Write-Host "○ 防火墙规则已存在" -ForegroundColor Yellow
Write-Host ""
$confirm = Read-Host "是否删除并重新创建?(y/n)"
if ($confirm -eq 'y' -or $confirm -eq 'Y') {
Remove-NetFirewallRule -DisplayName "国语教育平台后端 30091" -ErrorAction SilentlyContinue
Write-Host "✓ 已删除旧规则" -ForegroundColor Green
} else {
Write-Host "保持现有规则" -ForegroundColor Yellow
Write-Host ""
Read-Host "按Enter键退出"
exit 0
}
}
Write-Host ""
Write-Host "[2/2] 创建防火墙规则..." -ForegroundColor Green
Write-Host ""
try {
# 创建入站规则
New-NetFirewallRule `
-DisplayName "国语教育平台后端 30091" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 30091 `
-Action Allow `
-Profile Any `
-Description "允许访问国语教育平台后端服务端口30091" `
-ErrorAction Stop | Out-Null
Write-Host "✓ 防火墙规则创建成功!" -ForegroundColor Green
Write-Host ""
Write-Host "规则详情:" -ForegroundColor Cyan
Write-Host " - 名称: 国语教育平台后端 30091"
Write-Host " - 方向: 入站"
Write-Host " - 协议: TCP"
Write-Host " - 端口: 30091"
Write-Host " - 操作: 允许"
Write-Host " - 配置文件: 所有"
Write-Host ""
# 验证规则
$rule = Get-NetFirewallRule -DisplayName "国语教育平台后端 30091"
if ($rule.Enabled -eq $true) {
Write-Host "✓ 规则已启用" -ForegroundColor Green
}
} catch {
Write-Host "✗ 防火墙规则创建失败!" -ForegroundColor Red
Write-Host "错误信息: $($_.Exception.Message)" -ForegroundColor Red
Write-Host ""
Write-Host "请尝试手动配置:" -ForegroundColor Yellow
Write-Host "1. 打开 控制面板 -> Windows Defender 防火墙 -> 高级设置"
Write-Host "2. 点击 入站规则 -> 新建规则"
Write-Host "3. 选择 端口 -> TCP -> 特定本地端口: 30091"
Write-Host "4. 允许连接 -> 完成"
Write-Host ""
Read-Host "按Enter键退出"
exit 1
}
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " 配置完成!" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "后端服务访问地址: http://192.168.137.1:30091" -ForegroundColor Green
Write-Host ""
Write-Host "下一步:" -ForegroundColor Yellow
Write-Host " 1. 启动后端服务"
Write-Host " 2. 在浏览器测试: http://192.168.137.1:30091"
Write-Host " 3. 在手机浏览器测试确保同一WiFi"
Write-Host ""
Read-Host "按Enter键退出"