Files
wx_service/docs/README.md
T
nepiedg 16844d4a42 Enhance AI and Redis integration for smoke logging features
- Added AI configuration options to .env.example and config.go for OpenAI integration.
- Implemented Redis caching for session management in main.go and auth middleware.
- Updated smoke logging service to support real smoking time (`smoke_at`) and AI advice retrieval.
- Enhanced API routes to include endpoints for AI advice and unlock functionality for non-members.
- Improved database schema with new tables for AI advice and unlock records.
- Expanded documentation to cover new AI features and Redis caching implementation.
2026-01-03 02:14:21 +00:00

89 lines
3.3 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.
# 文档目录
本仓库支持多个小程序共用一套后端。文档按“公共约定 + 每个小程序一个目录”的方式组织。
## 公共文档(所有小程序通用)
- `docs/common/README.md`
- `docs/common/auth.md`
- `docs/common/response.md`
- `docs/common/upload_qiniu.md`
- `docs/common/wechat_official.md`
- `docs/common/redis.md`
## 去水印小程序
- `docs/remove_watermark/README.md`
- `docs/remove_watermark/API.md`
## 戒烟/抽烟记录小程序
- `docs/smoke/README.md`
- `docs/smoke/API.md`
## 配置
1. 复制 `.env.example``.env`
2. 按实际环境填写以下变量:
- `SERVER_PORT`HTTP 服务端口,例如 `8080`
- `DB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAME`MySQL 连接信息。
3. 如果需要,替换 `GIN_MODE``JWT_SECRET` 等其他变量。
4. 通过 `docs/sql/users.sql` 初始化 `mini_programs``users` 表,并插入每个小程序的 `name/app_id/app_secret`
## 启动
```bash
go run ./cmd/api
```
启动流程:
1. 加载 `.env`
2. 初始化数据库连接(参见 `internal/database/database.go`)。
3. 自动迁移相关数据表(用户表、去水印日志表、戒烟记录表等)。
4. 注册路由并启动 Gin HTTP 服务。
## 数据表
### `mini_programs`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `id` | bigint unsigned | 小程序 ID,登录接口需传 |
| `name` | varchar(100) | 业务名称或备注 |
| `app_id` | varchar(100), unique | 微信小程序 `appId` |
| `app_secret` | varchar(200) | 微信小程序 `appSecret`(明文存储,注意权限) |
| `description` | varchar(255) | 可选描述 |
| `created_at/updated_at/deleted_at` | timestamp | GORM 默认时间戳 |
### `users`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `id` | bigint unsigned (auto increment) | 主键 |
| `mini_program_id` | bigint unsigned | 外键,关联 `mini_programs.id` |
| `open_id` | varchar(100) | 与 `mini_program_id` 组合成唯一键 |
| `union_id` | varchar(100), nullable | 微信 `unionid`(若有) |
| `nick_name` | varchar(100) | 用户昵称 |
| `avatar_url` | varchar(500) | 头像地址 |
| `gender` | tinyint, default 0 | 性别(与小程序一致) |
| `phone` | varchar(20) | 手机号 |
| `session_key` | varchar(100) | 微信会话密钥 |
| `created_at/updated_at/deleted_at` | timestamp | GORM 默认时间戳 |
## 登录接口
登录接口属于公共能力,请查看:`docs/common/auth.md`
## 健康检查
`GET /healthz` 返回 `{"status": "ok"}`,用于部署探活。
更多子系统/专题文档请查阅 `docs/*` 子目录,例如 `docs/remove_watermark/README.md` 描述了去水印小程序的详细需求。
## 多小程序共用后台设计
- **凭证管理表**`mini_programs` 持久化 `name/app_id/app_secret`,可通过后台页面或 SQL 插入,避免把密钥写进环境变量。
- **接口约定**:小程序端调用登录接口时传入 `mini_program_id`。服务端通过该 ID 读取凭证,动态拼装 `jscode2session` 请求。
- **数据隔离**`users``mini_program_id + open_id` 建立唯一索引,同一 `openid` 在不同小程序下互不影响。
- **扩展性**:后续如需在用户层面区分策略(如积分、营销),可直接以 `mini_program_id` 作为维度做统计或挂载其他表。