Files
junhong_cmp_fiber/migrations/000083_add_personal_customer_openid.up.sql
huang df76e33105 feat: 实现 C 端完整认证系统(client-auth-system)
实现面向个人客户的 7 个认证接口(A1-A7),覆盖资产验证、
微信公众号/小程序登录、手机号绑定/换绑、退出登录完整流程。

主要变更:
- 新增 PersonalCustomerOpenID 模型,支持多 AppID 多 OpenID 管理
- 实现有状态 JWT(JWT + Redis 双重校验),支持服务端主动失效
- 扩展微信 SDK:小程序 Code2Session + 3 个 DB 动态工厂函数
- 实现 A1 资产验证 IP 限流(30/min)和 A4 三层验证码限流
- 新增 7 个错误码(1180-1186)和 6 个 Redis Key 函数
- 注册 /api/c/v1/auth/* 下 7 个端点并更新 OpenAPI 文档
- 数据库迁移 000083:新建 tb_personal_customer_openid 表
2026-03-19 11:33:41 +08:00

36 lines
1.6 KiB
SQL
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.
-- 新增个人客户 OpenID 关联表
-- 保存客户在不同微信应用(公众号/小程序)下的 OpenID 记录
CREATE TABLE IF NOT EXISTS tb_personal_customer_openid (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMPTZ,
customer_id BIGINT NOT NULL,
app_id VARCHAR(100) NOT NULL,
open_id VARCHAR(100) NOT NULL,
union_id VARCHAR(100) NOT NULL DEFAULT '',
app_type VARCHAR(20) NOT NULL DEFAULT ''
);
-- 软删除条件下的唯一索引:同一应用下 OpenID 唯一
CREATE UNIQUE INDEX IF NOT EXISTS idx_pco_app_id_open_id
ON tb_personal_customer_openid (app_id, open_id)
WHERE deleted_at IS NULL;
-- 客户ID索引按客户查询所有 OpenID 记录
CREATE INDEX IF NOT EXISTS idx_pco_customer_id
ON tb_personal_customer_openid (customer_id);
-- UnionID索引按 UnionID 回查合并客户
CREATE INDEX IF NOT EXISTS idx_pco_union_id
ON tb_personal_customer_openid (union_id)
WHERE union_id != '' AND deleted_at IS NULL;
-- 字段注释
COMMENT ON TABLE tb_personal_customer_openid IS '个人客户OpenID关联表';
COMMENT ON COLUMN tb_personal_customer_openid.customer_id IS '关联个人客户ID';
COMMENT ON COLUMN tb_personal_customer_openid.app_id IS '微信应用标识公众号或小程序AppID';
COMMENT ON COLUMN tb_personal_customer_openid.open_id IS '当前应用下的OpenID';
COMMENT ON COLUMN tb_personal_customer_openid.union_id IS '微信开放平台统一标识(可选)';
COMMENT ON COLUMN tb_personal_customer_openid.app_type IS '应用类型official_account/miniapp';