fix(realname): 增加身份证唯一性校验,防止同一证件重复实名

This commit is contained in:
yml2213
2026-10-29 12:06:53 +08:00
parent 86fbc05e9b
commit 2029c1f4fb
16 changed files with 538 additions and 53 deletions
@@ -204,6 +204,28 @@ func TestManualRealnameRejectsVerifiedUser(t *testing.T) {
}
}
func TestManualRealnameRejectsIdentityUsedByAnotherUser(t *testing.T) {
db := setupAdminUserTestDB(t)
first := model.User{Phone: "13900000011", Nickname: "用户一", Status: "active"}
second := model.User{Phone: "13900000012", Nickname: "用户二", Status: "active"}
if err := db.Create(&first).Error; err != nil {
t.Fatalf("创建用户一失败:%v", err)
}
if err := db.Create(&second).Error; err != nil {
t.Fatalf("创建用户二失败:%v", err)
}
repo := NewRepository(db)
repo.SetRealnameIDHashKey("test-realname-id-hash-key")
req := ManualRealnameRequest{Name: "周奕男", IDNo: "130682200604080615"}
if _, err := repo.ManualRealname(t.Context(), 99, first.ID, req, AuditMeta{}); err != nil {
t.Fatalf("用户一人工实名失败:%v", err)
}
if _, err := repo.ManualRealname(t.Context(), 99, second.ID, req, AuditMeta{}); !errors.Is(err, ErrRealnameIDNoUsed) {
t.Fatalf("同一身份证人工实名第二账号 error = %v, want ErrRealnameIDNoUsed", err)
}
}
func TestAdjustWalletDebitAndAudit(t *testing.T) {
db := setupAdminUserTestDB(t)
user := model.User{