tjmd.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. /**
  2. * @Author: zou.yingbin
  3. * @Create : 2021/9/7 16:01
  4. * @Modify : 2021/9/7 16:01
  5. * @note : 天津麦顿
  6. */
  7. package models
  8. import (
  9. "fmt"
  10. "mtp2_if/db"
  11. "mtp2_if/pb"
  12. "mtp2_if/utils"
  13. "github.com/golang/protobuf/proto"
  14. )
  15. // TjmdQuoteGoods 掉期报价列表
  16. type TjmdQuoteGoods struct {
  17. GOODSID int64 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 合约id
  18. GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 合约代码
  19. GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 合约名称
  20. REFGOODSID int64 `json:"refgoodsid" xorm:"'REFGOODSID'"` // 标的合约id
  21. REFGOODSCODE string `json:"refgoodscode" xorm:"'REFGOODSCODE'"` // 标的合约代码
  22. REFGOODSNAME string `json:"refgoodsname" xorm:"'REFGOODSNAME'"` // 标的合约名称
  23. SELLQTY float64 `json:"sellqty" xorm:"'SELLQTY'"` // 卖量(暂不做, 无值, 保留字段)
  24. BUYQTY float64 `json:"buyqty" xorm:"'BUYQTY'"` // 买量(暂不做, 无值, 保留字段)
  25. GOODSGROUPID int64 `json:"goodsgroupid" xorm:"'GOODSGROUPID'" form:"goodsgroupid"` // 商品组ID(自增ID)
  26. GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'GOODSGROUPNAME'"` // 商品组名称
  27. UserType int32 `json:"-" form:"usertype"` // 用户类型
  28. FtMarketIds string `json:"-" form:"marketids"` // 市场id, 格式 1,2,3
  29. DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
  30. }
  31. func (r *TjmdQuoteGoods) calc() {
  32. }
  33. func (r *TjmdQuoteGoods) buildSql() string {
  34. var sqlId utils.SQLVal = `
  35. select g1.goodsid,
  36. g1.goodscode,
  37. g1.goodsname,
  38. g1.decimalplace,
  39. g2.goodsid refgoodsid,
  40. g2.goodscode refgoodscode,
  41. g2.goodsname refgoodsname,
  42. gp.goodsgroupid,
  43. gp.goodsgroupname,
  44. gp.outergroupcode goodsgroupcode,
  45. gp.marketid
  46. from goods g1
  47. left join goods g2
  48. on g1.refgoodsid = g2.goodsid
  49. left join goodsgroup gp
  50. on g1.goodsgroupid = gp.goodsgroupid
  51. where 1=1 and g1.goodsstatus = 3
  52. `
  53. sqlId.JoinEx(r.FtMarketIds != "", fmt.Sprintf(" and gp.marketid in(%v)", r.FtMarketIds))
  54. return sqlId.String()
  55. }
  56. // GetDataEx 获取掉期报价列表
  57. func (r *TjmdQuoteGoods) GetDataEx() (interface{}, error) {
  58. sData := make([]TjmdQuoteGoods, 0)
  59. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  60. for i := range sData {
  61. sData[i].calc()
  62. }
  63. return sData, err
  64. }
  65. // TjmdTradeOrderDetail 买卖大厅
  66. type TjmdTradeOrderDetail struct {
  67. ORDERID string `json:"orderid" xorm:"'ORDERID'"` // 委托单号
  68. GOODSID int32 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 商品id
  69. BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'" form:"buyorsell"` // 买卖方向 0-买 1-卖
  70. ORDERPRICE SFLOAT64 `json:"orderprice" xorm:"'ORDERPRICE'"` // 委托价格
  71. ORDERQTY int64 `json:"orderqty" xorm:"'ORDERQTY'"` // 委托数量
  72. USERID int64 `json:"userid" xorm:"'USERID'" form:"userid"` // 用户id
  73. USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称(已脱敏)
  74. PRICEMODE int32 `json:"pricemode" xorm:"'PRICEMODE'"` // 取价方式 - 1:市价 2: 限价 3:浮动价
  75. MARKETMAXSUB float64 `json:"marketmaxsub" xorm:"'MARKETMAXSUB'"` // 市价最大偏移范围 [浮动价 - 点差]
  76. PageEx `xorm:"extends"`
  77. USERTYPE int32 `json:"-" form:"usertype"` // 用户类型
  78. FtMarketIds string `json:"-" form:"marketids"` // 市场id, 格式 1,2,3
  79. }
  80. func (r *TjmdTradeOrderDetail) calc() {
  81. r.USERNAME = EncryptByStar(r.USERNAME)
  82. }
  83. func (r *TjmdTradeOrderDetail) buildSql() string {
  84. var sqlId utils.SQLVal = `
  85. select to_char(t.orderid) orderid,
  86. t.buyorsell,
  87. t.goodsid,
  88. t.orderprice,
  89. t.orderqty - t.tradeqty orderqty,
  90. u.userid,
  91. u.accountname username,
  92. t.orderstatus,
  93. t.pricemode,
  94. t.marketmaxsub,
  95. g.marketid
  96. from trade_orderdetail t
  97. left join taaccount ta
  98. on t.accountid = ta.accountid
  99. left join useraccount u
  100. on ta.relateduserid = u.userid
  101. left join goods g on t.goodsid=g.goodsid
  102. where 1 = 1
  103. and t.orderstatus in (3, 7)
  104. and (u.usertype = decode(%v,2,5,2) or u.userid = %v)
  105. `
  106. // 投资者只能看到会员的单, 会员只能看到投资者的单, decode(%v,2,5,-1); or u.userid=r.userid 则为自己的挂单可见
  107. sqlId.FormatParam(r.USERTYPE, r.USERID)
  108. sqlId.And("t.GOODSID", r.GOODSID)
  109. sqlId.And("t.BUYORSELL", r.BUYORSELL)
  110. sqlId.JoinEx(r.FtMarketIds != "", fmt.Sprintf(" and g.marketid in(%v)", r.FtMarketIds))
  111. if r.BUYORSELL == 0 {
  112. sqlId.Join(" order by t.orderprice desc, t.ordertime desc")
  113. } else {
  114. sqlId.Join(" order by t.orderprice, t.ordertime desc")
  115. }
  116. sqlId.Page(r.Page, r.PageSize)
  117. return sqlId.String()
  118. }
  119. // GetDataByPage 获取买卖大厅
  120. func (r *TjmdTradeOrderDetail) GetDataByPage() (interface{}, error, int, int, int) {
  121. sData := make([]TjmdTradeOrderDetail, 0)
  122. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  123. for i := range sData {
  124. sData[i].calc()
  125. }
  126. if len(sData) > 0 {
  127. r.Total = sData[0].Total
  128. }
  129. return sData, err, r.Page, r.PageSize, r.Total
  130. }
  131. // TjmdTransferApply 协议转让申请
  132. type TjmdTransferApply struct {
  133. APPLYID int64 `json:"applyid" xorm:"'APPLYID'"` // 申请ID(自增ID SEQ_TRADE_HOLDTRANSFERAPPLY)
  134. MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID
  135. INACCOUNTID int64 `json:"-" xorm:"INACCOUNTID" form:"inaccountid"` // 转入方资金ID(确认方) --对方申请
  136. OUTACCOUNTID int64 `json:"-" xorm:"OUTACCOUNTID" form:"outaccountid"` // 转出方资金ID(申请方) --我的申请
  137. GOODSID int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
  138. GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
  139. GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
  140. QTYDECIMALPLACE int `json:"-" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
  141. BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'"` // 买卖 - 0:买 1:卖
  142. TRANSFERPRICE float64 `json:"transferprice" xorm:"'TRANSFERPRICE'"` // 转让价格(协议价格)
  143. QTY SFLOAT64 `json:"qty" xorm:"'QTY'"` // 转让数量(数量)
  144. TRANSFERAMOUNT float64 `json:"transferamount" xorm:"'TRANSFERAMOUNT'"` // 转让总金额(金额)
  145. APPLYSTATUS int32 `json:"applystatus" xorm:"'APPLYSTATUS'"` // 状态 - 0:未提交 1:待审核 2:审核中 3:审核通过 4:审核拒绝 5:审核失败 6:已撤销
  146. TRADEID string `json:"tradeid" xorm:"'TRADEID'"` // 成交单号(关联持仓)
  147. APPLYTIME string `json:"applytime" xorm:"'APPLYTIME'"` // 申请时间(时间)
  148. AUDITREMARK string `json:"auditremark" xorm:"'AUDITREMARK'"` // 审核备注(拒绝原因?)
  149. ApplyType int32 `json:"-" form:"applytype"` // 类型 1-我的申请 2-对方申请
  150. FtMarketIds string `json:"-" form:"marketids"` // 市场 格式 1,2,3
  151. FtAccountIds string `json:"-" form:"accountids"` // 资金账号 格式 1,2,3
  152. BEGINDATE string `json:"begindate" form:"begindate"` // 开始交易日(yyyymmdd)
  153. ENDDATE string `json:"enddate" form:"enddate"` // 结束交易日(yyyymmdd)
  154. }
  155. func (r *TjmdTransferApply) calc() {
  156. if r.QTYDECIMALPLACE != 0 {
  157. r.QTY.Power10(r.QTYDECIMALPLACE * -1)
  158. }
  159. }
  160. func (r *TjmdTransferApply) buildSql() string {
  161. var sqlId utils.SQLVal = `
  162. select t.applyid,
  163. t.marketid,
  164. t.goodsid,
  165. g.goodscode,
  166. g.goodsname,
  167. g.qtydecimalplace,
  168. t.buyorsell,
  169. t.transferprice,
  170. t.qty,
  171. t.transferamount,
  172. t.applystatus,
  173. to_char(t.tradeid) tradeid,
  174. to_char(t.applytime,'yyyy-mm-dd hh24:mi:ss') applytime,
  175. t.auditremark
  176. from trade_holdtransferapply t
  177. left join goods g
  178. on t.goodsid = g.goodsid
  179. where 1=1
  180. `
  181. // 格式 yyyymmdd
  182. if len(r.BEGINDATE) > 0 {
  183. sqlId.JoinFormat(" and t.TRADEDATE >= '%v'", r.BEGINDATE)
  184. }
  185. if len(r.ENDDATE) > 0 {
  186. sqlId.JoinFormat(" and t.TRADEDATE <= '%v'", r.ENDDATE)
  187. }
  188. sqlId.JoinEx(r.FtMarketIds != "", fmt.Sprintf(" and t.marketid in(%v)", r.FtMarketIds))
  189. if r.ApplyType == 1 {
  190. sqlId.JoinEx(r.FtAccountIds != "", fmt.Sprintf(" and t.outaccountid in(%v)", r.FtAccountIds))
  191. } else if r.ApplyType == 2 {
  192. sqlId.JoinEx(r.FtAccountIds != "", fmt.Sprintf(" and t.inaccountid in(%v)", r.FtAccountIds))
  193. }
  194. return sqlId.String()
  195. }
  196. // GetDataEx 获取协议转让申请
  197. func (r *TjmdTransferApply) GetDataEx() (interface{}, error) {
  198. sData := make([]TjmdTransferApply, 0)
  199. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  200. for i := range sData {
  201. sData[i].calc()
  202. }
  203. return sData, err
  204. }
  205. // TjmdTodayAccountMargin 账户保证金配置
  206. type TjmdTodayAccountMargin struct {
  207. ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'" form:"accountid"` // 账号ID
  208. GOODSID int32 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 商品ID
  209. INFOCONTENT string `json:"-" xorm:"'INFOCONTENT'"` // 保证金信息(存储配置的Protobuffer串)
  210. MARKETID int32 `json:"marketid" xorm:"'MARKETID'" form:"marketid"` // 市场ID
  211. INFOC pb.GoodsMarginCfgStruct `json:"infoc"` // 配置参数
  212. }
  213. func (r *TjmdTodayAccountMargin) calc() {
  214. if len(r.INFOCONTENT) > 0 {
  215. _ = proto.Unmarshal([]byte(r.INFOCONTENT), &r.INFOC)
  216. }
  217. }
  218. func (r *TjmdTodayAccountMargin) buildSql() string {
  219. var sqlId utils.SQLVal = `
  220. select t.accountid, t.goodsid, t.infocontent, t.createdate, t.marketid
  221. from today_accountmargin t
  222. where 1 = 1
  223. `
  224. if r.ACCOUNTID > 0 {
  225. sqlId.JoinFormat(" and t.ACCOUNTID in(0, %v)", r.ACCOUNTID)
  226. }
  227. sqlId.AndEx("t.GOODSID", r.GOODSID, r.GOODSID > 0)
  228. sqlId.AndEx("t.MARKETID", r.MARKETID, r.MARKETID > 0)
  229. sqlId.Join(" order by t.accountid desc")
  230. sqlId.Page(1, 1) // 只取一条
  231. return sqlId.String()
  232. }
  233. // GetDataEx 获取账户保证金配置
  234. func (r *TjmdTodayAccountMargin) GetDataEx() (interface{}, error) {
  235. sData := make([]TjmdTodayAccountMargin, 0)
  236. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  237. for i := range sData {
  238. sData[i].calc()
  239. }
  240. return sData, err
  241. }
  242. // TjmdMarketSection 市场板块
  243. type TjmdMarketSection struct {
  244. MARKETSECTIONID int64 `json:"marketsectionid" xorm:"'MARKETSECTIONID'"` // 市场版块ID(SEQ_MARKETSECTION)
  245. MARKETSECTIONNAME string `json:"marketsectionname" xorm:"'MARKETSECTIONNAME'"` // 市场版块名称
  246. ORDERINDEX int32 `json:"orderindex" xorm:"'ORDERINDEX'"` // 排序
  247. REMARK string `json:"remark" xorm:"'REMARK'"` // 备注
  248. PICTUREURL string `json:"pictureurl" xorm:"'PICTUREURL'"` // 图片url, 规格(90*90)
  249. MLIST []TjmdMarketSectionConfig `json:"mlist"` // 市场列表(板块下面有多少个市场)
  250. }
  251. func (r *TjmdMarketSection) calc() {
  252. r.MLIST = make([]TjmdMarketSectionConfig, 0)
  253. }
  254. func (r *TjmdMarketSection) addMarketList(lst []TjmdMarketSectionConfig) {
  255. for i := range lst {
  256. if lst[i].MARKETSECTIONID == r.MARKETSECTIONID {
  257. r.MLIST = append(r.MLIST, lst[i])
  258. }
  259. }
  260. }
  261. func (r *TjmdMarketSection) buildSql() string {
  262. var sqlId utils.SQLVal = `
  263. SELECT t.MARKETSECTIONID, t.MARKETSECTIONNAME, t.ORDERINDEX, t.REMARK, t.PICTUREURL
  264. FROM MARKETSECTION t
  265. WHERE t.isvalid = 1
  266. order by t.orderindex
  267. `
  268. return sqlId.String()
  269. }
  270. // GetDataEx 获取市场板块
  271. func (r *TjmdMarketSection) GetDataEx() (interface{}, error) {
  272. sData := make([]TjmdMarketSection, 0)
  273. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  274. for i := range sData {
  275. sData[i].calc()
  276. }
  277. // 获取版块详细配置
  278. if len(sData) > 0 {
  279. m := TjmdMarketSectionConfig{}
  280. if d, err := m.GetDataEx(); err == nil {
  281. lst := d.([]TjmdMarketSectionConfig)
  282. for i := range sData {
  283. sData[i].addMarketList(lst)
  284. }
  285. }
  286. }
  287. return sData, err
  288. }
  289. // TjmdMarketSectionConfig 市场板块设置
  290. type TjmdMarketSectionConfig struct {
  291. MARKETSECTIONID int64 `json:"marketsectionid" xorm:"'MARKETSECTIONID'"` // 市场版块ID(SEQ_MARKETSECTION)
  292. ORDERINDEX int32 `json:"orderindex" xorm:"'ORDERINDEX'"` // 排序
  293. NOWRQUOTAFLAG int32 `json:"nowrquotaflag" xorm:"'NOWRQUOTAFLAG'"` // 是否校验无仓单额度(仓单贸易) 0:否 1:是
  294. LISTINGMODE int32 `json:"listingmode" xorm:"'LISTINGMODE'"` // 挂牌方式 1:一口价 2:浮动价 3:贸易圈 4:协议指定
  295. MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID正常5位,前三位固定:两位表示交易模式, 一位表示交易属性(1:收益权,2:所有权) 其它特殊市场:0-系统 1-交割服务 2-账户服务3-履约服务 4-仓单服务 5-积分服务 6-银行服务
  296. MARKETNAME string `json:"marketname" xorm:"MARKETNAME"` // 市场名称
  297. EXCHAREAID int32 `json:"exchareaid" xorm:"EXCHAREAID" form:"exchareaid"` // 所属交易所,可以没有
  298. MARKETTYPE int32 `json:"markettype" xorm:"MARKETTYPE"` // 市场类型- 1:非交易服务 2:交易服务
  299. TRADEMODE int32 `json:"trademode" xorm:"TRADEMODE"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
  300. TRADEPROPERTY int32 `json:"tradeproperty" xorm:"TRADEPROPERTY"` // 交易属性 - 1:收益权(可做空) 2:所有权(不可做空) 3:期权 4:现货 5:参考行情 6:通道交易 7:币交易 8:场外期权
  301. OPENMETHOD int32 `json:"openmethod" xorm:"OPENMETHOD"` // 开盘模式 - 0 自动 1手动
  302. RECKONPRICEALGORITHM int32 `json:"reckonpricealgorithm" xorm:"RECKONPRICEALGORITHM"` // 结算价算法: 1:最后多少笔成交价加权平均 2:最后多少秒成交价加权平均 3:全天加权平均 4:最后一口价 5.买一价 6.卖一价 7.买一卖一均价 8.外部结算价
  303. RECKONPRICEPARAM int32 `json:"reckonpriceparam" xorm:"RECKONPRICEPARAM"` // 结算价参数
  304. MARKETSTATUS int32 `json:"marketstatus" xorm:"MARKETSTATUS"` // 生效状态(ValidStatus枚举): 1:待生效 2:正常 3:注销
  305. MARKETSERVICEID int32 `json:"marketserviceid" xorm:"MARKETSERVICEID" form:"marketserviceid"` // 市场服务ID
  306. MARGINFORMULA int32 `json:"marginformula" xorm:"MARGINFORMULA"` // 持仓保证金公式 - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
  307. PERFORMANCETEMPID int64 `json:"performancetempid" xorm:"PERFORMANCETEMPID" form:"performancetempid"` // 履约计划模板ID - 作废
  308. CLEARINTERVAL int32 `json:"clearinterval" xorm:"CLEARINTERVAL"` // 待开市间隔(交易市场开盘前多久发市场待开市信号(单位分钟))
  309. MATCHERMODE int32 `json:"matchermode" xorm:"MATCHERMODE"` // 指定对手模式[仓单贸易模式专用] - 1:任意对手 - 作废
  310. RECKONORDER int32 `json:"reckonorder" xorm:"RECKONORDER"` // 结算顺序
  311. CANPREEXERCISE int32 `json:"canpreexercise" xorm:"CANPREEXERCISE"` // [期权]是否可预申报- 0:否 1:是
  312. CANGOODSEXERCISE int32 `json:"cangoodsexercise" xorm:"CANGOODSEXERCISE"` // [期权]是否可现货行权- 0:否 1:是
  313. GOODSTYPE int32 `json:"goodstype" xorm:"GOODSTYPE"` // 商品类型 - 1:交易商品 2:仓单商品
  314. ROLEPRIORITYTYPE int32 `json:"roleprioritytype" xorm:"ROLEPRIORITYTYPE"` // 角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]
  315. ISRECORDSOURCE int32 `json:"isrecordsource" xorm:"ISRECORDSOURCE"` // 是否记录成交源 - 0:不记录 1:记录 [所有权]
  316. MARGINFORMULA2 int32 `json:"marginformula2" xorm:"MARGINFORMULA2"` // 持仓保证金公式(仅受托竞价) - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
  317. HASWR int32 `json:"haswr" xorm:"HASWR"` // [竞拍]是否需要仓单 - 0:不需要 1:需要-作废
  318. PREMIUMQUOTEMODE int32 `json:"premiumquotemode" xorm:"PREMIUMQUOTEMODE"` // 权利金报价方式 - 1:自动 2:手动
  319. CANGOODSEXERCISETYPE int32 `json:"cangoodsexercisetype" xorm:"CANGOODSEXERCISETYPE"` // 可现货行权期权类型 - 1:认购 2认沽 3:认购认沽 [CanGoodsExercise = 1时可设置]
  320. CANACCEPTQUOTE int32 `json:"canacceptquote" xorm:"CANACCEPTQUOTE"` // 确认行权是否接收行情 - 0:不接受 1:接受 [可确认权的挂牌期权市场可配置]
  321. CANMUTISTAGE int32 `json:"canmutistage" xorm:"CANMUTISTAGE"` // 是否可多段运行 – 0:不可 1:可 [挂牌期权]
  322. ISDEDUCTMARGIN int32 `json:"isdeductmargin" xorm:"ISDEDUCTMARGIN"` // 竞拍违约是否扣除保证金[竞拍-降价式] - 0:不扣 1:扣除
  323. CANMANUALQUOTESTRIKE int32 `json:"canmanualquotestrike" xorm:"CANMANUALQUOTESTRIKE"` // 是否可手动报行权价- 0:否 1:是 [期权]
  324. TRADETYPE int32 `json:"tradetype" xorm:"TRADETYPE"` // 下单方式[通道交易] - 1:直接转单 2:净头寸下单
  325. PENDINGFLAG int32 `json:"pendingflag" xorm:"PENDINGFLAG"` // 待开市时间标识[通道交易-对冲] - 0:当日 1:上日
  326. PENDINGTIME string `json:"pendingtime" xorm:"PENDINGTIME"` // 待开市时间[通道交易-对冲](HH:mm)
  327. RECKONTIME string `json:"reckontime" xorm:"RECKONTIME"` // 结算时间[通道交易-对冲](HH:mm)
  328. HASTRADECREDIT int32 `json:"hastradecredit" xorm:"HASTRADECREDIT"` // 是否交易授信[做市收益权] - 0:不授信 1:授信
  329. CONTRACTTMP string `json:"contracttmp" xorm:"CONTRACTTMP"` // 合同模板[荷兰式][竞价式][仓单贸易]
  330. HASREBATE int32 `json:"hasrebate" xorm:"HASREBATE"` // 是否返利[竞价式] 0:不返,1:返利 -- 根据系统参数088显示或隐藏
  331. REBATERATIO float64 `json:"rebateratio" xorm:"REBATERATIO"` // 返利比率[竞价式]
  332. OTCUSERID int64 `json:"otcuserid" xorm:"OTCUSERID" form:"otcuserid"` // 场外期权做市商[场外期权]
  333. OUTERSYNCTIME string `json:"outersynctime" xorm:"OUTERSYNCTIME"` // 外部同步时间点(h24:mi:ss)[场外期权]
  334. AUCTIONWRTYPE int32 `json:"auctionwrtype" xorm:"AUCTIONWRTYPE"` // 仓单类型(现货交易) - 1:无仓单 2:有仓单 3;有无仓单均可
  335. ISRELEASEMARGIN int32 `json:"isreleasemargin" xorm:"ISRELEASEMARGIN"` // 成交参与保证金是否释放[竞价式] - 0:不释放 1释放
  336. SELLLISTINGAUDITFLAG int32 `json:"selllistingauditflag" xorm:"SELLLISTINGAUDITFLAG"` // 卖挂牌是否需要审核(仓单贸易) - 0:不需要 1:需要
  337. TRADEMARKETTYPE int32 `json:"trademarkettype" xorm:"TRADEMARKETTYPE"` // 交易市场类型 - 1:合约市场 2:外部市场 3:仓单市场
  338. PAYLATERFLAG int32 `json:"paylaterflag" xorm:"PAYLATERFLAG"` // 是否支持后付 - 0:不支持 1;支持 - [挂牌点选 所有权、预售挂牌支持]
  339. ISUPDATERECKONPRICE int32 `json:"isupdatereckonprice" xorm:"ISUPDATERECKONPRICE"` // 输入结算价标识 - 0:系统生成 1:手工输入(自动) 2:手工输入(手动)
  340. UPDATERECKONPRICEINTERVAL int32 `json:"updatereckonpriceinterval" xorm:"UPDATERECKONPRICEINTERVAL"` // 输入结算价时长(分钟) [1:手工输入(自动)]
  341. FINANCEMARKETID int32 `json:"financemarketid" xorm:"FINANCEMARKETID" form:"financemarketid"` // 融资回购市场ID [仓单贸易]
  342. }
  343. func (r *TjmdMarketSectionConfig) calc() {
  344. }
  345. func (r *TjmdMarketSectionConfig) buildSql() string {
  346. var sqlId utils.SQLVal = `
  347. select t.marketsectionid,
  348. t.orderindex,
  349. m.*,
  350. c.nowrquotaflag,
  351. c.listingmode
  352. from marketsectionconfig t
  353. inner join market m
  354. on t.marketid = m.marketid
  355. left join markettradeconfig c
  356. on t.marketid = c.marketid
  357. where 1 = 1
  358. order by t.orderindex
  359. `
  360. return sqlId.String()
  361. }
  362. // GetDataEx 获取市场板块设置
  363. func (r *TjmdMarketSectionConfig) GetDataEx() (interface{}, error) {
  364. sData := make([]TjmdMarketSectionConfig, 0)
  365. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  366. for i := range sData {
  367. sData[i].calc()
  368. }
  369. return sData, err
  370. }