diff --git a/internal/application/certification/certification_application_service_impl.go b/internal/application/certification/certification_application_service_impl.go index f805399..b6f9d16 100644 --- a/internal/application/certification/certification_application_service_impl.go +++ b/internal/application/certification/certification_application_service_impl.go @@ -733,6 +733,9 @@ func (s *CertificationApplicationServiceImpl) AdminListSubmitRecords( Page: query.Page, PageSize: query.PageSize, ManualReviewStatus: query.ManualReviewStatus, + CompanyName: query.CompanyName, + LegalPersonPhone: query.LegalPersonPhone, + LegalPersonName: query.LegalPersonName, } result, err := s.enterpriseInfoSubmitRecordRepo.List(ctx, filter) if err != nil { diff --git a/internal/application/certification/dto/queries/certification_queries.go b/internal/application/certification/dto/queries/certification_queries.go index 0840371..e741046 100644 --- a/internal/application/certification/dto/queries/certification_queries.go +++ b/internal/application/certification/dto/queries/certification_queries.go @@ -198,4 +198,7 @@ type AdminListSubmitRecordsQuery struct { Page int `json:"page" form:"page"` PageSize int `json:"page_size" form:"page_size"` ManualReviewStatus string `json:"manual_review_status" form:"manual_review_status"` // pending, approved, rejected,空为全部 + CompanyName string `json:"company_name" form:"company_name"` // 企业名称(模糊搜索) + LegalPersonPhone string `json:"legal_person_phone" form:"legal_person_phone"` // 法人手机号 + LegalPersonName string `json:"legal_person_name" form:"legal_person_name"` // 法人姓名(模糊搜索) } diff --git a/internal/domains/certification/repositories/enterprise_info_submit_record_repository.go b/internal/domains/certification/repositories/enterprise_info_submit_record_repository.go index 741a4b5..4ffa430 100644 --- a/internal/domains/certification/repositories/enterprise_info_submit_record_repository.go +++ b/internal/domains/certification/repositories/enterprise_info_submit_record_repository.go @@ -8,6 +8,9 @@ import ( // ListSubmitRecordsFilter 提交记录列表筛选 type ListSubmitRecordsFilter struct { ManualReviewStatus string // pending, approved, rejected,空表示全部 + CompanyName string // 企业名称(模糊搜索) + LegalPersonPhone string // 法人手机号 + LegalPersonName string // 法人姓名(模糊搜索) Page int PageSize int } diff --git a/internal/infrastructure/database/repositories/certification/gorm_enterprise_info_submit_record_repository.go b/internal/infrastructure/database/repositories/certification/gorm_enterprise_info_submit_record_repository.go index f82042b..9047e11 100644 --- a/internal/infrastructure/database/repositories/certification/gorm_enterprise_info_submit_record_repository.go +++ b/internal/infrastructure/database/repositories/certification/gorm_enterprise_info_submit_record_repository.go @@ -95,6 +95,15 @@ func (r *GormEnterpriseInfoSubmitRecordRepository) List(ctx context.Context, fil if filter.ManualReviewStatus != "" { db = db.Where("manual_review_status = ?", filter.ManualReviewStatus) } + if filter.CompanyName != "" { + db = db.Where("company_name LIKE ?", "%"+filter.CompanyName+"%") + } + if filter.LegalPersonPhone != "" { + db = db.Where("legal_person_phone = ?", filter.LegalPersonPhone) + } + if filter.LegalPersonName != "" { + db = db.Where("legal_person_name LIKE ?", "%"+filter.LegalPersonName+"%") + } var total int64 if err := db.Count(&total).Error; err != nil { return nil, err @@ -111,6 +120,15 @@ func (r *GormEnterpriseInfoSubmitRecordRepository) List(ctx context.Context, fil if filter.ManualReviewStatus != "" { q = q.Where("manual_review_status = ?", filter.ManualReviewStatus) } + if filter.CompanyName != "" { + q = q.Where("company_name LIKE ?", "%"+filter.CompanyName+"%") + } + if filter.LegalPersonPhone != "" { + q = q.Where("legal_person_phone = ?", filter.LegalPersonPhone) + } + if filter.LegalPersonName != "" { + q = q.Where("legal_person_name LIKE ?", "%"+filter.LegalPersonName+"%") + } err := q.Order("submit_at DESC").Offset(offset).Limit(filter.PageSize).Find(&records).Error if err != nil { return nil, err diff --git a/internal/shared/middleware/daily_rate_limit.go b/internal/shared/middleware/daily_rate_limit.go index b1dc369..0d1cd69 100644 --- a/internal/shared/middleware/daily_rate_limit.go +++ b/internal/shared/middleware/daily_rate_limit.go @@ -34,6 +34,7 @@ type DailyRateLimitConfig struct { BlockedCountries []string `mapstructure:"blocked_countries"` // 被阻止的国家/地区 EnableProxyCheck bool `mapstructure:"enable_proxy_check"` // 是否检查代理 MaxConcurrent int `mapstructure:"max_concurrent"` // 最大并发请求数 + // 路径排除配置 ExcludePaths []string `mapstructure:"exclude_paths"` // 排除频率限制的路径 // 域名排除配置 diff --git a/internal/shared/validator/custom_validators.go b/internal/shared/validator/custom_validators.go index 0f07416..ed1a8e5 100644 --- a/internal/shared/validator/custom_validators.go +++ b/internal/shared/validator/custom_validators.go @@ -637,8 +637,8 @@ func validateEnterpriseName(fl validator.FieldLevel) bool { hasValidSuffix = true break } - // 同时检查括号内的企业类型,如:(个体工商户)、(分公司) - if strings.HasSuffix(trimmedName, "("+suffix+")") { + // 同时检查括号内的企业类型,支持中英文括号,如:(个体工商户)、(个体工商户)、(分公司)、(分公司) + if strings.HasSuffix(trimmedName, "("+suffix+")") || strings.HasSuffix(trimmedName, "("+suffix+")") { hasValidSuffix = true break } @@ -921,8 +921,8 @@ func ValidateEnterpriseName(enterpriseName string) error { hasValidSuffix = true break } - // 同时检查括号内的企业类型,如:(个体工商户)、(分公司) - if strings.HasSuffix(trimmedName, "("+suffix+")") { + // 同时检查括号内的企业类型,支持中英文括号,如:(个体工商户)、(个体工商户)、(分公司)、(分公司) + if strings.HasSuffix(trimmedName, "("+suffix+")") || strings.HasSuffix(trimmedName, "("+suffix+")") { hasValidSuffix = true break }