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:
2026-03-19 11:33:41 +08:00
parent ec86dbf463
commit df76e33105
35 changed files with 4348 additions and 1362 deletions

View File

@@ -141,6 +141,15 @@ const (
CodeFuiouCallbackInvalid = 1174 // 富友回调签名验证失败
CodeNoPaymentConfig = 1175 // 当前无可用的支付配置
// C端认证相关错误 (1180-1199)
CodeAssetNotFound = 1180 // 资产不存在A1 资产验证失败)
CodeWechatConfigUnavailable = 1181 // 微信配置不可用(无激活配置)
CodeSmsSendFailed = 1182 // 短信发送失败
CodeVerificationCodeInvalid = 1183 // 验证码错误或已过期
CodePhoneAlreadyBound = 1184 // 手机号已被其他客户绑定
CodeAlreadyBoundPhone = 1185 // 当前客户已绑定手机号,不可重复绑定
CodeOldPhoneMismatch = 1186 // 旧手机号与当前绑定不匹配
// 服务端错误 (2000-2999) -> 5xx HTTP 状态码
CodeInternalError = 2001 // 内部服务器错误
CodeDatabaseError = 2002 // 数据库错误
@@ -258,6 +267,13 @@ var allErrorCodes = []int{
CodeFuiouPayFailed,
CodeFuiouCallbackInvalid,
CodeNoPaymentConfig,
CodeAssetNotFound,
CodeWechatConfigUnavailable,
CodeSmsSendFailed,
CodeVerificationCodeInvalid,
CodePhoneAlreadyBound,
CodeAlreadyBoundPhone,
CodeOldPhoneMismatch,
CodeInternalError,
CodeDatabaseError,
CodeRedisError,
@@ -373,6 +389,13 @@ var errorMessages = map[int]string{
CodeFuiouPayFailed: "支付发起失败,请重试",
CodeFuiouCallbackInvalid: "支付回调签名验证失败",
CodeNoPaymentConfig: "当前无可用的支付配置,请联系管理员",
CodeAssetNotFound: "资产不存在",
CodeWechatConfigUnavailable: "微信配置不可用",
CodeSmsSendFailed: "短信发送失败",
CodeVerificationCodeInvalid: "验证码错误或已过期",
CodePhoneAlreadyBound: "手机号已被其他客户绑定",
CodeAlreadyBoundPhone: "当前客户已绑定手机号,不可重复绑定",
CodeOldPhoneMismatch: "旧手机号与当前绑定不匹配",
CodeInvalidCredentials: "用户名或密码错误",
CodeAccountLocked: "账号已锁定",
CodePasswordExpired: "密码已过期",