config.go 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package models
  2. import (
  3. "mtp2_if/db"
  4. "time"
  5. )
  6. // Accounttradeconfig 账户交易参数配置表
  7. type Accounttradeconfig struct {
  8. Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 自增ID
  9. Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账号
  10. Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID
  11. Memberuserid int64 `json:"memberuserid" xorm:"'MEMBERUSERID'"` // 所属会员ID
  12. Goodsid int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
  13. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  14. Ruletype int32 `json:"ruletype" xorm:"'RULETYPE'"` // 参数类型 -1.保证金类 2.交易规则 3.交易费用
  15. Paramid int32 `json:"paramid" xorm:"'PARAMID'"` // 个性化参数ID - 1. 参照"交易模式规则费用对应-参考表" 可个性化类型 2.保证金类保存交易所创建的投资者客户类别ID
  16. Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'"` // 费用算法 - 1:比率 2:固定
  17. Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'"` // 参数值(保证金类此项为空)
  18. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
  19. Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
  20. Tradetype int32 `json:"tradetype" xorm:"'TRADETYPE'"` // 交易类型[交易费用] - 1:投资者\自营 2:做市
  21. }
  22. // TableName is ACCOUNTTRADECONFIG
  23. func (Accounttradeconfig) TableName() string {
  24. return "ACCOUNTTRADECONFIG"
  25. }
  26. // Usergrouptradeconfig 用户分组交易参数配置表 (个性化到用户分组或资金账号)
  27. type Usergrouptradeconfig struct {
  28. Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 自增ID
  29. Usergroupid int64 `json:"usergroupid" xorm:"'USERGROUPID'" binding:"required"` // 用户分组ID(0的为会员默认设置)
  30. Memberuserid int64 `json:"memberuserid" xorm:"'MEMBERUSERID'"` // 所属会员ID
  31. Goodsid int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
  32. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  33. Ruletype int32 `json:"ruletype" xorm:"'RULETYPE'"` // 参数类型 -1.保证金类 2.交易规则 3.交易费用
  34. Paramid int32 `json:"paramid" xorm:"'PARAMID'"` // 个性化参数ID - 1. 参照"交易模式规则费用对应-参考表" 可个性化类型 2.保证金类保存交易所创建的投资者客户类别ID
  35. Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'"` // 费用算法 - 1:比率 2:固定
  36. Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'"` // 参数值(保证金类此项为空)
  37. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
  38. Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
  39. }
  40. // TableName is USERGROUPTRADECONFIG
  41. func (Usergrouptradeconfig) TableName() string {
  42. return "USERGROUPTRADECONFIG"
  43. }
  44. // Goodstraderule 商品交易规则表
  45. type Goodstraderule struct {
  46. Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID
  47. Ruleid int32 `json:"ruleid" xorm:"'RULEID'" binding:"required"` // 交易规则 - 101 最大买持仓量 102 最大卖持仓量 103 单笔最小建仓量 104 单笔最大建仓量 105 手续费收费规则 106 交易T+N 107 上市首日涨停 108 上市首日跌停 109 上市首日参考价 110 涨停 111 跌停 112 市价最大偏移范围 113 止损点差 114 止盈点差 115 单笔最小交割数量 116 单笔最大交割数量
  48. Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'" binding:"required"` // 参数值
  49. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  50. }
  51. // TableName is GOODSTRADERULE
  52. func (Goodstraderule) TableName() string {
  53. return "GOODSTRADERULE"
  54. }
  55. // Goodstradefee 商品交易费用表
  56. type Goodstradefee struct {
  57. Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID
  58. Tradefeeid int32 `json:"tradefeeid" xorm:"'TRADEFEEID'" binding:"required"` // 交易费用ID - 101建仓(买)手续费 102平仓(卖)手续费 103买递延费(仓储费) 103卖递延费 104买交割手续费 105卖交割手续费
  59. Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'" binding:"required"` // 费用算法 - 1:比率 2:固定
  60. Exchangevalue float64 `json:"exchangevalue" xorm:"'EXCHANGEVALUE'" binding:"required"` // 交易所费用值
  61. Memberdefaultvalue float64 `json:"memberdefaultvalue" xorm:"'MEMBERDEFAULTVALUE'" binding:"required"` // 会员费用默认值
  62. Memberminvalue float64 `json:"memberminvalue" xorm:"'MEMBERMINVALUE'"` // 会员费用最小值
  63. Membermaxvalue float64 `json:"membermaxvalue" xorm:"'MEMBERMAXVALUE'"` // 会员费用最大值
  64. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  65. }
  66. // TableName is GOODSTRADEFEE
  67. func (Goodstradefee) TableName() string {
  68. return "GOODSTRADEFEE"
  69. }
  70. // Goodsgrouptraderule 商品组交易规则表
  71. type Goodsgrouptraderule struct {
  72. Goodsgroupid int32 `json:"goodsgroupid" xorm:"'GOODSGROUPID'" binding:"required"` // 商品组ID
  73. Ruleid int32 `json:"ruleid" xorm:"'RULEID'" binding:"required"` // 交易规则 - 101 最大买持仓量 102 最大卖持仓量 103 单笔最小建仓量 104 单笔最大建仓量 105 手续费收费规则 106 交易T+N 107 上市首日涨停 108 上市首日跌停 109 上市首日参考价 110 涨停 111 跌停 112 市价最大偏移范围 113 止损点差 114 止盈点差 115 单笔最小交割数量 116 单笔最大交割数量
  74. Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'" binding:"required"` // 参数值
  75. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  76. }
  77. // TableName is GOODSGROUPTRADERULE
  78. func (Goodsgrouptraderule) TableName() string {
  79. return "GOODSGROUPTRADERULE"
  80. }
  81. // Goodsgrouptradefee 商品组交易费用表
  82. type Goodsgrouptradefee struct {
  83. Goodsgroupid int32 `json:"goodsgroupid" xorm:"'GOODSGROUPID'" binding:"required"` // 商品组ID
  84. Tradefeeid int32 `json:"tradefeeid" xorm:"'TRADEFEEID'" binding:"required"` // 交易费用ID - 101建仓(买)手续费 102平仓(卖)手续费 103买递延费(仓储费) 103卖递延费 104买交割手续费 105卖交割手续费
  85. Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'" binding:"required"` // 费用算法 - 1:比率 2:固定
  86. Exchangevalue float64 `json:"exchangevalue" xorm:"'EXCHANGEVALUE'" binding:"required"` // 交易所费用值
  87. Memberdefaultvalue float64 `json:"memberdefaultvalue" xorm:"'MEMBERDEFAULTVALUE'" binding:"required"` // 会员费用默认值
  88. Memberminvalue float64 `json:"memberminvalue" xorm:"'MEMBERMINVALUE'"` // 会员费用最小值
  89. Membermaxvalue float64 `json:"membermaxvalue" xorm:"'MEMBERMAXVALUE'"` // 会员费用最大值
  90. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  91. }
  92. // TableName is GOODSGROUPTRADEFEE
  93. func (Goodsgrouptradefee) TableName() string {
  94. return "GOODSGROUPTRADEFEE"
  95. }
  96. // Goodsmarginconfig 商品保证金配置表
  97. type Goodsmarginconfig struct {
  98. Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID
  99. Customertypeid int64 `json:"customertypeid" xorm:"'CUSTOMERTYPEID'" binding:"required"` // 投资者客户类别(枚举项的值)
  100. Marginalgorithm int32 `json:"marginalgorithm" xorm:"'MARGINALGORITHM'"` // 保证金计算方式 - 1:比率 2.固定
  101. Marketmarginvalue float64 `json:"marketmarginvalue" xorm:"'MARKETMARGINVALUE'"` // 即市保证金值
  102. Reckonmarginvalue float64 `json:"reckonmarginvalue" xorm:"'RECKONMARGINVALUE'"` // 结算保证金值
  103. Lockmarginvalue float64 `json:"lockmarginvalue" xorm:"'LOCKMARGINVALUE'"` // 锁仓保证金
  104. Isdefault int32 `json:"isdefault" xorm:"'ISDEFAULT'"` // 是否默认 - 0:非默认 1:默认
  105. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  106. Realmarginvalue float64 `json:"realmarginvalue" xorm:"'REALMARGINVALUE'"` // 实付保证金值[做市收益权市场“是否交易授信” = 1 ]
  107. Realmarginalgorithm int32 `json:"realmarginalgorithm" xorm:"'REALMARGINALGORITHM'"` // 实付保证金计算方式 - 1:比率 2.固定
  108. }
  109. // TableName is GOODSMARGINCONFIG
  110. func (Goodsmarginconfig) TableName() string {
  111. return "GOODSMARGINCONFIG"
  112. }
  113. // GetTodayAccountTradeRule 获取今日账户交易规则信息
  114. func GetTodayAccountTradeRule(accountID, goodsID int) (*Todayaccounttraderule, error) {
  115. engine := db.GetEngine()
  116. var rule Todayaccounttraderule
  117. var has bool
  118. var err error
  119. // 先尝试获取账户定制配置
  120. if accountID > 0 {
  121. has, err = engine.Where("ACCOUNTID = ?", accountID).And("TRADETYPE = 1 and GOODSID = ?", goodsID).Get(&rule)
  122. if err != nil {
  123. return nil, err
  124. }
  125. }
  126. // 无定制配置则取通用配置(accountID = 0)
  127. if !has {
  128. has, err = engine.Where("TRADETYPE = 1 and ACCOUNTID = 0 and GOODSID = ?", goodsID).Get(&rule)
  129. if err != nil {
  130. return nil, err
  131. }
  132. }
  133. if !has {
  134. // 无配置信息
  135. return nil, nil
  136. }
  137. return &rule, nil
  138. }