hello-dd-code a6350dd906
deploy-prod-non-docker / deploy (push) Waiting to run
Merge pull request #52 from hello-dd-code/develop
chore: merge develop into main
2026-04-11 01:53:08 +08:00

文档目录

本仓库支持多个小程序共用一套后端。文档按“公共约定 + 每个小程序一个目录”的方式组织。

公共文档(所有小程序通用)

  • 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.mdGitHub Actions 非 Docker 自动化发布)

去水印小程序

  • docs/remove_watermark/README.md
  • docs/remove_watermark/API.md

戒烟/抽烟记录小程序

  • docs/smoke/README.md
  • docs/smoke/API.md

营销图管理小程序

律师信息上报接口

  • docs/lawyer/README.md

配置

  1. 复制 .env.example.env
  2. 按实际环境填写以下变量:
    • SERVER_PORTHTTP 服务端口,例如 8080
    • DB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAMEMySQL 连接信息。
    • 若需连接额外数据库,可设置 DB_INSTANCES=lawyer,reporting 并依次提供 DB_<NAME>_HOST/PORT/USER/PASSWORD/NAME;未指定的字段会回落到默认数据库的同名配置。
  3. 如果需要,替换 GIN_MODEJWT_SECRET 等其他变量。
  4. 通过 docs/sql/users.sql 初始化 mini_programsusers 表,并插入每个小程序的 name/app_id/app_secret

启动

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 请求。
  • 数据隔离usersmini_program_id + open_id 建立唯一索引,同一 openid 在不同小程序下互不影响。
  • 扩展性:后续如需在用户层面区分策略(如积分、营销),可直接以 mini_program_id 作为维度做统计或挂载其他表。
S
Description
微信服务后端 Go
Readme 575 KiB
Languages
Go 97.6%
Shell 2.4%