package fe_calendar import ( "eta/eta_api/global" "eta/eta_api/utils" "time" ) // FeCalendarAiArticle 外汇日历-AI数据点评文章表 type FeCalendarAiArticle struct { FeCalendarAiArticleId int `gorm:"column:fe_calendar_ai_article_id;primaryKey;autoIncrement"` // 文章ID ChartPermissionId int `gorm:"column:chart_permission_id"` // 品种ID ChartPermissionName string `gorm:"column:chart_permission_name"` // 品种名称 MatterMonth string `gorm:"column:matter_month"` // 事项年月:格式2006-01 MatterDate string `gorm:"column:matter_date"` // 事项日期 Title string `gorm:"column:title"` // 标题 EdbInfoId int `gorm:"column:edb_info_id"` // 指标ID EdbCode string `gorm:"column:edb_code"` // 指标编码 SysUserId int `gorm:"column:sys_user_id"` // 创建人ID SysUserName string `gorm:"column:sys_user_name"` // 创建人姓名 Prompt string `gorm:"column:prompt;type:text"` // 提示词内容 Content string `gorm:"column:content;type:text"` // 内容 CreateTime time.Time `gorm:"column:create_time"` // 创建时间 ModifyTime time.Time `gorm:"column:modify_time"` // 更新时间 } // TableName 指定表名 func (FeCalendarAiArticle) TableName() string { return "fe_calendar_ai_article" } // Create 创建文章 func (f *FeCalendarAiArticle) Create() error { now := time.Now() f.CreateTime = now f.ModifyTime = now o := global.DbMap[utils.DbNameIndex] return o.Create(f).Error } // Update 更新文章 func (f *FeCalendarAiArticle) Update(cols []string) error { now := time.Now() f.ModifyTime = now o := global.DbMap[utils.DbNameIndex] return o.Model(f).Where("fe_calendar_ai_article_id = ?", f.FeCalendarAiArticleId).Select(cols).Updates(f).Error } // Delete 删除文章 func (f *FeCalendarAiArticle) Delete() error { o := global.DbMap[utils.DbNameIndex] return o.Delete(f, "fe_calendar_ai_article_id = ?", f.FeCalendarAiArticleId).Error } // GetByID 根据ID获取文章 func (f *FeCalendarAiArticle) GetByID(id uint) error { o := global.DbMap[utils.DbNameIndex] return o.Where("fe_calendar_ai_article_id = ?", id).First(f).Error } // QueryParams 查询参数结构体 type QueryParams struct { EdbInfoId uint // 指标ID ChartPermissionId uint // 品种权限ID StartDate *time.Time // 开始日期 EndDate *time.Time // 结束日期 MatterMonth string // 事项月份 Page int // 页码 PageSize int // 每页数量 } // QueryArticles 查询文章列表 func (f *FeCalendarAiArticle) QueryArticles(params QueryParams) ([]FeCalendarAiArticle, int64, error) { var articles []FeCalendarAiArticle var total int64 o := global.DbMap[utils.DbNameIndex] query := o.Model(&FeCalendarAiArticle{}) // 添加查询条件 if params.EdbInfoId > 0 { query = query.Where("edb_info_id = ?", params.EdbInfoId) } if params.ChartPermissionId > 0 { query = query.Where("chart_permission_id = ?", params.ChartPermissionId) } if params.MatterMonth != "" { query = query.Where("matter_month = ?", params.MatterMonth) } if params.StartDate != nil { query = query.Where("matter_date >= ?", params.StartDate) } if params.EndDate != nil { query = query.Where("matter_date <= ?", params.EndDate) } // 获取总数 err := query.Count(&total).Error if err != nil { return nil, 0, err } // 分页查询 if params.Page > 0 && params.PageSize > 0 { offset := (params.Page - 1) * params.PageSize query = query.Offset(offset).Limit(params.PageSize) } // 按时间倒序排序 query = query.Order("matter_date DESC") // 执行查询 err = query.Find(&articles).Error if err != nil { return nil, 0, err } return articles, total, nil } // GetByEdbInfoID 根据指标ID获取文章列表 func (f *FeCalendarAiArticle) GetByEdbInfoID(edbInfoID uint) ([]FeCalendarAiArticle, error) { var articles []FeCalendarAiArticle o := global.DbMap[utils.DbNameIndex] err := o.Where("edb_info_id = ?", edbInfoID).Order("matter_date DESC").Find(&articles).Error return articles, err } // GetByChartPermissionID 根据品种权限ID获取文章列表 func (f *FeCalendarAiArticle) GetByChartPermissionID(chartPermissionID uint) ([]FeCalendarAiArticle, error) { var articles []FeCalendarAiArticle o := global.DbMap[utils.DbNameIndex] err := o.Where("chart_permission_id = ?", chartPermissionID).Order("matter_date DESC").Find(&articles).Error return articles, err } // GetByDateRange 根据日期范围获取文章列表 func (f *FeCalendarAiArticle) GetByDateRange(startDate, endDate time.Time) ([]FeCalendarAiArticle, error) { var articles []FeCalendarAiArticle o := global.DbMap[utils.DbNameIndex] err := o.Where("matter_date BETWEEN ? AND ?", startDate, endDate). Order("matter_date DESC"). Find(&articles).Error return articles, err } // GetByMatterMonth 根据事项月份获取文章列表 func (f *FeCalendarAiArticle) GetByMatterMonth(matterMonth string) ([]FeCalendarAiArticle, error) { var articles []FeCalendarAiArticle o := global.DbMap[utils.DbNameIndex] err := o.Where("matter_month = ?", matterMonth). Order("matter_date DESC"). Find(&articles).Error return articles, err } type FeCalendarAiArticleGenerateReq struct { MatterDate string // 事项日期 EdbInfoId int // 指标ID } type FeCalendarAiArticleGenerateResp struct { Content string // 内容 ModifyTime string // 修改时间 } type FeCalendarAiArticleSaveReq struct { FeCalendarAiArticleId int // 文章ID ChartPermissionId int // 品种ID MatterDate string // 事项日期 EdbInfoId int // 指标ID Content string // 内容 FeCalendarMatterId int // 事项ID } type FeCalendarAiArticleSaveResp struct { FeCalendarAiArticleId int // 文章ID } type FeCalendarAiArticleDetailResp struct { FeCalendarAiArticleId int // 文章ID EdbName string // 指标名称 EdbInfoId int // 指标ID EdbCode string // 指标编码 Content string // 内容 ModifyTime string // 修改时间 }