trade_classify.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package trade_analysis
  2. import (
  3. "eta/eta_index_lib/global"
  4. "fmt"
  5. "strings"
  6. "time"
  7. )
  8. // BaseFromTradeClassify 交易所分类表
  9. type BaseFromTradeClassify struct {
  10. Id uint64 `gorm:"column:id;primaryKey"`
  11. ClassifyName string //分类名称
  12. ClassifyType string //分类名称下的类型
  13. Exchange string //交易所
  14. LatestDate time.Time //数据最近的日期
  15. CreateTime time.Time //插入时间
  16. ModifyTime time.Time //修改时间
  17. }
  18. func (m *BaseFromTradeClassify) TableName() string {
  19. return "base_from_trade_classify"
  20. }
  21. type BaseFromTradeClassifyCols struct {
  22. PrimaryId string
  23. Exchange string
  24. ClassifyName string
  25. ClassifyType string
  26. LatestDate string
  27. CreateTime string
  28. ModifyTime string
  29. }
  30. func (m *BaseFromTradeClassify) Cols() BaseFromTradeClassifyCols {
  31. return BaseFromTradeClassifyCols{
  32. PrimaryId: "id",
  33. Exchange: "exchange",
  34. ClassifyName: "classify_name",
  35. ClassifyType: "classify_type",
  36. LatestDate: "latest_date",
  37. CreateTime: "create_time",
  38. ModifyTime: "modify_time",
  39. }
  40. }
  41. func (m *BaseFromTradeClassify) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromTradeClassify, err error) {
  42. fields := strings.Join(fieldArr, ",")
  43. if len(fieldArr) == 0 {
  44. fields = `*`
  45. }
  46. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  47. if orderRule != "" {
  48. order = ` ORDER BY ` + orderRule
  49. }
  50. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  51. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  52. return
  53. }
  54. // GetClassifyItemsByCondition 获取品种信息
  55. func (m *BaseFromTradeClassify) GetClassifyItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromTradeClassify, err error) {
  56. fields := strings.Join(fieldArr, ",")
  57. if len(fieldArr) == 0 {
  58. fields = `*`
  59. }
  60. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  61. if orderRule != "" {
  62. order = ` ORDER BY ` + orderRule
  63. }
  64. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s GROUP BY %s %s`, fields, m.TableName(), condition, m.Cols().ClassifyName, order)
  65. err = global.DEFAULT_DB.Raw(sql, pars...).Find(&items).Error
  66. return
  67. }