package service import ( "errors" "strings" "github.com/gouki/lunar-server/internal/model" ) const ChartRecordConsentVersion = "chart-record-v1" func (s *CommerceService) CreateChartRecord(record *model.BaziChartRecord) error { if record.ReportID == "" || record.BirthDate == "" || record.BirthTime == "" || record.Snapshot == "" || record.ConsentVersion != ChartRecordConsentVersion || record.ConsentAt == nil { return errors.New("incomplete chart record") } return s.db.Create(record).Error } func (s *CommerceService) AdminChartRecords(search string, page, pageSize int) ([]model.BaziChartRecord, int64, error) { query := s.db.Model(&model.BaziChartRecord{}) if strings.TrimSpace(search) != "" { like := "%" + strings.TrimSpace(search) + "%" query = query.Where("report_id LIKE ? OR name LIKE ? OR city LIKE ?", like, like, like) } var total int64 if err := query.Count(&total).Error; err != nil { return nil, 0, err } var records []model.BaziChartRecord err := query.Order("created_at DESC").Offset((page - 1) * pageSize).Limit(pageSize).Find(&records).Error return records, total, err }