Files
ruoyi-java/doc/公开订单提交-快速部署指南.md
2025-10-21 23:37:01 +08:00

280 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 公开订单提交功能 - 快速部署指南
## 一、功能说明
本功能提供一个公开的订单提交页面,特点如下:
**无需登录** - 直接访问即可使用
**接口限流** - 每IP每分钟最多3次请求
**详细日志** - 记录所有请求的完整信息
**安全保护** - 只允许提交订单,拒绝其他指令
**简化界面** - 去掉历史记录,只保留核心功能
## 二、新增文件清单
### 前端文件
```
d:\code\ruoyi-vue\src\views\public\order-submit\index.vue # 公开订单提交页面
d:\code\ruoyi-vue\src\api\public\order.js # API接口文件
```
### 后端文件
```
d:\code\RuoYi-Vue-master\ruoyi-java\ruoyi-admin\src\main\java\com\ruoyi\web\controller\public_\PublicOrderController.java # 公开控制器
```
### 文档文件
```
d:\code\RuoYi-Vue-master\ruoyi-java\doc\公开订单提交功能说明.md
d:\code\RuoYi-Vue-master\ruoyi-java\doc\公开订单提交-快速部署指南.md
```
## 三、修改文件清单
### 前端修改
```
d:\code\ruoyi-vue\src\router\index.js
```
**修改内容**:添加公开订单提交页面路由(无需登录)
### 后端修改
```
d:\code\RuoYi-Vue-master\ruoyi-java\ruoyi-framework\src\main\java\com\ruoyi\framework\config\SecurityConfig.java
```
**修改内容**:添加 `/public/**` 路径到公开访问白名单
## 四、部署步骤
### 步骤1后端部署
#### 1.1 编译项目
```bash
cd d:\code\RuoYi-Vue-master\ruoyi-java
mvn clean package -DskipTests
```
#### 1.2 重启后端服务
```bash
# Windows
ry.bat
# Linux
./ry.sh
```
#### 1.3 验证后端
检查日志,确保启动成功,无报错。
### 步骤2前端部署
#### 2.1 安装依赖(如果需要)
```bash
cd d:\code\ruoyi-vue
npm install
```
#### 2.2 开发环境运行
```bash
npm run dev
```
#### 2.3 生产环境构建
```bash
npm run build:prod
```
#### 2.4 部署到Web服务器
`dist` 目录的内容部署到Nginx或其他Web服务器。
### 步骤3验证部署
#### 3.1 访问页面
打开浏览器,访问:
```
http://localhost/public/order-submit
```
#### 3.2 提交测试订单
在页面中输入以下测试数据:
```
单:
2025-01-21 001
备注:测试订单
分销标记H-TF
型号ZQD180F-EB200
链接https://item.jd.com/123456.html
下单付款1650
后返金额50
地址张三13800138000上海市浦东新区张江高科技园区
物流链接https://test.com
订单号1234567890
下单人:张三
```
#### 3.3 查看响应
页面应显示提交成功的响应信息。
#### 3.4 检查日志
查看后端日志文件,应看到类似以下内容:
```
======================================
公开订单提交 - 开始
客户端IP: 127.0.0.1
User-Agent: Mozilla/5.0...
请求时间: 2025-01-21 10:00:00
...
公开订单提交 - 结束(成功)
======================================
```
#### 3.5 测试限流
快速提交4次订单第4次应该被拒绝提示"访问过于频繁"。
## 五、访问地址
### 开发环境
```
前端页面http://localhost:80/public/order-submit
后端接口http://localhost:8080/public/order/submit
```
### 生产环境
```
前端页面http://your-domain.com/public/order-submit
后端接口http://your-domain.com/api/public/order/submit
```
## 六、配置说明
### 限流配置
如需修改限流策略,编辑 `PublicOrderController.java`
```java
@RateLimiter(
key = CacheConstants.RATE_LIMIT_KEY,
time = 60, // 时间窗口(秒),可修改
count = 3, // 允许次数,可修改
limitType = LimitType.IP
)
```
修改后重新编译部署:
```bash
mvn clean package -DskipTests
```
### 日志配置
如需调整日志级别,编辑 `logback.xml`
```xml
<!-- 设置公开订单控制器的日志级别 -->
<logger name="com.ruoyi.web.controller.public_" level="INFO"/>
```
## 七、安全建议
### 1. 启用HTTPS
生产环境务必启用HTTPS保护数据传输安全。
### 2. 配置防火墙
只开放必要的端口80/443
### 3. 监控异常
设置告警规则,监控以下情况:
- 错误率异常升高
- 限流触发频繁
- 可疑IP地址
### 4. 定期备份
定期备份订单数据和日志文件。
### 5. IP黑名单
如发现恶意IP可在 `SecurityConfig.java` 中添加黑名单规则。
## 八、常见问题
### Q1: 页面404怎么办
**检查清单**
- [ ] 前端路由配置是否正确
- [ ] 后端安全配置是否添加 `/public/**`
- [ ] 前端是否正确构建和部署
- [ ] Web服务器配置是否正确
### Q2: 接口403/401怎么办
**解决方法**
1. 检查 `SecurityConfig.java` 是否添加了 `.antMatchers("/public/**").permitAll()`
2. 重新编译部署后端
3. 清除浏览器缓存重试
### Q3: 限流不生效怎么办?
**检查清单**
- [ ] Redis服务是否正常运行
- [ ] 后端是否正确连接Redis
- [ ] `@RateLimiter` 注解是否正确配置
### Q4: 日志没有记录怎么办?
**解决方法**
1. 检查 `logback.xml` 日志级别配置
2. 确认日志文件路径是否正确
3. 检查文件写入权限
### Q5: 提交后无响应怎么办?
**排查步骤**
1. 打开浏览器开发者工具,查看网络请求
2. 检查后端日志是否有报错
3. 检查订单格式是否正确
4. 确认所有必填字段是否填写
## 九、分享链接
部署成功后,可以将以下链接分享给需要提交订单的用户:
```
http://your-domain.com/public/order-submit
```
建议同时提供:
1. 订单格式说明
2. 必填字段列表
3. 示例订单数据
4. 联系方式(遇到问题时)
## 十、监控仪表板
建议设置监控指标:
### 关键指标
- **请求总数**:每日/每小时提交次数
- **成功率**:提交成功的比例
- **平均响应时间**:接口响应速度
- **限流触发次数**:被限流的请求数量
- **Top IP**请求最多的IP地址
### 告警规则
- 错误率 > 5% → 发送告警
- 平均响应时间 > 3秒 → 发送告警
- 单IP限流触发 > 10次/小时 → 发送告警
## 十一、后续优化建议
1. **图形验证码**:添加验证码防止机器人
2. **IP白名单**为信任的IP提供更高的限流额度
3. **订单预览**:提交前预览订单信息
4. **批量提交**:支持一次提交多个订单
5. **提交历史**:为用户提供本地提交历史记录
---
**部署完成!** 🎉
如有问题,请查看详细文档:`公开订单提交功能说明.md`