smm_data.go 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "github.com/beego/beego/v2/client/orm"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. )
  7. type SmmClassify struct {
  8. TypeName string `orm:"column(type_name)" description:"分类名称"`
  9. TypeCode string `orm:"column(type_code)" description:"分类名称编码"`
  10. }
  11. func GetSmmClassify() (items []*SmmClassify, err error) {
  12. sql := `SELECT CONCAT(type_2,type_3) AS type_name,CONCAT(type_2,'#',type_3) type_code FROM base_from_smm_index GROUP BY CONCAT(type_2,type_3) ORDER BY CONCAT(type_2,type_3) ASC `
  13. o := orm.NewOrmUsingDB("data")
  14. o.Raw(sql).QueryRows(&items)
  15. return
  16. }
  17. type SmmFrequency struct {
  18. Frequency string `description:"频度"`
  19. }
  20. func GetSmmFrequencyByClassifyId(classifyId int) (items []*GlFrequency, err error) {
  21. o := orm.NewOrmUsingDB("data")
  22. sql := ` SELECT frequency FROM base_from_smm_index WHERE classify_id = ? `
  23. sql += ` GROUP BY frequency ORDER BY frequency ASC `
  24. _, err = o.Raw(sql, classifyId).QueryRows(&items)
  25. return
  26. }
  27. type SmmIndex struct {
  28. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  29. Interface string
  30. Name string
  31. IndexCode string
  32. IndexName string
  33. Type1 string `orm:"column(type_1)"`
  34. Type2 string `orm:"column(type_2)"`
  35. Type3 string `orm:"column(type_3)"`
  36. Frequency string
  37. Unit string
  38. ApiStartTime string
  39. ApiUpdateTime string
  40. StartTime string
  41. FinishTime string
  42. CreateTime string
  43. ModifyTime string
  44. }
  45. type SmmIndexItem struct {
  46. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  47. ClassifyId int
  48. ParentClassifyId int
  49. Interface string
  50. Name string
  51. IndexCode string
  52. IndexName string
  53. Type1 string `orm:"column(type_1)"`
  54. Type2 string `orm:"column(type_2)"`
  55. Type3 string `orm:"column(type_3)"`
  56. Frequency string
  57. Unit string
  58. ApiStartTime string
  59. ApiUpdateTime string
  60. StartTime string
  61. FinishTime string
  62. CreateTime string
  63. ModifyTime string
  64. }
  65. func GetSmmIndex(condition string, pars interface{}) (items []*SmmIndex, err error) {
  66. o := orm.NewOrmUsingDB("data")
  67. sql := ` SELECT * FROM base_from_smm_index WHERE 1=1 `
  68. if condition != "" {
  69. sql += condition
  70. }
  71. sql += `ORDER BY sort ASC, base_from_smm_index_id asc`
  72. _, err = o.Raw(sql, pars).QueryRows(&items)
  73. return
  74. }
  75. type SmmExportIndex struct {
  76. TypeName string
  77. IndexCode string
  78. IndexName string
  79. Type1 string `orm:"column(type_1)"`
  80. Type2 string `orm:"column(type_2)"`
  81. Type3 string `orm:"column(type_3)"`
  82. Frequency string
  83. Unit string
  84. ModifyTime string
  85. }
  86. func GetExportSmmIndex(typeCodes []string) (items []*SmmExportIndex, err error) {
  87. if len(typeCodes) == 0 {
  88. return
  89. }
  90. o := orm.NewOrmUsingDB("data")
  91. sql := ` SELECT *,CONCAT(type_2, "#", type_3) AS type_name FROM base_from_smm_index WHERE CONCAT(type_2, "#", type_3) IN (` + utils.GetOrmInReplace(len(typeCodes)) + `) ORDER BY frequency ASC,index_code ASC`
  92. _, err = o.Raw(sql, typeCodes).QueryRows(&items)
  93. return
  94. }
  95. func GetSmmFrequency(classifyId int) (items []*string, err error) {
  96. sql := `SELECT DISTINCT frequency FROM base_from_smm_index WHERE classify_id=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  97. o := orm.NewOrmUsingDB("data")
  98. _, err = o.Raw(sql, classifyId).QueryRows(&items)
  99. return
  100. }
  101. func GetSmmFrequencyByCode(code string) (items []*string, err error) {
  102. sql := `SELECT DISTINCT frequency FROM base_from_smm_index WHERE index_code=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  103. o := orm.NewOrmUsingDB("data")
  104. _, err = o.Raw(sql, code).QueryRows(&items)
  105. return
  106. }
  107. type SmmIndexList struct {
  108. BaseFromSmmIndexId int `orm:"column(base_from_smm_index_id);pk"`
  109. Interface string
  110. Name string
  111. IndexCode string
  112. IndexName string
  113. Type1 string `orm:"column(type_1)"`
  114. Type2 string `orm:"column(type_2)"`
  115. Type3 string `orm:"column(type_3)"`
  116. Frequency string
  117. Unit string
  118. ApiStartTime string
  119. ApiUpdateTime string
  120. StartTime string
  121. FinishTime string
  122. ModifyTime string
  123. DataList []*SmmIndexData
  124. Paging *paging.PagingItem `description:"分页数据"`
  125. }
  126. type SmmIndexData struct {
  127. Value string `orm:"column(value)" description:"日期"`
  128. DataTime string `orm:"column(data_time)" description:"值"`
  129. }
  130. func GetSmmIndexData(indexCode string, startSize, pageSize int) (items []*SmmIndexData, err error) {
  131. o := orm.NewOrmUsingDB("data")
  132. sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  133. _, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
  134. return
  135. }
  136. func GetSmmIndexDataCount(indexCode string) (count int, err error) {
  137. o := orm.NewOrmUsingDB("data")
  138. sql := ` SELECT COUNT(1) AS count FROM base_from_smm_data WHERE index_code=? `
  139. err = o.Raw(sql, indexCode).QueryRow(&count)
  140. return
  141. }
  142. // GetSmmItemList 模糊查询Smm数据库指标列表
  143. func GetSmmItemList(keyword string) (items []*SmmIndexItem, err error) {
  144. o := orm.NewOrmUsingDB("data")
  145. sql := "SELECT * FROM base_from_smm_index WHERE CONCAT(index_name,index_code) LIKE '%" + keyword + "%'"
  146. _, err = o.Raw(sql).QueryRows(&items)
  147. return
  148. }
  149. func GetSmmIndexDataByCode(indexCode string) (items []*SmmIndexData, err error) {
  150. o := orm.NewOrmUsingDB("data")
  151. sql := ` SELECT * FROM base_from_smm_data WHERE index_code=? ORDER BY data_time DESC `
  152. _, err = o.Raw(sql, indexCode).QueryRows(&items)
  153. return
  154. }
  155. func GetSmmDataMaxCount(classifyId int) (count int, err error) {
  156. o := orm.NewOrmUsingDB("data")
  157. sql := `SELECT MAX(t.num) AS count FROM (
  158. SELECT COUNT(1) AS num FROM base_from_smm_index AS a
  159. INNER JOIN base_from_smm_data AS b ON a.index_code=b.index_code
  160. WHERE a.classify_id=?
  161. GROUP BY a.base_from_smm_index_id
  162. )AS t `
  163. err = o.Raw(sql, classifyId).QueryRow(&count)
  164. return
  165. }
  166. type ExportSmmDataMaxCount struct {
  167. TypeName string
  168. Count int
  169. }
  170. func GetExportSmmDataMaxCount(typeCodes []string) (items []*ExportSmmDataMaxCount, err error) {
  171. if len(typeCodes) == 0 {
  172. return
  173. }
  174. o := orm.NewOrmUsingDB("data")
  175. sql := ` SELECT
  176. MAX(t.num) AS count,
  177. t.type_name
  178. FROM
  179. (
  180. SELECT
  181. COUNT(1) AS num,
  182. CONCAT(a.type_2, "#", a.type_3) AS type_name
  183. FROM
  184. base_from_smm_index AS a
  185. INNER JOIN base_from_smm_data AS b ON a.index_code = b.index_code
  186. WHERE
  187. CONCAT(a.type_2, "#", a.type_3) IN (` + utils.GetOrmInReplace(len(typeCodes)) + `)
  188. GROUP BY
  189. a.base_from_smm_index_id
  190. ) AS t
  191. GROUP BY
  192. type_name `
  193. _, err = o.Raw(sql, typeCodes).QueryRows(&items)
  194. return
  195. }
  196. type ExportSmmIndexData struct {
  197. Value string `orm:"column(value)" description:"日期"`
  198. DataTime string `orm:"column(data_time)" description:"值"`
  199. IndexCode string `orm:"column(index_code)" description:"指标编码"`
  200. }
  201. func GetExportSmmIndexDataByCodes(indexCodes []string) (items []*ExportSmmIndexData, err error) {
  202. if len(indexCodes) == 0 {
  203. return
  204. }
  205. o := orm.NewOrmUsingDB("data")
  206. sql := ` SELECT index_code,data_time,value FROM base_from_smm_data WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `) ORDER BY data_time DESC `
  207. _, err = o.Raw(sql, indexCodes).QueryRows(&items)
  208. return
  209. }