base_from_business_data.go 8.9 KB

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