package repositories import ( "context" "tyapi-server/internal/domains/certification/entities" "tyapi-server/internal/domains/certification/repositories/queries" "tyapi-server/internal/shared/interfaces" ) // CertificationStats 认证统计信息 type CertificationStats struct { TotalCertifications int64 PendingCertifications int64 CompletedCertifications int64 RejectedCertifications int64 TodaySubmissions int64 } // CertificationRepository 认证申请仓储接口 type CertificationRepository interface { interfaces.Repository[entities.Certification] // 基础查询 - 直接使用实体 GetByUserID(ctx context.Context, userID string) (*entities.Certification, error) GetByStatus(ctx context.Context, status string) ([]*entities.Certification, error) GetPendingCertifications(ctx context.Context) ([]*entities.Certification, error) // 复杂查询 - 使用查询参数 ListCertifications(ctx context.Context, query *queries.ListCertificationsQuery) ([]*entities.Certification, int64, error) // 业务操作 UpdateStatus(ctx context.Context, certificationID string, status string, adminID *string, notes string) error // 统计信息 GetStats(ctx context.Context) (*CertificationStats, error) GetStatsByDateRange(ctx context.Context, startDate, endDate string) (*CertificationStats, error) } // FaceVerifyRecordRepository 人脸识别记录仓储接口 type FaceVerifyRecordRepository interface { interfaces.Repository[entities.FaceVerifyRecord] // 基础查询 - 直接使用实体 GetByCertificationID(ctx context.Context, certificationID string) ([]*entities.FaceVerifyRecord, error) GetLatestByCertificationID(ctx context.Context, certificationID string) (*entities.FaceVerifyRecord, error) // 复杂查询 - 使用查询参数 ListRecords(ctx context.Context, query *queries.ListFaceVerifyRecordsQuery) ([]*entities.FaceVerifyRecord, int64, error) // 统计信息 GetSuccessRate(ctx context.Context, days int) (float64, error) } // ContractRecordRepository 合同记录仓储接口 type ContractRecordRepository interface { interfaces.Repository[entities.ContractRecord] // 基础查询 - 直接使用实体 GetByCertificationID(ctx context.Context, certificationID string) ([]*entities.ContractRecord, error) GetLatestByCertificationID(ctx context.Context, certificationID string) (*entities.ContractRecord, error) // 复杂查询 - 使用查询参数 ListRecords(ctx context.Context, query *queries.ListContractRecordsQuery) ([]*entities.ContractRecord, int64, error) // 业务操作 UpdateContractStatus(ctx context.Context, recordID string, status string, adminID *string, notes string) error } // LicenseUploadRecordRepository 营业执照上传记录仓储接口 type LicenseUploadRecordRepository interface { interfaces.Repository[entities.LicenseUploadRecord] // 基础查询 - 直接使用实体 GetByCertificationID(ctx context.Context, certificationID string) (*entities.LicenseUploadRecord, error) // 复杂查询 - 使用查询参数 ListRecords(ctx context.Context, query *queries.ListLicenseUploadRecordsQuery) ([]*entities.LicenseUploadRecord, int64, error) // 业务操作 UpdateOCRResult(ctx context.Context, recordID string, ocrResult string, confidence float64) error } // NotificationRecordRepository 通知记录仓储接口 type NotificationRecordRepository interface { interfaces.Repository[entities.NotificationRecord] // 基础查询 - 直接使用实体 GetByCertificationID(ctx context.Context, certificationID string) ([]*entities.NotificationRecord, error) GetUnreadByUserID(ctx context.Context, userID string) ([]*entities.NotificationRecord, error) // 复杂查询 - 使用查询参数 ListRecords(ctx context.Context, query *queries.ListNotificationRecordsQuery) ([]*entities.NotificationRecord, int64, error) // 批量操作 BatchCreate(ctx context.Context, records []entities.NotificationRecord) error MarkAsRead(ctx context.Context, recordIDs []string) error MarkAllAsReadByUser(ctx context.Context, userID string) error }