package models import ( "eta/eta_index_lib/utils" "fmt" "time" "github.com/beego/beego/v2/client/orm" ) // BaseFromBusinessIndex // @Description: 外部指标(商家系统)表 type BaseFromBusinessIndex struct { BaseFromBusinessIndexId int64 `orm:"column(base_from_business_index_id);pk"` IndexCode string `description:"指标编码"` IndexName string `description:"指标名称"` Unit string `description:"单位"` Frequency string `description:"频度"` Source int `description:"数据来源"` SourceName string `description:"数据来源名称"` StartDate time.Time `description:"开始日期"` EndDate time.Time `description:"结束日期"` Remark string `description:"备注字段"` BaseModifyTime time.Time `description:"基础信息(名称,单位,频度)变更时间"` DataUpdateTime time.Time `description:"最近一次数据发生变化的时间"` CreateTime time.Time `description:"创建时间"` ModifyTime time.Time `description:"修改时间"` } // EdbBusinessSource // @Description: 外部数据(商家)指标来源 type EdbBusinessSource struct { EdbBusinessSourceId int64 `orm:"column(edb_business_source_id);pk"` SourceName string `description:"来源名称"` // 来源名称 CreateTime time.Time `description:"创建时间"` // 创建时间 } // AddBusinessIndexReq // @Description: 添加外部指标(商家)请求 type AddBusinessIndexReq struct { IndexCode string `description:"指标编码"` IndexName string `description:"指标名称"` Unit string `description:"单位"` Frequency string `description:"频度"` SourceName string `description:"数据来源名称"` Remark string `description:"备注字段"` DataList []AddBusinessDataReq `description:"指标数据"` } // AddBusinessDataReq // @Description: 外部指标(商家系统)数据 type AddBusinessDataReq struct { Value float64 `description:"值"` Date string `description:"日期"` } func (m *BaseFromBusinessIndex) GetIndexItem(indexCode string) (item *BaseFromBusinessIndex, err error) { o := orm.NewOrm() sql := `SELECT * FROM base_from_business_index WHERE index_code = ? ` err = o.Raw(sql, indexCode).QueryRow(&item) return } func (m *BaseFromBusinessIndex) GetIndexCreate(terminalCode string) (items []*BaseFromBusinessIndex, err error) { o := orm.NewOrm() endTime := time.Now().Add(-2 * time.Minute).Format(utils.FormatDateTime) sql := `SELECT * FROM base_from_business_index WHERE index_name = '' AND create_time <= ? AND terminal_code = ? ` _, err = o.Raw(sql, endTime, terminalCode).QueryRows(&items) return } // Add 新增 func (m *BaseFromBusinessIndex) Add() (err error) { o := orm.NewOrm() lastId, err := o.Insert(m) if err != nil { return } m.BaseFromBusinessIndexId = lastId return } func (m *BaseFromBusinessIndex) Update(cols []string) (err error) { o := orm.NewOrm() _, err = o.Update(m, cols...) return } // GetNoMergeIndexByFrequencyCount 获取未合并的指标总数量 func (m *BaseFromBusinessIndex) GetNoMergeIndexByFrequencyCount(frequency string) (total int64, err error) { o := orm.NewOrm() sql := `SELECT count(1) AS total FROM base_from_business_index WHERE frequency = ? AND merge_file_path = '' AND index_name NOT LIKE "%停%" ` err = o.Raw(sql, frequency).QueryRow(&total) return } // GetIndexRefreshMethanolByTimely 获取需要及时刷新的文件 func (m *BaseFromBusinessIndex) GetIndexRefreshMethanolByTimely() (items []*BaseFromBusinessIndex, err error) { o := orm.NewOrm() sql := `SELECT * FROM base_from_business_index WHERE merge_file_path <> '' AND is_refresh = 1 GROUP BY merge_file_path` _, err = o.Raw(sql).QueryRows(&items) return } func (m *BaseFromBusinessIndex) GetIndexRefreshWeek(nowWeekZn, startTime, endTime string) (items []*BaseFromBusinessIndex, err error) { where := `update_week = ? AND ((update_time >= ? AND update_time <= ?) OR (update_time2 >= ? AND update_time2 <= ?)) ` o := orm.NewOrm() sql := fmt.Sprintf(`SELECT * FROM base_from_business_index WHERE %s `, where) _, err = o.Raw(sql, nowWeekZn, startTime, endTime, startTime, endTime).QueryRows(&items) return } func (m *BaseFromBusinessIndex) UpdateIndex(item *BaseFromBusinessIndex, updateCols []string) (err error) { if item == nil { return } if len(updateCols) == 0 { return } o := orm.NewOrm() _, err = o.Update(item, updateCols...) return } // GetEdbBusinessSourceItem // @Description: 根据来源名称获取来源信息 // @author: Roc // @receiver m // @datetime 2024-04-25 18:09:03 // @param sourceName string // @return item *EdbBusinessSource // @return err error func (m *EdbBusinessSource) GetEdbBusinessSourceItem(sourceName string) (item *EdbBusinessSource, err error) { o := orm.NewOrm() sql := `SELECT * FROM edb_business_source WHERE source_name = ? ` err = o.Raw(sql, sourceName).QueryRow(&item) return } // Add 新增 func (m *EdbBusinessSource) Add() (err error) { o := orm.NewOrm() lastId, err := o.Insert(m) if err != nil { return } m.EdbBusinessSourceId = lastId return }