- 微信登录改为真实 jscode2session,session_key 不再下发客户端 - 支付回调增加 HMAC 验签(X-Pay-Sign)与幂等处理,未配置密钥时拒绝回调 - 订单金额一律以服务端商品表定价,禁止客户端传入金额 - 付费许愿改为支付成功后创建,不再先许愿后付款 - 管理后台增加登录认证(ADMIN_PASSWORD + role=admin JWT + HttpOnly Cookie) - 订单详情/取消增加本人归属校验,修复越权访问 - 版本信息改为 ldflags 注入单一链路,GoVersion 用 runtime.Version() - 恢复 gin 默认访问日志(原 Logger 中间件输出为空) - 加载 HTML 模板修复后台页面 500;godotenv 加载 .env.local - CORS 支持 CORS_ORIGINS 白名单配置
祈福小助手后端服务
基于 Go + Gin + Inertia.js 的后端服务。
功能模块
- 用户模块 — 微信登录、资料修改、授权管理
- 支付模块 — 微信支付集成、订单管理
- 许愿树 — 许愿发布、付费许愿、机器人自动许愿
- 管理后台 — 基于 Inertia.js 的前后端分离管理界面
技术栈
- 后端: Go 1.22 + Gin + GORM
- 前端: Inertia.js + React/Vue(待选择)
- 数据库: MySQL
- 缓存: Redis
快速开始
开发环境
# 安装依赖
go mod download
# 启动开发服务器
./scripts/dev.sh
生产构建
# 构建
./scripts/build.sh
# 运行
./bin/lunar-server
项目结构
server/
├── cmd/ # 入口文件
│ └── main.go
├── internal/ # 内部包
│ ├── config/ # 配置
│ ├── handler/ # 处理器
│ ├── middleware/ # 中间件
│ ├── model/ # 数据模型
│ └── service/ # 业务逻辑
├── web/ # Inertia.js 前端
│ ├── src/
│ └── public/
├── migrations/ # 数据库迁移
├── scripts/ # 脚本
└── go.mod
API 接口
用户接口
POST /api/user/login— 用户登录POST /api/user/logout— 用户登出GET /api/user/profile— 获取用户资料PUT /api/user/profile— 更新用户资料POST /api/user/auth— 微信授权
支付接口
POST /api/pay/create— 创建订单POST /api/pay/notify— 支付回调GET /api/pay/status/:orderId— 查询支付状态
订单接口
GET /api/order/list— 订单列表GET /api/order/detail/:id— 订单详情POST /api/order/cancel/:id— 取消订单
许愿接口
GET /api/wish/tree— 获取许愿树POST /api/wish/create— 创建许愿GET /api/wish/list— 许愿列表DELETE /api/wish/:id— 删除许愿
环境变量
参考 .env.local 文件配置。
数据库
执行 migrations/001_init.sql 初始化数据库。