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

6.4 KiB
Raw Permalink Blame History

公开订单提交功能 - 快速部署指南

一、功能说明

本功能提供一个公开的订单提交页面,特点如下:

无需登录 - 直接访问即可使用
接口限流 - 每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 编译项目

cd d:\code\RuoYi-Vue-master\ruoyi-java
mvn clean package -DskipTests

1.2 重启后端服务

# Windows
ry.bat

# Linux
./ry.sh

1.3 验证后端

检查日志,确保启动成功,无报错。

步骤2前端部署

2.1 安装依赖(如果需要)

cd d:\code\ruoyi-vue
npm install

2.2 开发环境运行

npm run dev

2.3 生产环境构建

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

@RateLimiter(
    key = CacheConstants.RATE_LIMIT_KEY, 
    time = 60,    // 时间窗口(秒),可修改
    count = 3,    // 允许次数,可修改
    limitType = LimitType.IP
)

修改后重新编译部署:

mvn clean package -DskipTests

日志配置

如需调整日志级别,编辑 logback.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