Files
zt-closet-backend/internal/mysqldao/horoscope.go
T
2026-09-11 01:41:52 +08:00

128 lines
4.0 KiB
Go

package mysqldao
import (
"context"
"git.lzcwy.cn/zhengchiliu/zt-closet-backend/global"
"git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/mysqlmodel"
"gorm.io/gorm"
)
// HoroscopeDao 运势数据访问
type HoroscopeDao struct {
db *gorm.DB
}
// NewHoroscopeDao 创建运势 DAO
func NewHoroscopeDao() *HoroscopeDao {
return &HoroscopeDao{db: global.MysqlEngine}
}
// HoroscopeCreate 创建运势记录
func (d *HoroscopeDao) HoroscopeCreate(ctx context.Context, horoscope *mysqlmodel.Horoscope) error {
ctx, span := global.Tracer.Start(ctx, "mysqldao.HoroscopeCreate")
defer span.End()
if err := d.db.WithContext(ctx).Create(horoscope).Error; err != nil {
span.RecordError(err)
return err
}
return nil
}
// HoroscopeGetByZodiacAndDate 按星座和日期查询运势(幂等)
func (d *HoroscopeDao) HoroscopeGetByZodiacAndDate(ctx context.Context, zodiac string, statDate int64) (*mysqlmodel.Horoscope, error) {
ctx, span := global.Tracer.Start(ctx, "mysqldao.HoroscopeGetByZodiacAndDate")
defer span.End()
var horoscope mysqlmodel.Horoscope
if err := d.db.WithContext(ctx).Where("zodiac = ? AND stat_date = ?", zodiac, statDate).First(&horoscope).Error; err != nil {
span.RecordError(err)
return nil, err
}
return &horoscope, nil
}
// HoroscopeGetByDate 按日期查询当日全部星座运势。
func (d *HoroscopeDao) HoroscopeGetByDate(ctx context.Context, statDate int64) ([]mysqlmodel.Horoscope, error) {
ctx, span := global.Tracer.Start(ctx, "mysqldao.HoroscopeGetByDate")
defer span.End()
var list []mysqlmodel.Horoscope
if err := d.db.WithContext(ctx).Where("stat_date = ?", statDate).Find(&list).Error; err != nil {
span.RecordError(err)
return nil, err
}
return list, nil
}
// AIHoroscopeFlowLogDao 星座运势 AI 流水数据访问
type AIHoroscopeFlowLogDao struct {
db *gorm.DB
}
// NewAIHoroscopeFlowLogDao 创建星座运势 AI 流水 DAO
func NewAIHoroscopeFlowLogDao() *AIHoroscopeFlowLogDao {
return &AIHoroscopeFlowLogDao{db: global.MysqlEngine}
}
// AIHoroscopeFlowLogCreate 创建星座运势 AI 流水
func (d *AIHoroscopeFlowLogDao) AIHoroscopeFlowLogCreate(ctx context.Context, log *mysqlmodel.AIHoroscopeFlowLog) error {
ctx, span := global.Tracer.Start(ctx, "mysqldao.AIHoroscopeFlowLogCreate")
defer span.End()
if err := d.db.WithContext(ctx).Create(log).Error; err != nil {
span.RecordError(err)
return err
}
return nil
}
// AIHoroscopeFlowLogGetByRequestID 按请求ID查询流水(幂等)
func (d *AIHoroscopeFlowLogDao) AIHoroscopeFlowLogGetByRequestID(ctx context.Context, requestID string) (*mysqlmodel.AIHoroscopeFlowLog, error) {
ctx, span := global.Tracer.Start(ctx, "mysqldao.AIHoroscopeFlowLogGetByRequestID")
defer span.End()
var log mysqlmodel.AIHoroscopeFlowLog
if err := d.db.WithContext(ctx).Where("request_id = ?", requestID).First(&log).Error; err != nil {
span.RecordError(err)
return nil, err
}
return &log, nil
}
// AIRecommendFlowLogDao AI 推荐流水数据访问
type AIRecommendFlowLogDao struct {
db *gorm.DB
}
// NewAIRecommendFlowLogDao 创建 AI 推荐流水 DAO
func NewAIRecommendFlowLogDao() *AIRecommendFlowLogDao {
return &AIRecommendFlowLogDao{db: global.MysqlEngine}
}
// AIRecommendFlowLogCreate 创建 AI 推荐流水
func (d *AIRecommendFlowLogDao) AIRecommendFlowLogCreate(ctx context.Context, log *mysqlmodel.AIRecommendFlowLog) error {
ctx, span := global.Tracer.Start(ctx, "mysqldao.AIRecommendFlowLogCreate")
defer span.End()
if err := d.db.WithContext(ctx).Create(log).Error; err != nil {
span.RecordError(err)
return err
}
return nil
}
// AIRecommendFlowLogGetByRequestID 按请求ID查询流水(幂等)
func (d *AIRecommendFlowLogDao) AIRecommendFlowLogGetByRequestID(ctx context.Context, requestID string) (*mysqlmodel.AIRecommendFlowLog, error) {
ctx, span := global.Tracer.Start(ctx, "mysqldao.AIRecommendFlowLogGetByRequestID")
defer span.End()
var log mysqlmodel.AIRecommendFlowLog
if err := d.db.WithContext(ctx).Where("request_id = ?", requestID).First(&log).Error; err != nil {
span.RecordError(err)
return nil, err
}
return &log, nil
}