# 祈福小助手后端服务 基于 Go + Gin + Inertia.js 的后端服务。 ## 功能模块 - **用户模块** — 微信登录、资料修改、授权管理 - **支付模块** — 微信支付集成、订单管理 - **许愿树** — 许愿发布、付费许愿、机器人自动许愿 - **百科/历史上的今天** — 百科条目后台维护;从中文维基百科同步 366 天「历史上的今天」数据,定时刷新 - **管理后台** — 基于 Inertia.js 的前后端分离管理界面 ## 技术栈 - **后端**: Go 1.22 + Gin + GORM - **前端**: Inertia.js + React/Vue(待选择) - **数据库**: MySQL - **缓存**: Redis ## 快速开始 ### 开发环境 ```bash # 安装依赖 go mod download # 启动开发服务器 ./scripts/dev.sh ``` ### 生产构建 ```bash # 构建 ./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` — 删除许愿 ### 百科接口 - `GET /api/wiki/entries` — 百科条目列表(支持 category/keyword 过滤) - `GET /api/wiki/on-this-day?month=&day=` — 历史上的今天(大事记/出生/逝世/节假日习俗) ### 管理后台接口(/admin,需管理员认证) - `GET/POST /admin/api/wiki/entries` — 百科条目列表/新增 - `PUT/DELETE /admin/api/wiki/entries/:id` — 更新/删除条目 - `GET /admin/api/wiki/sync-status` — 维基同步状态 - `POST /admin/api/wiki/sync` — 手动触发全量同步 ## 环境变量 参考 `.env.local` 文件配置。维基同步相关: - `WIKI_SYNC_INTERVAL_DAYS` — 自动同步间隔(天),默认 7 - `WIKI_SYNC_HOUR` — 自动同步执行的小时点(0-23),默认 4 同步策略:服务启动时若数据缺失自动补齐;之后每天在指定小时点检查,距上次成功超过间隔天数才全量刷新(共 366 页,只抓中文版)。 ## 数据库 执行 `migrations/001_init.sql` 初始化数据库。