Files
wx_service/docs/README.md
T

101 lines
3.8 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/common/deploy_ci.md`GitHub Actions 非 Docker 自动化发布)
## 去水印小程序
- `docs/remove_watermark/README.md`
- `docs/remove_watermark/API.md`
## 戒烟/抽烟记录小程序
- `docs/smoke/README.md`
- `docs/smoke/API.md`
## 营销图管理小程序
- `docs/marketing/README.md`
- `docs/marketing/API.md`
- 前端仓库:[hello-dd-code/marketing](https://github.com/hello-dd-code/marketing)
## 律师信息上报接口
- `docs/lawyer/README.md`
## 配置
1. 复制 `.env.example``.env`
2. 按实际环境填写以下变量:
- `SERVER_PORT`HTTP 服务端口,例如 `8080`
- `DB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAME`MySQL 连接信息。
- 若需连接额外数据库,可设置 `DB_INSTANCES=lawyer,reporting` 并依次提供 `DB_<NAME>_HOST/PORT/USER/PASSWORD/NAME`;未指定的字段会回落到默认数据库的同名配置。
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` 作为维度做统计或挂载其他表。