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 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) GetByAuthFlowID(ctx context.Context, authFlowID string) (entities.Certification, error) GetByEsignFlowID(ctx context.Context, esignFlowID string) (entities.Certification, error) // 复杂查询 - 使用查询参数 ListCertifications(ctx context.Context, query *queries.ListCertificationsQuery) ([]*entities.Certification, int64, error) // 业务操作 UpdateStatus(ctx context.Context, certificationID string, status string) error // 统计信息 GetStats(ctx context.Context) (*CertificationStats, error) GetStatsByDateRange(ctx context.Context, startDate, endDate string) (*CertificationStats, error) } // EnterpriseInfoSubmitRecordRepository 企业信息提交记录仓储接口 type EnterpriseInfoSubmitRecordRepository interface { interfaces.Repository[entities.EnterpriseInfoSubmitRecord] // 基础查询 GetByUserID(ctx context.Context, userID string) ([]*entities.EnterpriseInfoSubmitRecord, error) GetLatestByUserID(ctx context.Context, userID string) (*entities.EnterpriseInfoSubmitRecord, error) // 复杂查询 ListRecords(ctx context.Context, query *queries.ListEnterpriseInfoSubmitRecordsQuery) ([]*entities.EnterpriseInfoSubmitRecord, int64, error) // 业务操作 UpdateStatus(ctx context.Context, recordID string, status string, reason string) error } // EsignContractGenerateRecordRepository e签宝生成合同记录仓储接口 type EsignContractGenerateRecordRepository interface { interfaces.Repository[entities.EsignContractGenerateRecord] // 基础查询 GetByCertificationID(ctx context.Context, certificationID string) (*entities.EsignContractGenerateRecord, error) GetByUserID(ctx context.Context, userID string) ([]*entities.EsignContractGenerateRecord, error) GetLatestByCertificationID(ctx context.Context, certificationID string) (*entities.EsignContractGenerateRecord, error) // 复杂查询 ListRecords(ctx context.Context, query *queries.ListEsignContractGenerateRecordsQuery) ([]*entities.EsignContractGenerateRecord, int64, error) // 业务操作 UpdateStatus(ctx context.Context, recordID string, status string, reason string) error UpdateSuccessInfo(ctx context.Context, recordID, esignFlowID, contractFileID, contractURL string) error IncrementRetry(ctx context.Context, recordID string) error } // EsignContractSignRecordRepository e签宝签署合同记录仓储接口 type EsignContractSignRecordRepository interface { interfaces.Repository[entities.EsignContractSignRecord] // 基础查询 GetByCertificationID(ctx context.Context, certificationID string) (*entities.EsignContractSignRecord, error) GetByUserID(ctx context.Context, userID string) ([]*entities.EsignContractSignRecord, error) GetLatestByCertificationID(ctx context.Context, certificationID string) (*entities.EsignContractSignRecord, error) GetByGenerateRecordID(ctx context.Context, generateRecordID string) (*entities.EsignContractSignRecord, error) // 复杂查询 ListRecords(ctx context.Context, query *queries.ListEsignContractSignRecordsQuery) ([]*entities.EsignContractSignRecord, int64, error) // 业务操作 UpdateStatus(ctx context.Context, recordID string, status string, reason string) error UpdateSuccessInfo(ctx context.Context, recordID, signedFileURL string) error SetSignURL(ctx context.Context, recordID, signURL string) error IncrementRetry(ctx context.Context, recordID string) error MarkExpiredRecords(ctx context.Context) error }