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 表
This commit is contained in:
2
migrations/000083_add_personal_customer_openid.down.sql
Normal file
2
migrations/000083_add_personal_customer_openid.down.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- 回滚:删除个人客户 OpenID 关联表
|
||||
DROP TABLE IF EXISTS tb_personal_customer_openid;
|
||||
35
migrations/000083_add_personal_customer_openid.up.sql
Normal file
35
migrations/000083_add_personal_customer_openid.up.sql
Normal file
@@ -0,0 +1,35 @@
|
||||
-- 新增个人客户 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)';
|
||||
Reference in New Issue
Block a user