base_from_business_data.go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. package models
  2. import (
  3. "errors"
  4. "eta/eta_index_lib/global"
  5. "eta/eta_index_lib/utils"
  6. "fmt"
  7. "strings"
  8. "time"
  9. )
  10. // BaseFromBusinessData
  11. // @Description: 外部指标(商家系统)原始数据表
  12. type BaseFromBusinessData struct {
  13. //BusinessDataId int `orm:"column(business_data_id);pk" json:"business_data_id"`
  14. BusinessDataId int `gorm:"column:business_data_id;primaryKey" json:"business_data_id"`
  15. BaseFromBusinessIndexId int `json:"base_from_business_index_id"` // 指标id
  16. IndexCode string `json:"index_code"` // 指标编码
  17. DataTime time.Time `json:"data_time"` // 数据日期
  18. Value float64 `json:"value"` // 数据值
  19. CreateTime time.Time `json:"create_time"` // 创建时间
  20. ModifyTime time.Time `json:"modify_time"` // 修改时间
  21. }
  22. // TableName
  23. // @Description: 获取表名
  24. // @author: Roc
  25. // @receiver m
  26. // @datetime 2024-04-26 13:41:36
  27. // @return string
  28. func (m *BaseFromBusinessData) TableName() string {
  29. return "base_from_business_data"
  30. }
  31. // CollectionName
  32. // @Description: 获取集合名称
  33. // @author: Roc
  34. // @receiver m
  35. // @datetime 2024-04-26 13:41:36
  36. // @return string
  37. func (m *BaseFromBusinessData) CollectionName() string {
  38. return "base_from_business_data"
  39. }
  40. // DataBaseName
  41. // @Description: 获取数据库名称
  42. // @author: Roc
  43. // @receiver m
  44. // @datetime 2024-04-26 13:41:33
  45. // @return string
  46. func (m *BaseFromBusinessData) DataBaseName() string {
  47. return utils.MgoDataDbName
  48. }
  49. type WhereParams struct {
  50. Condition string
  51. Pars []interface{}
  52. Order string `description:"排序字段"`
  53. }
  54. // GetAllDataList
  55. // @Description: 根据条件获取所有数据
  56. // @author: Roc
  57. // @receiver m
  58. // @datetime 2024-07-01 17:18:57
  59. // @param condition []string
  60. // @param pars []interface{}
  61. // @param order string
  62. // @return result []*BaseFromBusinessData
  63. // @return err error
  64. func (m *BaseFromBusinessData) GetAllDataList(condition []string, pars []interface{}, order string) (result []*BaseFromBusinessData, err error) {
  65. //o := orm.NewOrm()
  66. sql := `SELECT * FROM base_from_business_data `
  67. if len(condition) > 0 {
  68. sql += ` WHERE ` + strings.Join(condition, " AND ")
  69. }
  70. if order != `` {
  71. sql += ` ORDER BY ` + order
  72. }
  73. //_, err = o.Raw(sql, pars).QueryRows(&result)
  74. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error
  75. return
  76. }
  77. // GetLimitDataList
  78. // @Description: 根据条件获取指定数量数据列表
  79. // @author: Roc
  80. // @receiver m
  81. // @datetime 2024-07-01 17:19:16
  82. // @param condition []string
  83. // @param pars []interface{}
  84. // @param order string
  85. // @param size int64
  86. // @return result []*BaseFromBusinessData
  87. // @return err error
  88. func (m *BaseFromBusinessData) GetLimitDataList(condition []string, pars []interface{}, order string, size int64) (result []*BaseFromBusinessData, err error) {
  89. //o := orm.NewOrm()
  90. sql := `SELECT * FROM base_from_business_data `
  91. if len(condition) > 0 {
  92. sql += ` WHERE ` + strings.Join(condition, " AND ")
  93. }
  94. if order != `` {
  95. sql += ` ORDER BY ` + order
  96. }
  97. sql += fmt.Sprintf(` LIMIT %d`, size)
  98. //_, err = o.Raw(sql, pars).QueryRows(&result)
  99. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error
  100. return
  101. }
  102. // GetPageDataList
  103. // @Description: 根据条件获取分页数据列表
  104. // @author: Roc
  105. // @receiver m
  106. // @datetime 2024-07-01 17:19:42
  107. // @param condition []string
  108. // @param pars []interface{}
  109. // @param order string
  110. // @param startSize int64
  111. // @param size int64
  112. // @return result []*BaseFromBusinessData
  113. // @return err error
  114. func (m *BaseFromBusinessData) GetPageDataList(condition []string, pars []interface{}, order string, startSize, size int64) (result []*BaseFromBusinessData, err error) {
  115. //o := orm.NewOrm()
  116. sql := `SELECT * FROM base_from_business_data `
  117. if len(condition) > 0 {
  118. sql += ` WHERE ` + strings.Join(condition, " AND ")
  119. }
  120. if order != `` {
  121. sql += ` ORDER BY ` + order
  122. }
  123. sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, size)
  124. //_, err = o.Raw(sql, pars).QueryRows(&result)
  125. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&result).Error
  126. return
  127. }
  128. // GetCountDataList
  129. // @Description: 根据条件获取数据列表总数
  130. // @author: Roc
  131. // @receiver m
  132. // @datetime 2024-07-01 17:19:50
  133. // @param condition []string
  134. // @param pars []interface{}
  135. // @return count int64
  136. // @return err error
  137. func (m *BaseFromBusinessData) GetCountDataList(condition []string, pars []interface{}) (count int64, err error) {
  138. //o := orm.NewOrm()
  139. sql := `SELECT COUNT(1) FROM base_from_business_data `
  140. if len(condition) > 0 {
  141. sql += ` WHERE ` + strings.Join(condition, " AND ")
  142. }
  143. //err = o.Raw(sql, pars).QueryRow(&count)
  144. err = global.DEFAULT_DB.Raw(sql, pars...).Scan(&count).Error
  145. return
  146. }
  147. // InsertDataByColl
  148. // @Description: 写入单条数据(外部传入集合)
  149. // @author: Roc
  150. // @receiver m
  151. // @datetime 2024-04-26 14:22:18
  152. // @param addData interface{}
  153. // @return err error
  154. func (m *BaseFromBusinessData) InsertDataByColl(addData interface{}) (err error) {
  155. //o := orm.NewOrm()
  156. //_, err = o.Insert(addData)
  157. err = global.DEFAULT_DB.Create(&addData).Error
  158. return
  159. }
  160. // BatchInsertData
  161. // @Description: 批量写入数据
  162. // @author: Roc
  163. // @receiver m
  164. // @datetime 2024-04-26 14:22:18
  165. // @param bulk int 每次请求保存的数据量
  166. // @param dataList []*BaseFromBusinessData
  167. // @return err error
  168. func (m *BaseFromBusinessData) BatchInsertData(bulk int, dataList []*BaseFromBusinessData) (err error) {
  169. //o := orm.NewOrm()
  170. //_, err = o.InsertMulti(bulk, dataList)
  171. err = global.DEFAULT_DB.CreateInBatches(&dataList, bulk).Error
  172. return
  173. }
  174. // UpdateData
  175. // @Description: 单条数据修改
  176. // @author: Roc
  177. // @receiver m
  178. // @datetime 2024-04-26 15:01:51
  179. // @param whereParams interface{}
  180. // @param updateParams interface{}
  181. // @return err error
  182. func (m *BaseFromBusinessData) UpdateData(updateCols []string) (err error) {
  183. //o := orm.NewOrm()
  184. //_, err = o.Update(m, updateCols...)
  185. err = global.DEFAULT_DB.Model(&m).Select(updateCols).Updates(&m).Error
  186. if err != nil {
  187. fmt.Println("UpdateDataByColl:Err:" + err.Error())
  188. return
  189. }
  190. return
  191. }
  192. // HandleData
  193. // @Description: 数据处理
  194. // @author: Roc
  195. // @receiver m
  196. // @datetime 2024-07-01 17:35:54
  197. // @param addDataList []*BaseFromBusinessData
  198. // @param updateDataList []*BaseFromBusinessData
  199. // @return err error
  200. func (m *BaseFromBusinessData) HandleData(addDataList, updateDataList []*BaseFromBusinessData) (err error) {
  201. //o := orm.NewOrm()
  202. //to, err := o.Begin()
  203. to := global.DEFAULT_DB.Begin()
  204. if err != nil {
  205. return
  206. }
  207. defer func() {
  208. if err != nil {
  209. fmt.Println("BaseFromBusinessData HandleData,Err:" + err.Error())
  210. _ = to.Rollback()
  211. } else {
  212. _ = to.Commit()
  213. }
  214. }()
  215. // 插入数据
  216. if len(addDataList) > 0 {
  217. //_, err = to.InsertMulti(500, addDataList)
  218. err = to.CreateInBatches(&addDataList, 500).Error
  219. if err != nil {
  220. return
  221. }
  222. }
  223. // 修改
  224. if len(updateDataList) > 0 {
  225. for _, v := range updateDataList {
  226. //_, err = to.Update(v, "Value", "ModifyTime")
  227. err = to.Model(&v).Select([]string{"Value", "ModifyTime"}).Updates(&v).Error
  228. if err != nil {
  229. fmt.Println("BaseFromBusinessData HandleData Update:Err:" + err.Error())
  230. return
  231. }
  232. }
  233. }
  234. return
  235. }
  236. // GetEdbInfoMaxAndMinInfo
  237. // @Description: 获取当前指标的最大最小值
  238. // @author: Roc
  239. // @receiver m
  240. // @datetime 2024-04-30 17:15:39
  241. // @param whereParams interface{}
  242. // @return result EdbInfoMaxAndMinInfo
  243. // @return err error
  244. func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(indexCode string) (result EdbInfoMaxAndMinInfo, err error) {
  245. //o := orm.NewOrm()
  246. sql := ``
  247. 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 = ? `
  248. //err = o.Raw(sql, indexCode).QueryRow(&result)
  249. err = global.DEFAULT_DB.Raw(sql, indexCode).Find(&result).Error
  250. if err != nil {
  251. return
  252. }
  253. var latestValue float64
  254. sql = ` SELECT value AS latest_value FROM base_from_business_data WHERE index_code = ? ORDER BY data_time DESC LIMIT 1 `
  255. //err = o.Raw(sql, indexCode).QueryRow(&latestValue)
  256. err = global.DEFAULT_DB.Raw(sql, indexCode).Scan(&latestValue).Error
  257. result.LatestValue = latestValue
  258. return
  259. }
  260. // DelDataByCond
  261. // @Description: 根据条件删除多条数据
  262. // @author: Roc
  263. // @receiver m
  264. // @datetime 2024-07-01 17:46:56
  265. // @param condition []string
  266. // @param pars []interface{}
  267. // @return err error
  268. func (m *BaseFromBusinessData) DelDataByCond(condition []string, pars []interface{}) (err error) {
  269. if len(condition) <= 0 {
  270. err = errors.New("条件不能为空")
  271. return
  272. }
  273. //o := orm.NewOrm()
  274. sql := `DELETE FROM base_from_business_data `
  275. sql += ` WHERE ` + strings.Join(condition, " AND ")
  276. //_, err = o.Raw(sql, pars).Exec()
  277. err = global.DEFAULT_DB.Exec(sql, pars...).Error
  278. return
  279. }