base_from_smm.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "time"
  8. )
  9. type BaseFromSmm struct {
  10. BaseFromSmmId int `orm:"column(base_from_smm_id);pk"`
  11. Aid int
  12. Name string
  13. Interface string
  14. ApiUpdate int
  15. ApiUpdateType string
  16. ApiType int
  17. ApiTypeAll string
  18. Type1 string `orm:"column(type_1)"`
  19. Type2 string `orm:"column(type_2)"`
  20. Type3 string `orm:"column(type_3)"`
  21. ApiStartTime string
  22. ApiUpdateTime string
  23. StartTime string
  24. FinishTime string
  25. AuthModule string
  26. AuthLang string
  27. ApiLabel string
  28. Enable string
  29. EditPerson string
  30. EditTime string
  31. AuthDur int
  32. AuthDurType string
  33. }
  34. func AddBaseFromSmm(item *BaseFromSmm) (lastId int64, err error) {
  35. o := orm.NewOrmUsingDB("data")
  36. lastId, err = o.Insert(item)
  37. return
  38. }
  39. func GetBaseFromSmmList() (list []*BaseFromSmm, err error) {
  40. o := orm.NewOrmUsingDB("data")
  41. sql := `SELECT * FROM base_from_smm `
  42. _, err = o.Raw(sql).QueryRows(&list)
  43. return
  44. }
  45. func GetBaseFromSmmBySmmCode(smmCode string) (item *BaseFromSmm, err error) {
  46. o := orm.NewOrmUsingDB("data")
  47. sql := `SELECT * FROM base_from_smm WHERE interface=?`
  48. err = o.Raw(sql, smmCode).QueryRow(&item)
  49. return
  50. }
  51. type BaseFromSmmIndex struct {
  52. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  53. ClassifyId int
  54. Interface string
  55. Name string
  56. IndexCode string
  57. IndexName string
  58. Type1 string `orm:"column(type_1)"`
  59. Type2 string `orm:"column(type_2)"`
  60. Type3 string `orm:"column(type_3)"`
  61. Frequency string
  62. Unit string
  63. ApiStartTime string
  64. ApiUpdateTime string
  65. StartTime string
  66. FinishTime string
  67. Sort int
  68. CreateTime time.Time
  69. ModifyTime time.Time
  70. data_state string
  71. }
  72. func AddBaseFromSmmIndex(item *BaseFromSmmIndex) (lastId int64, err error) {
  73. o := orm.NewOrmUsingDB("data")
  74. lastId, err = o.Insert(item)
  75. return
  76. }
  77. func GetBaseFromSmmIndex() (list []*BaseFromSmmIndex, err error) {
  78. o := orm.NewOrmUsingDB("data")
  79. sql := `SELECT * FROM base_from_smm_index `
  80. _, err = o.Raw(sql).QueryRows(&list)
  81. return
  82. }
  83. type BaseFromSmmData struct {
  84. SmmDataId int `orm:"column(smm_data_id);pk"`
  85. BaseFromSmmIndexId int
  86. IndexCode string
  87. DataTime string
  88. Value string
  89. CreateTime time.Time
  90. ModifyTime time.Time
  91. DataTimestamp int64
  92. }
  93. func AddBaseFromSmmData(item *BaseFromSmmData) (lastId int64, err error) {
  94. o := orm.NewOrmUsingDB("data")
  95. lastId, err = o.Insert(item)
  96. return
  97. }
  98. func GetBaseFromSmmDataAll() (list []*BaseFromSmmData, err error) {
  99. o := orm.NewOrmUsingDB("data")
  100. sql := `SELECT * FROM base_from_smm_data `
  101. _, err = o.Raw(sql).QueryRows(&list)
  102. return
  103. }
  104. func ModifyBaseFromSmmData(smmDataId int, value string) (err error) {
  105. o := orm.NewOrmUsingDB("data")
  106. sql := `UPDATE base_from_smm_data SET value=?,modify_time=NOW() WHERE smm_data_id=? `
  107. _, err = o.Raw(sql, value, smmDataId).Exec()
  108. return
  109. }
  110. func GetBaseFromSmmIndexBySmmCode(smmCode string) (list []*BaseFromSmmIndex, err error) {
  111. o := orm.NewOrmUsingDB("data")
  112. sql := ` SELECT * FROM base_from_smm_index WHERE interface=? `
  113. _, err = o.Raw(sql, smmCode).QueryRows(&list)
  114. return
  115. }
  116. func GetBaseFromSmmMaxOrMinDate(indexCode string) (min_date, max_date string, err error) {
  117. o := orm.NewOrmUsingDB("data")
  118. sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM base_from_smm_data WHERE index_code=? `
  119. err = o.Raw(sql, indexCode).QueryRow(&min_date, &max_date)
  120. return
  121. }
  122. func ModifyBaseFromSmmMinDateAndMaxDate(baseFromSmmIndexId int, minDate, maxDate string) (err error) {
  123. o := orm.NewOrmUsingDB("data")
  124. sql := ` UPDATE base_from_smm_index SET start_date=?,end_date=?,modify_time=NOW() WHERE base_from_smm_index_id=? `
  125. _, err = o.Raw(sql, minDate, maxDate, baseFromSmmIndexId).Exec()
  126. return
  127. }
  128. func GetBaseFromSmmDataAllByIndexCode(indexCode string) (list []*BaseFromSmmData, err error) {
  129. o := orm.NewOrmUsingDB("data")
  130. sql := `SELECT * FROM base_from_smm_data WHERE index_code=? `
  131. _, err = o.Raw(sql, indexCode).QueryRows(&list)
  132. return
  133. }
  134. func GetBaseFromSmmIndexByIndexCode(indexCode string) (list *BaseFromSmmIndex, err error) {
  135. o := orm.NewOrmUsingDB("data")
  136. sql := ` SELECT * FROM base_from_smm_index WHERE index_code=? `
  137. err = o.Raw(sql, indexCode).QueryRow(&list)
  138. return
  139. }
  140. // GetBaseFromSmmIndexCountByClassifyIds 获取分类下指标的个数
  141. func GetBaseFromSmmIndexCountByClassifyIds(classifyIds []int) (count int, err error) {
  142. o := orm.NewOrmUsingDB("data")
  143. num := len(classifyIds)
  144. if num <= 0 {
  145. return
  146. }
  147. sql := `SELECT COUNT(1) AS count FROM base_from_smm_index WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) `
  148. err = o.Raw(sql, classifyIds).QueryRow(&count)
  149. return
  150. }
  151. // GetBaseFromSmmIndexByClassifyId 获取根据分类查询指标
  152. func GetBaseFromSmmIndexByClassifyId(classifyId int) (list []*BaseFromSmmIndex, err error) {
  153. o := orm.NewOrmUsingDB("data")
  154. sql := `SELECT * FROM base_from_smm_index WHERE classify_id =? ORDER BY sort ASC, base_from_smm_index_id ASC `
  155. _, err = o.Raw(sql, classifyId).QueryRows(&list)
  156. return
  157. }
  158. // GetSmmIndexAll 用于分类展示
  159. func GetSmmIndexAll() (items []*BaseFromSmmClassifyItems, err error) {
  160. o := orm.NewOrmUsingDB("data")
  161. sql := ` SELECT base_from_smm_index_id, classify_id, index_name as classify_name, index_code as base_from_smm_index_code
  162. FROM base_from_smm_index ORDER BY sort ASC, base_from_smm_index_id ASC `
  163. _, err = o.Raw(sql).QueryRows(&items)
  164. return
  165. }
  166. // GetBaseFromSmmIndexByIndexId 根据指标id获取指标信息
  167. func GetBaseFromSmmIndexByIndexId(indexId int) (item *BaseFromSmmIndex, err error) {
  168. o := orm.NewOrmUsingDB("data")
  169. sql := `SELECT * FROM base_from_smm_index WHERE base_from_smm_index_id=? `
  170. err = o.Raw(sql, indexId).QueryRow(&item)
  171. return
  172. }
  173. // GetBaseFromSmmIndexMaxSortByClassifyId 根据指标id获取指标信息
  174. func GetBaseFromSmmIndexMaxSortByClassifyId(classifyId int) (sort int, err error) {
  175. o := orm.NewOrmUsingDB("data")
  176. sql := `SELECT max(sort) FROM base_from_smm_index WHERE classify_id=? `
  177. err = o.Raw(sql, classifyId).QueryRow(&sort)
  178. return
  179. }
  180. // GetBaseFromSmmIndexMinSortByClassifyId 获取最小不等于0的排序
  181. func GetBaseFromSmmIndexMinSortByClassifyId(classifyId int) (sort int, err error) {
  182. o := orm.NewOrmUsingDB("data")
  183. sql := `SELECT min(sort) FROM base_from_smm_index WHERE classify_id=? and sort <> 0 `
  184. err = o.Raw(sql, classifyId).QueryRow(&sort)
  185. return
  186. }
  187. type BaseFromSmmIndexType struct {
  188. Type2 string `orm:"column(type_2)"`
  189. Type3 string `orm:"column(type_3)"`
  190. }
  191. // GetBaseFromSmmIndexType 获取历史指标信息类型
  192. func GetBaseFromSmmIndexType() (list []BaseFromSmmIndexType, err error) {
  193. o := orm.NewOrmUsingDB("data")
  194. sql := `SELECT type_2, type_3 from base_from_smm_index where type_2 <> "" GROUP BY type_2, type_3`
  195. _, err = o.Raw(sql).QueryRows(&list)
  196. return
  197. }
  198. // MoveBaseFromSmmIndex 移动指标分类
  199. func MoveBaseFromSmmIndex(chartInfoId, classifyId int) (err error) {
  200. o := orm.NewOrmUsingDB("data")
  201. sql := ` UPDATE base_from_smm_index
  202. SET
  203. classify_id = ?, modify_time=NOW()
  204. WHERE base_from_smm_index_id = ?`
  205. _, err = o.Raw(sql, classifyId, chartInfoId).Exec()
  206. return
  207. }
  208. // UpdateBaseFromSmmIndexByClassifyId 根据指标id更新排序
  209. func UpdateBaseFromSmmIndexByClassifyId(classifyId, nowSort, prevIndexInfoId int, updateSort string) (err error) {
  210. o := orm.NewOrmUsingDB("data")
  211. sql := ` update base_from_smm_index set sort = ` + updateSort + ` WHERE classify_id=? AND `
  212. if prevIndexInfoId > 0 {
  213. sql += ` ( sort > ? or (base_from_smm_index_id > ` + fmt.Sprint(prevIndexInfoId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  214. }
  215. _, err = o.Raw(sql, classifyId, nowSort).Exec()
  216. return
  217. }
  218. // MoveUpSmmIndexBySort 往上移动
  219. func MoveUpSmmIndexBySort(classifyId, nextSort, currentSort int) (err error) {
  220. o := orm.NewOrmUsingDB("data")
  221. sql := `update base_from_smm_index set sort = sort + 1 where classify_id=? and sort >= ? and sort< ?`
  222. _, err = o.Raw(sql, classifyId, nextSort, currentSort).Exec()
  223. return
  224. }
  225. // MoveDownSmmIndexBySort 往下移动
  226. func MoveDownSmmIndexBySort(classifyId, prevSort, currentSort int) (err error) {
  227. o := orm.NewOrmUsingDB("data")
  228. sql := `update base_from_smm_index set sort = sort - 1 where classify_id=? and sort <= ? and sort> ? `
  229. _, err = o.Raw(sql, classifyId, prevSort, currentSort).Exec()
  230. return
  231. }
  232. // GetFirstBaseFromSmmIndexByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  233. func GetFirstBaseFromSmmIndexByClassifyId(classifyId int) (item *BaseFromSmmIndex, err error) {
  234. o := orm.NewOrmUsingDB("data")
  235. sql := ` SELECT * FROM base_from_smm_index WHERE classify_id=? order by sort asc,base_from_smm_index_id asc limit 1`
  236. err = o.Raw(sql, classifyId).QueryRow(&item)
  237. return
  238. }
  239. // Update 更新Smm指标基础信息
  240. func (item *BaseFromSmmIndex) Update(cols []string) (err error) {
  241. o := orm.NewOrmUsingDB("data")
  242. _, err = o.Update(item, cols...)
  243. return
  244. }
  245. // DeleteBaseFromSmmIndexById 根据指标id删除对应的指标、指标数据
  246. func DeleteBaseFromSmmIndexById(smmIndexId int) (err error) {
  247. o := orm.NewOrmUsingDB("data")
  248. to, err := o.Begin()
  249. if err != nil {
  250. return
  251. }
  252. defer func() {
  253. if err != nil {
  254. _ = to.Rollback()
  255. } else {
  256. _ = to.Commit()
  257. }
  258. }()
  259. //删除指标
  260. sql := `DELETE FROM base_from_smm_index WHERE base_from_smm_index_id = ? `
  261. _, err = to.Raw(sql, smmIndexId).Exec()
  262. if err != nil {
  263. return
  264. }
  265. //删除指标数据
  266. sql = `DELETE FROM base_from_smm_data WHERE base_from_smm_index_id = ? `
  267. _, err = to.Raw(sql, smmIndexId).Exec()
  268. if err != nil {
  269. return
  270. }
  271. return
  272. }
  273. // EditSmmIndexInfoResp 新增指标的返回
  274. type EditSmmIndexInfoResp struct {
  275. BaseFromSmmIndexId int `description:"指标ID"`
  276. IndexCode string `description:"指标code"`
  277. }
  278. type SmmSingleDataResp struct {
  279. BaseFromSmmIndexId int
  280. ClassifyId int
  281. Interface string
  282. Name string
  283. IndexCode string
  284. IndexName string
  285. Frequency string
  286. Unit string
  287. ApiStartTime string
  288. ApiUpdateTime string
  289. StartTime string
  290. FinishTime string
  291. CreateTime string
  292. ModifyTime string
  293. Data []*SmmIndexData
  294. }
  295. func GetSmmIndexDataList(condition, sortStr string, pars []interface{}, startSize, pageSize int) (items []*BaseFromSmmIndex, err error) {
  296. sql := `select * FROM base_from_smm_index
  297. WHERE 1=1 `
  298. if condition != "" {
  299. sql += condition
  300. }
  301. sql += ` ORDER BY ` + sortStr
  302. sql += ` limit ?,? `
  303. o := orm.NewOrmUsingDB("data")
  304. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  305. return
  306. }
  307. func GetSmmIndexDataListCount(condition string, pars []interface{}) (total int, err error) {
  308. sql := `select count(1) FROM base_from_smm_index
  309. WHERE 1=1 `
  310. if condition != "" {
  311. sql += condition
  312. }
  313. o := orm.NewOrmUsingDB("data")
  314. err = o.Raw(sql, pars).QueryRow(&total)
  315. return
  316. }
  317. type BaseFromSmmIndexListResp struct {
  318. List []*BaseFromSmmIndex
  319. Paging *paging.PagingItem `description:"分页数据"`
  320. }