更改地址,适配小张电脑地址
This commit is contained in:
parent
5d7dae4466
commit
3fe0be6357
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
# 从数据源开关/默认关闭
|
||||
|
|
|
|||
150
fronted_uniapp/IP地址配置更新说明.md
Normal file
150
fronted_uniapp/IP地址配置更新说明.md
Normal 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 作为后端服务器地址。**
|
||||
|
|
@ -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,
|
||||
|
||||
// 其他配置
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
||||
// 其他配置
|
||||
|
|
|
|||
|
|
@ -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}`
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ class ScreenStreamClient {
|
|||
|
||||
// 如果仍然没有配置,使用默认值
|
||||
if (!serverHost) {
|
||||
serverHost = '192.168.0.106' // 默认服务器地址
|
||||
serverHost = '192.168.137.1' // 默认服务器地址
|
||||
console.warn('⚠️ 未配置服务器地址,使用默认值:', serverHost)
|
||||
}
|
||||
if (!serverPort) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}`
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
136
一键配置本地环境.bat
Normal file
136
一键配置本地环境.bat
Normal 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
165
当前配置状态.md
Normal 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`(以管理员身份)完成防火墙配置!
|
||||
243
快速参考-课件管理.md
Normal file
243
快速参考-课件管理.md
Normal 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
23
测试学习进度API.bat
Normal 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
126
测试配置.bat
Normal 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
|
||||
343
配置指南-192.168.137.1.md
Normal file
343
配置指南-192.168.137.1.md
Normal 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
102
配置防火墙.ps1
Normal 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键退出"
|
||||
Loading…
Reference in New Issue
Block a user