Files
mengyastore/.java-test/后端文档.md
2026-05-16 19:03:36 +08:00

5.5 KiB
Raw Permalink Blame History

萌芽小店 · 后端mengyastore-backend-java

基于 Java 17、Spring Boot 3、Spring MVC、Spring Data JPAHibernate 的 REST API配套 Vue 3 前端联调;可在 IntelliJ IDEA 中运行 MengyastoreBackendJavaApplication 进行开发与测试。

技术栈与 Maven 依赖

依赖 用途
spring-boot-starter-web REST、Jackson
spring-boot-starter-data-jpa 实体、Repository、事务
mysql-connector-j MySQL JDBC
spring-boot-starter-amqp RabbitMQ
spring-boot-starter-data-redis Redis
spring-boot-starter-validation Bean 校验
spring-boot-starter-mail Jakarta Mail业务 SMTP 配置来自数据库)
spring-boot-starter-actuator 健康检查(默认关闭 Mail 指标以免未配 SMTP 报错)
lombok Getter 等样板代码

包结构

src/main/java/com/smyhub/store/mengyastorebackendjava/
├── MengyastoreBackendJavaApplication.java
├── config/           # AppProperties、CORS、RabbitMQ、Redis、RestTemplate、WebMvc
├── controller/       # 按域拆分admin/ 为管理端
├── dto/request|response/
├── entity/           # JPAentity/converter 处理 JSON 列
├── exception/        # BusinessException、GlobalExceptionHandler
├── mq/               # 拓扑、Payload、Producer、Consumer随 app.rabbitmq-enabled
├── repository/
├── security/         # 管理令牌与用户 Bearer 拦截器、ThreadLocal 用户
└── service/          # 业务与 SystemStatusService 等

API 路由一览

公开

方法 路径 说明
GET /api/health 健康检查;含 RabbitMQ 状态(ok / error / disabled
GET /api/products 上架商品列表(不含卡密与 fixedContent
POST /api/products/{id}/view 记录浏览(进程内去重)
GET /api/stats 订单数、访问量
POST /api/site/visit 站点访问计数
GET /api/site/maintenance 维护状态
POST /api/checkout 创建订单(可选 Authorization: Bearer
POST /api/orders/{id}/confirm 确认订单

用户Bearer远程认证服务校验

方法 路径 说明
GET /api/orders 当前用户订单
GET / POST /api/wishlist 列表POST body {"productId":"…"}
DELETE /api/wishlist/{id} 删除,路径参数为商品 ID
GET / POST /api/chat/messages 消息列表;发送(带发送频控)

管理端(X-Admin-Token;兼容 Authorization?token=

方法 路径 说明
POST /api/admin/verify 请求体 {"token":"…"}响应顶层 {"valid":true/false}
GET / POST / PUT / PATCH / DELETE /api/admin/products 商品 CRUD 与上下架
POST /api/admin/site/maintenance 维护模式
GET / POST /api/admin/site/smtp SMTP 配置读/写
GET /api/admin/orders 订单列表
DELETE /api/admin/orders/{id} 删除订单
GET / POST / DELETE /api/admin/chat/api/admin/chat/{account} 会话、回复、清空
GET /api/admin/system-status 聚合 backend / mysql / redis / rabbitmqJSON 外层为 {"data":{…},"error":null}

其它管理接口的成功响应多为 {"data":…,"error":null} 形式。

数据库表(摘要)

开发环境常用 spring.jpa.hibernate.ddl-auto: update 同步表结构。

products 商品信息;fulfillment_typecard(卡密库存)/ fixed(固定内容);fixed_content 不在公开列表返回;含价格、标签 JSON、封面、截图 JSON、activerequire_loginmax_per_accounttotal_soldview_countdelivery_mode 等。

product_codes 每行一条卡密,关联 product_id;固定内容商品可不设。

orders delivered_codes JSON、用户信息、statusdelivery_modenotify_email、联系方式等。

site_settings 键值对,如 totalVisitsmaintenancesmtpHostsmtpPassword 等。

wishlists 用户账号与商品 ID 唯一约束。

chat_messages 会话消息、from_admin、发送时间等。

配置说明application.yaml

说明
spring.datasource.* MySQL
spring.jpa.hibernate.ddl-auto update
server.port HTTP 端口,需与前端 VITE_API_BASE_URL 一致
spring.rabbitmq.* Brokerapp.rabbitmq-enabled=false 时不注册监听器与拓扑,避免无法连接时启动失败
spring.data.redis.* Redisapp.redis-enabled=false 时系统状态中 Redis 标记为未启用
app.admin-token 管理后台令牌
app.auth-api-url 用户 token 远程校验服务根地址(POST …/api/auth/verify
app.app-env development / production
app.rabbitmq-enabled 是否启用 RabbitMQ 发信与消费者
app.redis-enabled 是否在系统状态中探测 Redis
app.rabbitmq-env / app.redis-env dev / prod,影响交换机与队列名
app.cors-allowed-origins 逗号分隔的允许源
management.health.mail.enabled 建议 false 直至配置 SMTP

CORSCorsConfig,包含 AuthorizationX-Admin-Token 等请求头。

前端联调

前端 axios baseURL 来自环境变量或当前页 origin,请指向本服务监听的 协议 + 主机 + 端口