package models import ( "mtp2_if/db" "time" ) // Accounttradeconfig 账户交易参数配置表 type Accounttradeconfig struct { Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 自增ID Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账号 Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID Memberuserid int64 `json:"memberuserid" xorm:"'MEMBERUSERID'"` // 所属会员ID Goodsid int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Ruletype int32 `json:"ruletype" xorm:"'RULETYPE'"` // 参数类型 -1.保证金类 2.交易规则 3.交易费用 Paramid int32 `json:"paramid" xorm:"'PARAMID'"` // 个性化参数ID - 1. 参照"交易模式规则费用对应-参考表" 可个性化类型 2.保证金类保存交易所创建的投资者客户类别ID Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'"` // 费用算法 - 1:比率 2:固定 Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'"` // 参数值(保证金类此项为空) Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间 Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人 Tradetype int32 `json:"tradetype" xorm:"'TRADETYPE'"` // 交易类型[交易费用] - 1:投资者\自营 2:做市 } // TableName is ACCOUNTTRADECONFIG func (Accounttradeconfig) TableName() string { return "ACCOUNTTRADECONFIG" } // Usergrouptradeconfig 用户分组交易参数配置表 (个性化到用户分组或资金账号) type Usergrouptradeconfig struct { Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 自增ID Usergroupid int64 `json:"usergroupid" xorm:"'USERGROUPID'" binding:"required"` // 用户分组ID(0的为会员默认设置) Memberuserid int64 `json:"memberuserid" xorm:"'MEMBERUSERID'"` // 所属会员ID Goodsid int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Ruletype int32 `json:"ruletype" xorm:"'RULETYPE'"` // 参数类型 -1.保证金类 2.交易规则 3.交易费用 Paramid int32 `json:"paramid" xorm:"'PARAMID'"` // 个性化参数ID - 1. 参照"交易模式规则费用对应-参考表" 可个性化类型 2.保证金类保存交易所创建的投资者客户类别ID Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'"` // 费用算法 - 1:比率 2:固定 Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'"` // 参数值(保证金类此项为空) Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间 Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人 } // TableName is USERGROUPTRADECONFIG func (Usergrouptradeconfig) TableName() string { return "USERGROUPTRADECONFIG" } // Goodstraderule 商品交易规则表 type Goodstraderule struct { Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID 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 单笔最大交割数量 Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'" binding:"required"` // 参数值 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID } // TableName is GOODSTRADERULE func (Goodstraderule) TableName() string { return "GOODSTRADERULE" } // Goodstradefee 商品交易费用表 type Goodstradefee struct { Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID Tradefeeid int32 `json:"tradefeeid" xorm:"'TRADEFEEID'" binding:"required"` // 交易费用ID - 101建仓(买)手续费 102平仓(卖)手续费 103买递延费(仓储费) 103卖递延费 104买交割手续费 105卖交割手续费 Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'" binding:"required"` // 费用算法 - 1:比率 2:固定 Exchangevalue float64 `json:"exchangevalue" xorm:"'EXCHANGEVALUE'" binding:"required"` // 交易所费用值 Memberdefaultvalue float64 `json:"memberdefaultvalue" xorm:"'MEMBERDEFAULTVALUE'" binding:"required"` // 会员费用默认值 Memberminvalue float64 `json:"memberminvalue" xorm:"'MEMBERMINVALUE'"` // 会员费用最小值 Membermaxvalue float64 `json:"membermaxvalue" xorm:"'MEMBERMAXVALUE'"` // 会员费用最大值 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID } // TableName is GOODSTRADEFEE func (Goodstradefee) TableName() string { return "GOODSTRADEFEE" } // Goodsgrouptraderule 商品组交易规则表 type Goodsgrouptraderule struct { Goodsgroupid int32 `json:"goodsgroupid" xorm:"'GOODSGROUPID'" binding:"required"` // 商品组ID 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 单笔最大交割数量 Paramvalue float64 `json:"paramvalue" xorm:"'PARAMVALUE'" binding:"required"` // 参数值 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID } // TableName is GOODSGROUPTRADERULE func (Goodsgrouptraderule) TableName() string { return "GOODSGROUPTRADERULE" } // Goodsgrouptradefee 商品组交易费用表 type Goodsgrouptradefee struct { Goodsgroupid int32 `json:"goodsgroupid" xorm:"'GOODSGROUPID'" binding:"required"` // 商品组ID Tradefeeid int32 `json:"tradefeeid" xorm:"'TRADEFEEID'" binding:"required"` // 交易费用ID - 101建仓(买)手续费 102平仓(卖)手续费 103买递延费(仓储费) 103卖递延费 104买交割手续费 105卖交割手续费 Feealgorithm int32 `json:"feealgorithm" xorm:"'FEEALGORITHM'" binding:"required"` // 费用算法 - 1:比率 2:固定 Exchangevalue float64 `json:"exchangevalue" xorm:"'EXCHANGEVALUE'" binding:"required"` // 交易所费用值 Memberdefaultvalue float64 `json:"memberdefaultvalue" xorm:"'MEMBERDEFAULTVALUE'" binding:"required"` // 会员费用默认值 Memberminvalue float64 `json:"memberminvalue" xorm:"'MEMBERMINVALUE'"` // 会员费用最小值 Membermaxvalue float64 `json:"membermaxvalue" xorm:"'MEMBERMAXVALUE'"` // 会员费用最大值 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID } // TableName is GOODSGROUPTRADEFEE func (Goodsgrouptradefee) TableName() string { return "GOODSGROUPTRADEFEE" } // Goodsmarginconfig 商品保证金配置表 type Goodsmarginconfig struct { Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID Customertypeid int64 `json:"customertypeid" xorm:"'CUSTOMERTYPEID'" binding:"required"` // 投资者客户类别(枚举项的值) Marginalgorithm int32 `json:"marginalgorithm" xorm:"'MARGINALGORITHM'"` // 保证金计算方式 - 1:比率 2.固定 Marketmarginvalue float64 `json:"marketmarginvalue" xorm:"'MARKETMARGINVALUE'"` // 即市保证金值 Reckonmarginvalue float64 `json:"reckonmarginvalue" xorm:"'RECKONMARGINVALUE'"` // 结算保证金值 Lockmarginvalue float64 `json:"lockmarginvalue" xorm:"'LOCKMARGINVALUE'"` // 锁仓保证金 Isdefault int32 `json:"isdefault" xorm:"'ISDEFAULT'"` // 是否默认 - 0:非默认 1:默认 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Realmarginvalue float64 `json:"realmarginvalue" xorm:"'REALMARGINVALUE'"` // 实付保证金值[做市收益权市场“是否交易授信” = 1 ] Realmarginalgorithm int32 `json:"realmarginalgorithm" xorm:"'REALMARGINALGORITHM'"` // 实付保证金计算方式 - 1:比率 2.固定 } // TableName is GOODSMARGINCONFIG func (Goodsmarginconfig) TableName() string { return "GOODSMARGINCONFIG" } // Todayaccounttraderule 今日账户交易规则信表 控制服务在待开市时清空表,然后从基础数表生成数据,各服务使用此表数据做为当天交易参数,当日修改的数据隔日生效 type Todayaccounttraderule struct { Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 账号ID Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID Infocontent string `json:"infocontent" xorm:"'INFOCONTENT'"` // 交易规则信息(存储配置的Protobuffer串) Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Createdate time.Time `json:"createdate" xorm:"'CREATEDATE'"` // 创建时间 Tradetype int32 `json:"tradetype" xorm:"'TRADETYPE'" binding:"required"` // 交易类型 - 1:投资者\自营 2:做市 } // TableName is TODAY_ACCOUNTTRADERULE func (Todayaccounttraderule) TableName() string { return "TODAY_ACCOUNTTRADERULE" } // GetTodayAccountTradeRule 获取今日账户交易规则信息 func GetTodayAccountTradeRule(accountID, goodsID int) (*Todayaccounttraderule, error) { engine := db.GetEngine() var rule Todayaccounttraderule var has bool var err error // 先尝试获取账户定制配置 if accountID > 0 { has, err = engine.Where("ACCOUNTID = ?", accountID).And("TRADETYPE = 1 and GOODSID = ?", goodsID).Get(&rule) if err != nil { return nil, err } } // 完定制配置则取通用配置(accountID = 0) if !has { has, err = engine.Where("TRADETYPE = 1 and GOODSID = ?", goodsID).Get(&rule) if err != nil { return nil, err } } if !has { // 无配置信息 return nil, nil } return &rule, nil }