base_from_business_data.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package data_manage
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/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-04-26 13:42:19
  58. // @param sort []string
  59. // @param whereParams interface{}
  60. // @return result []BaseFromBusinessData
  61. // @return err error
  62. func (m *BaseFromBusinessData) GetAllDataList(condition string, pars []interface{}, order string) (result []*BaseFromBusinessData, err error) {
  63. sql := `SELECT * FROM base_from_business_data WHERE 1=1 `
  64. if condition != `` {
  65. sql += ` ` + condition
  66. }
  67. if order != `` {
  68. sql += ` ORDER BY ` + order
  69. }
  70. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&result).Error
  71. return
  72. }
  73. // GetLimitDataList
  74. // @Description: 根据条件获取指定数量数据列表
  75. // @author: Roc
  76. // @receiver m
  77. // @datetime 2024-05-06 17:08:32
  78. // @param whereParams interface{}
  79. // @param size int64
  80. // @return result []*BaseFromBusinessData
  81. // @return err error
  82. func (m *BaseFromBusinessData) GetLimitDataList(condition string, pars []interface{}, order string, size int64) (result []*BaseFromBusinessData, err error) {
  83. sql := `SELECT * FROM base_from_business_data WHERE 1=1 `
  84. if condition != `` {
  85. sql += ` ` + condition
  86. }
  87. if order != `` {
  88. sql += ` ORDER BY ` + order
  89. }
  90. sql += fmt.Sprintf(` LIMIT %d`, size)
  91. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&result).Error
  92. return
  93. }
  94. // GetPageDataList
  95. // @Description: 根据条件获取分页数据列表
  96. // @author: Roc
  97. // @receiver m
  98. // @datetime 2024-05-07 10:21:07
  99. // @param whereParams interface{}
  100. // @param startSize int64
  101. // @param size int64
  102. // @param sort []string
  103. // @return result []*BaseFromBusinessData
  104. // @return err error
  105. func (m *BaseFromBusinessData) GetPageDataList(condition []string, pars []interface{}, order string, startSize, size int64) (result []*BaseFromBusinessData, err error) {
  106. sql := `SELECT * FROM base_from_business_data `
  107. if len(condition) > 0 {
  108. sql += ` WHERE ` + strings.Join(condition, " AND ")
  109. }
  110. if order != `` {
  111. sql += ` ORDER BY ` + order
  112. }
  113. sql += fmt.Sprintf(` LIMIT %d,%d`, startSize, size)
  114. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&result).Error
  115. return
  116. }
  117. // GetCountDataList
  118. // @Description: 根据条件获取数据列表总数
  119. // @author: Roc
  120. // @receiver m
  121. // @datetime 2024-05-07 10:29:00
  122. // @param whereParams interface{}
  123. // @return count int64
  124. // @return err error
  125. func (m *BaseFromBusinessData) GetCountDataList(condition []string, pars []interface{}) (count int64, err error) {
  126. sqlStr := `SELECT COUNT(1) FROM base_from_business_data `
  127. if len(condition) > 0 {
  128. sqlStr += ` WHERE ` + strings.Join(condition, " AND ")
  129. }
  130. var totalNull sql.NullInt64
  131. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, pars).Scan(&totalNull).Error
  132. if !totalNull.Valid {
  133. count = 0
  134. } else {
  135. count = totalNull.Int64
  136. }
  137. return
  138. }
  139. // InsertDataByColl
  140. // @Description: 写入单条数据(外部传入集合)
  141. // @author: Roc
  142. // @receiver m
  143. // @datetime 2024-04-26 14:22:18
  144. // @param addData interface{}
  145. // @return err error
  146. func (m *BaseFromBusinessData) InsertDataByColl(addData interface{}) (err error) {
  147. err = global.DbMap[utils.DbNameIndex].Create(addData).Error
  148. return
  149. }
  150. // BatchInsertData
  151. // @Description: 批量写入数据
  152. // @author: Roc
  153. // @receiver m
  154. // @datetime 2024-04-26 14:22:18
  155. // @param bulk int 每次请求保存的数据量
  156. // @param dataList []interface{}
  157. // @return err error
  158. func (m *BaseFromBusinessData) BatchInsertData(bulk int, dataList []interface{}) (err error) {
  159. err = global.DbMap[utils.DbNameIndex].CreateInBatches(dataList, bulk).Error
  160. return
  161. }
  162. // UpdateData
  163. // @Description: 单条数据修改
  164. // @author: Roc
  165. // @receiver m
  166. // @datetime 2024-04-26 15:01:51
  167. // @param whereParams interface{}
  168. // @param updateParams interface{}
  169. // @return err error
  170. func (m *BaseFromBusinessData) UpdateData(updateCols []string) (err error) {
  171. //_, err = o.Update(m, updateCols...)
  172. //if err != nil {
  173. // fmt.Println("UpdateDataByColl:Err:" + err.Error())
  174. // return
  175. //}
  176. err = global.DbMap[utils.DbNameIndex].Select(updateCols).Updates(m).Error
  177. return
  178. }
  179. // GetEdbInfoMaxAndMinInfo
  180. // @Description: 获取当前指标的最大最小值
  181. // @author: Roc
  182. // @receiver m
  183. // @datetime 2024-04-30 17:15:39
  184. // @param whereParams interface{}
  185. // @return result EdbInfoMaxAndMinInfo
  186. // @return err error
  187. func (m *BaseFromBusinessData) GetEdbInfoMaxAndMinInfo(indexCode string) (result EdbInfoMaxAndMinInfo, err error) {
  188. sql := ``
  189. 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 = ? `
  190. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).First(&result).Error
  191. if err != nil {
  192. return
  193. }
  194. var latestValue float64
  195. sql = ` SELECT value AS latest_value FROM base_from_business_data WHERE index_code = ? ORDER BY data_time DESC LIMIT 1 `
  196. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&latestValue).Error
  197. result.LatestValue = latestValue
  198. return
  199. }