- 前端免费排盘默认不保存,勾选同意后才调用保存接口 - 服务端要求 consentVersion,记录 consentAt,校验并限流公开保存接口 - 付费结算单独披露报告快照与订单信息将由服务端存储 - 管理端展示同意版本与时间,历史无同意证据记录保留并标注 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
33 lines
1.1 KiB
Go
33 lines
1.1 KiB
Go
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
|
|
}
|