package models import ( sql2 "database/sql" "errors" "eta/eta_index_lib/global" "eta/eta_index_lib/utils" "fmt" "strings" "time" ) // BaseFromBusinessData // @Description: 外部指标(商家系统)原始数据表 type BaseFromBusinessData struct { //BusinessDataId int `orm:"column(business_data_id);pk" json:"business_data_id"` BusinessDataId int `gorm:"column:business_data_id;primaryKey" json:"business_data_id"` BaseFromBusinessIndexId int `json:"base_from_business_index_id"` // 指标id IndexCode string `json:"index_code"` // 指标编码 DataTime time.Time `json:"data_time"` // 数据日期 Value float64 `json:"value"` // 数据值 CreateTime time.Time `json:"create_time"` // 创建时间 ModifyTime time.Time `json:"modify_time"` // 修改时间 } // TableName // @Description: 获取表名 // @author: Roc // @receiver m // @datetime 2024-04-26 13:41:36 // @return string func (m *BaseFromBusinessData) TableName() string { return "base_from_business_data" } // CollectionName // @Description: 获取集合名称 // @author: Roc // @receiver m // @datetime 2024-04-26 13:41:36 // @return string func (m *BaseFromBusinessData) CollectionName() string { return "base_from_business_data" } // DataBaseName // @Description: 获取数据库名称 // @author: Roc // @receiver m // @datetime 2024-04-26 13:41:33 // @return string func (m *BaseFromBusinessData) DataBaseName() string { return utils.MgoDataDbName } type WhereParams struct { Condition string Pars []interface{} Order string `description:"排序字段"` } // GetAllDataList // @Description: 根据条件获取所有数据 // @author: Roc // @receiver m // @datetime 2024-07-01 17:18:57 // @param condition []string // @param pars []interface{} // @param order string // @return result []*BaseFromBusinessData // @return err error func (m *BaseFromBusinessData) GetAllDataList(condition []string, pars []interface{}, order string) (result []*BaseFromBusinessData, err error) { //o := orm.NewOrm() sql := `SELECT * FROM base_from_business_data ` if len(condition) > 0 { sql += ` WHERE ` + strings.Join(condition, " AND ") } if order != `` { sql += ` ORDER BY ` + order } //_, err = o.Raw(sql, pars).QueryRows(&result) err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error return } // GetLimitDataList // @Description: 根据条件获取指定数量数据列表 // @author: Roc // @receiver m // @datetime 2024-07-01 17:19:16 // @param condition []string // @param pars []interface{} // @param order string // @param size int64 // @return result []*BaseFromBusinessData // @return err error func (m *BaseFromBusinessData) GetLimitDataList(condition []string, pars []interface{}, order string, size int64) (result []*BaseFromBusinessData, err error) { //o := orm.NewOrm() sql := `SELECT * FROM base_from_business_data ` if len(condition) > 0 { sql += ` WHERE ` + strings.Join(condition, " AND ") } if order != `` { sql += ` ORDER BY ` + order } sql += fmt.Sprintf(` LIMIT %d`, size) //_, err = o.Raw(sql, pars).QueryRows(&result) err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error return } // GetPageDataList // @Description: 根据条件获取分页数据列表 // @author: Roc // @receiver m // @datetime 2024-07-01 17:19:42 // @param condition []string // @param pars []interface{} // @param order string // @param startSize int64 // @param size int64 // @return result []*BaseFromBusinessData // @return err error func (m *BaseFromBusinessData) GetPageDataList(condition []string, pars []interface{}, order string, startSize, size int64) (result []*BaseFromBusinessData, err error) { //o := orm.NewOrm() sql := `SELECT * FROM base_from_business_data ` if len(condition) > 0 { sql += ` WHERE ` + strings.Join(condition, " AND ") } if order != `` { sql += ` ORDER BY ` + order } sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, size) //_, err = o.Raw(sql, pars).QueryRows(&result) err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error return } // GetCountDataList // @Description: 根据条件获取数据列表总数 // @author: Roc // @receiver m // @datetime 2024-07-01 17:19:50 // @param condition []string // @param pars []interface{} // @return count int64 // @return err error func (m *BaseFromBusinessData) GetCountDataList(condition []string, pars []interface{}) (count int64, err error) { //o := orm.NewOrm() sql := `SELECT COUNT(1) FROM base_from_business_data ` if len(condition) > 0 { sql += ` WHERE ` + strings.Join(condition, " AND ") } //err = o.Raw(sql, pars).QueryRow(&count) err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error return } // InsertDataByColl // @Description: 写入单条数据(外部传入集合) // @author: Roc // @receiver m // @datetime 2024-04-26 14:22:18 // @param addData interface{} // @return err error func (m *BaseFromBusinessData) InsertDataByColl(addData interface{}) (err error) { //o := orm.NewOrm() //_, err = o.Insert(addData) err = global.DEFAULT_DB.Create(&addData).Error return } // BatchInsertData // @Description: 批量写入数据 // @author: Roc // @receiver m // @datetime 2024-04-26 14:22:18 // @param bulk int 每次请求保存的数据量 // @param dataList []*BaseFromBusinessData // @return err error func (m *BaseFromBusinessData) BatchInsertData(bulk int, dataList []*BaseFromBusinessData) (err error) { //o := orm.NewOrm() //_, err = o.InsertMulti(bulk, dataList) err = global.DEFAULT_DB.CreateInBatches(&dataList, bulk).Error return } // UpdateData // @Description: 单条数据修改 // @author: Roc // @receiver m // @datetime 2024-04-26 15:01:51 // @param whereParams interface{} // @param updateParams interface{} // @return err error func (m *BaseFromBusinessData) UpdateData(updateCols []string) (err error) { //o := orm.NewOrm() //_, err = o.Update(m, updateCols...) err = global.DEFAULT_DB.Model(&m).Select(updateCols).Updates(&m).Error if err != nil { fmt.Println("UpdateDataByColl:Err:" + err.Error()) return } return } // HandleData // @Description: 数据处理 // @author: Roc // @receiver m // @datetime 2024-07-01 17:35:54 // @param addDataList []*BaseFromBusinessData // @param updateDataList []*BaseFromBusinessData // @return err error func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFromBusinessData) (err error) { //o := orm.NewOrm() //to, err := o.Begin() to := global.DEFAULT_DB.Begin() if err != nil { return } defer func() { if err != nil { fmt.Println("BaseFromBusinessData HandleData,Err:" + err.Error()) _ = to.Rollback() } else { _ = to.Commit() } }() // 插入数据 if len(addDataList) > 0 { //_, err = to.InsertMulti(500, addDataList) err = to.CreateInBatches(&addDataList, utils.MultiAddNum).Error if err != nil { return } } // 修改 if len(updateDataList) > 0 { for _, v := range updateDataList { //_, err = to.Update(v, "Value", "ModifyTime") err = to.Model(&v).Select([]string{"Value", "ModifyTime"}).Updates(&v).Error if err != nil { fmt.Println("BaseFromBusinessData HandleData Update:Err:" + err.Error()) return } } } return } // GetEdbInfoMaxAndMinInfo // @Description: 获取当前指标的最大最小值 // @author: Roc // @receiver m // @datetime 2024-04-30 17:15:39 // @param whereParams interface{} // @return result EdbInfoMaxAndMinInfo // @return err error func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(indexCode string) (result EdbInfoMaxAndMinInfo, err error) { //o := orm.NewOrm() sql := `` sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM base_from_business_data WHERE index_code = ? ` //err = o.Raw(sql, indexCode).QueryRow(&result) err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&result).Error if err != nil { return } sql = ` SELECT value AS latest_value FROM base_from_business_data WHERE index_code = ? ORDER BY data_time DESC LIMIT 1 ` //err = o.Raw(sql, indexCode).QueryRow(&latestValue) var latestValueNull sql2.NullFloat64 err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValueNull).Error if err == nil && latestValueNull.Valid { result.LatestValue = latestValueNull.Float64 } return } // DelDataByCond // @Description: 根据条件删除多条数据 // @author: Roc // @receiver m // @datetime 2024-07-01 17:46:56 // @param condition []string // @param pars []interface{} // @return err error func (m *BaseFromBusinessData) DelDataByCond(condition []string, pars []interface{}) (err error) { if len(condition) <= 0 { err = errors.New("条件不能为空") return } //o := orm.NewOrm() sql := `DELETE FROM base_from_business_data ` sql += ` WHERE ` + strings.Join(condition, " AND ") //_, err = o.Raw(sql, pars).Exec() err = global.DEFAULT_DB.Exec(sql, pars...).Error return }