base_from_business_data.go 8.7 KB

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