|
|
@@ -1,6 +1,7 @@
|
|
|
package models
|
|
|
|
|
|
import (
|
|
|
+ "errors"
|
|
|
"mtp2_if/db"
|
|
|
"time"
|
|
|
)
|
|
|
@@ -136,6 +137,45 @@ func (Marketrun) TableName() string {
|
|
|
return "MARKETRUN"
|
|
|
}
|
|
|
|
|
|
+// Marketrunstepdetail 市场运行时间段明细
|
|
|
+type Marketrunstepdetail struct {
|
|
|
+ Autoid int64 `json:"autoid" xorm:"'AUTOID'" binding:"required"` // 自增ID
|
|
|
+ Marketid int32 `json:"marketid" xorm:"'MARKETID'" binding:"required"` // 市场ID -- 其它特殊如下 0-系统 1-交割服务 2-账户服务3-履约服务 4-仓单服务 5-积分服务 6-银行服务
|
|
|
+ Tradeweekday int32 `json:"tradeweekday" xorm:"'TRADEWEEKDAY'" binding:"required"` // 交易日归属 - 0:星期天、1:星期一、2:星期二、3:星期三、4:星期四、5:星期五、6:星期六
|
|
|
+ Sectionid int32 `json:"sectionid" xorm:"'SECTIONID'" binding:"required"` // 从 1 开始 往下编
|
|
|
+ Runstep int32 `json:"runstep" xorm:"'RUNSTEP'" binding:"required"` // 运行阶段 - 1:集合竞价、 2:连续竞价(交割) 3:-- 4:确认行权\交收时段\(补充交收
|
|
|
+ Startweekday int32 `json:"startweekday" xorm:"'STARTWEEKDAY'" binding:"required"` // 开市时间
|
|
|
+ Starttime string `json:"starttime" xorm:"'STARTTIME'" binding:"required"` // 起始时间(HH:mm)
|
|
|
+ Endweekday int32 `json:"endweekday" xorm:"'ENDWEEKDAY'" binding:"required"` // 休市时间
|
|
|
+ Endtime string `json:"endtime" xorm:"'ENDTIME'" binding:"required"` // 结束时间(HH:mm)
|
|
|
+ Startflag int32 `json:"startflag" xorm:"'STARTFLAG'"` // 开始日标识 - (-1:上日 0:当日 1:次日 )
|
|
|
+ Endflag int32 `json:"endflag" xorm:"'ENDFLAG'"` // 结束日标识 - (-1:上日 0:当日 1:次日 )
|
|
|
+}
|
|
|
+
|
|
|
+// TableName is MARKETRUNSTEPDETAIL
|
|
|
+func (Marketrunstepdetail) TableName() string {
|
|
|
+ return "MARKETRUNSTEPDETAIL"
|
|
|
+}
|
|
|
+
|
|
|
+// Quotesourcegrouprunstep 行情源分组开休市计划明细
|
|
|
+type Quotesourcegrouprunstep struct {
|
|
|
+ Groupid int32 `json:"groupid" xorm:"'GROUPID'" binding:"required"` // 分组ID
|
|
|
+ Tradeweekday int32 `json:"tradeweekday" xorm:"'TRADEWEEKDAY'" binding:"required"` // 交易日归属 - 0:星期天、1:星期一、2:星期二、3:星期三、4:星期四、5:星期五、6:星期六
|
|
|
+ Sectionid int32 `json:"sectionid" xorm:"'SECTIONID'" binding:"required"` // 从 1 开始 往下编 [0为系统清盘、结算时间] SectionId = 0时,开始时间=清盘时间 开始周几= 清盘周几, 结束时间=结算时间 结束周几=结算周几
|
|
|
+ Runstep int32 `json:"runstep" xorm:"'RUNSTEP'"` // 运行阶段 - 2:连续交易
|
|
|
+ Startweekday int32 `json:"startweekday" xorm:"'STARTWEEKDAY'"` // 起始周几
|
|
|
+ Starttime string `json:"starttime" xorm:"'STARTTIME'"` // 起始时间(HH:mm)
|
|
|
+ Endweekday int32 `json:"endweekday" xorm:"'ENDWEEKDAY'"` // 结束周几
|
|
|
+ Endtime string `json:"endtime" xorm:"'ENDTIME'"` // 结束时间(HH:mm)
|
|
|
+ Startflag int32 `json:"startflag" xorm:"'STARTFLAG'"` // 开始日标识 - (-1:上日 0:当日 1:次日 )
|
|
|
+ Endflag int32 `json:"endflag" xorm:"'ENDFLAG'"` // 结束日标识 - (-1:上日 0:当日 1:次日 )
|
|
|
+}
|
|
|
+
|
|
|
+// TableName is QUOTESOURCEGROUPRUNSTEP
|
|
|
+func (Quotesourcegrouprunstep) TableName() string {
|
|
|
+ return "QUOTESOURCEGROUPRUNSTEP"
|
|
|
+}
|
|
|
+
|
|
|
// GetMarket 获取市场信息
|
|
|
// 参数 marketID int 市场ID
|
|
|
// 返回值 *Market 市场信息
|
|
|
@@ -144,11 +184,15 @@ func GetMarket(marketID int) (*Market, error) {
|
|
|
engine := db.GetEngine()
|
|
|
|
|
|
var market Market
|
|
|
- if _, err := engine.Where("MARKETID = ?", marketID).Get(&market); err != nil {
|
|
|
+ has, err := engine.Where("MARKETID = ?", marketID).Get(&market)
|
|
|
+ if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
+ if has {
|
|
|
+ return &market, nil
|
|
|
+ }
|
|
|
|
|
|
- return &market, nil
|
|
|
+ return nil, nil
|
|
|
}
|
|
|
|
|
|
// GetMarketByGoodsCode 通过商品代码获取市场信息
|
|
|
@@ -159,10 +203,68 @@ func GetMarketByGoodsCode(goodsCode string) (*Market, error) {
|
|
|
engine := db.GetEngine()
|
|
|
|
|
|
var market Market
|
|
|
- if _, err := engine.Join("LEFT", "GOODS", "GOODS.MARKETID = MARKET.MARKETID").
|
|
|
- Where("GOODS.GOODSCODE = ?", goodsCode).Get(&market); err != nil {
|
|
|
+ has, err := engine.Join("LEFT", "GOODS", "GOODS.MARKETID = MARKET.MARKETID").
|
|
|
+ Where("GOODS.GOODSCODE = ?", goodsCode).Get(&market)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if has {
|
|
|
+ return &market, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil, nil
|
|
|
+}
|
|
|
+
|
|
|
+// GetMarketRun 获取目标市场运行参数信息
|
|
|
+// 参数 marketID int 市场ID
|
|
|
+// 返回值 *Marketrun 市场运行参数信息
|
|
|
+// 返回值 error 错误
|
|
|
+func GetMarketRun(marketID int) (*Marketrun, error) {
|
|
|
+ engine := db.GetEngine()
|
|
|
+
|
|
|
+ var marketRun Marketrun
|
|
|
+ has, err := engine.Where("MARKETID = ?", marketID).Get(&marketRun)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if has {
|
|
|
+ return &marketRun, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil, nil
|
|
|
+}
|
|
|
+
|
|
|
+// FindQuoteSourceGroupRunStepsByMarket 通过市场获取对应的行情源分组开休市计划明细信息
|
|
|
+// 参数 market Market 市场信息
|
|
|
+// 返回值 []Quotesourcegrouprunstep 行情源分组开休市计划明细信息
|
|
|
+// 返回值 error 错误
|
|
|
+func FindQuoteSourceGroupRunStepsByMarket(market Market) ([]Quotesourcegrouprunstep, error) {
|
|
|
+ if market.Trademode != 15 {
|
|
|
+ return nil, errors.New("目标市场非外部市场")
|
|
|
+ }
|
|
|
+
|
|
|
+ engine := db.GetEngine()
|
|
|
+ runSteps := make([]Quotesourcegrouprunstep, 0)
|
|
|
+ if err := engine.Join("INNER", "GOODSGROUP", "GOODSGROUP.GOODSGROUPID = QUOTESOURCEGROUPRUNSTEP.GROUPID").
|
|
|
+ Join("INNER", "MARKET", "MARKET.MARKETID = GOODSGROUP.MARKETID").
|
|
|
+ Where("QUOTESOURCEGROUPRUNSTEP.SECTIONID <> 0 and MARKET.MARKETID = ?", market.Marketid).Find(&runSteps); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return runSteps, nil
|
|
|
+}
|
|
|
+
|
|
|
+// FindMarketRunStepDetails 获取市场运行时间段明细
|
|
|
+// 参数 marketID int 市场ID
|
|
|
+// 返回值 Marketrunstepdetail 市场运行时间段明细
|
|
|
+// 返回值 error 错误
|
|
|
+func FindMarketRunStepDetails(marketID int) ([]Marketrunstepdetail, error) {
|
|
|
+ engine := db.GetEngine()
|
|
|
+
|
|
|
+ runSteps := make([]Marketrunstepdetail, 0)
|
|
|
+ if err := engine.Where("MARKETID = ?", marketID).Find(&runSteps); err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
|
|
|
- return &market, nil
|
|
|
+ return runSteps, nil
|
|
|
}
|