trade_classify.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package trade_analysis
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "strings"
  7. "time"
  8. )
  9. // BaseFromTradeClassify 交易所分类表
  10. type BaseFromTradeClassify struct {
  11. Id uint64 `orm:"column(id);pk"`
  12. ClassifyName string //分类名称
  13. ClassifyType string //分类名称下的类型
  14. Exchange string //交易所
  15. LatestDate time.Time //数据最近的日期
  16. CreateTime time.Time //插入时间
  17. ModifyTime time.Time //修改时间
  18. }
  19. // GetAllBaseFromTradeClassify 获取所有的交易所分类列表
  20. func GetAllBaseFromTradeClassify() (list []*BaseFromTradeClassify, err error) {
  21. sql := `SELECT * FROM base_from_trade_classify `
  22. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&list).Error
  23. return
  24. }
  25. func GetTradeTopLastDataTime(exchange string, classifyName, classifyType string) (item *BaseFromTradeClassify, err error) {
  26. sql := `SELECT * FROM base_from_trade_classify WHERE exchange = ? AND classify_name=? `
  27. pars := make([]interface{}, 0)
  28. pars = append(pars, exchange)
  29. if exchange == "zhengzhou" {
  30. pars = append(pars, classifyType)
  31. } else {
  32. pars = append(pars, classifyName)
  33. sql += ` AND classify_type=? `
  34. pars = append(pars, classifyType)
  35. }
  36. sql += ` ORDER BY latest_date desc`
  37. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).First(&item).Error
  38. return
  39. }
  40. // GetClassifyTypeByClassifyName 根据分类名称获取分类类型
  41. func GetClassifyTypeByClassifyName(exchange, classifyName string) (item *TradeClassifyName, err error) {
  42. sql := `SELECT classify_name, classify_type FROM base_from_trade_classify WHERE exchange = ? AND classify_name=? `
  43. err = global.DbMap[utils.DbNameIndex].Raw(sql, exchange, classifyName).First(&item).Error
  44. return
  45. }
  46. func (m *BaseFromTradeClassify) TableName() string {
  47. return "base_from_trade_classify"
  48. }
  49. type BaseFromTradeClassifyCols struct {
  50. PrimaryId string
  51. Exchange string
  52. ClassifyName string
  53. ClassifyType string
  54. LatestDate string
  55. CreateTime string
  56. ModifyTime string
  57. }
  58. func (m *BaseFromTradeClassify) Cols() BaseFromTradeClassifyCols {
  59. return BaseFromTradeClassifyCols{
  60. PrimaryId: "id",
  61. Exchange: "exchange",
  62. ClassifyName: "classify_name",
  63. ClassifyType: "classify_type",
  64. LatestDate: "latest_date",
  65. CreateTime: "create_time",
  66. ModifyTime: "modify_time",
  67. }
  68. }
  69. func (m *BaseFromTradeClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromTradeClassify, err error) {
  70. fields := strings.Join(fieldArr, ",")
  71. if len(fieldArr) == 0 {
  72. fields = `*`
  73. }
  74. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  75. if orderRule != "" {
  76. order = ` ORDER BY ` + orderRule
  77. }
  78. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  79. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
  80. return
  81. }
  82. // GetClassifyItemsByCondition 获取品种信息
  83. func (m *BaseFromTradeClassify) GetClassifyItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromTradeClassify, err error) {
  84. fields := strings.Join(fieldArr, ",")
  85. if len(fieldArr) == 0 {
  86. fields = `*`
  87. }
  88. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  89. if orderRule != "" {
  90. order = ` ORDER BY ` + orderRule
  91. }
  92. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s GROUP BY %s %s`, fields, m.TableName(), condition, m.Cols().ClassifyName, order)
  93. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Find(&items).Error
  94. return
  95. }
  96. // BaseFromTradeClassifyItem 交易所品种信息
  97. type BaseFromTradeClassifyItem struct {
  98. ClassifyName string `description:"品种"`
  99. Exchange string `description:"交易所标识"`
  100. ExchangeName string `description:"交易所名称"`
  101. }
  102. // BaseFromTradeContractItem 交易所合约信息
  103. type BaseFromTradeContractItem struct {
  104. ClassifyName string `description:"品种"`
  105. Exchange string `description:"交易所标识"`
  106. ExchangeName string `description:"交易所名称"`
  107. ClassifyType string `description:"合约"`
  108. LatestDate string `description:"最近数据的日期"`
  109. CreateTime string `description:"创建时间"`
  110. }