| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494 |
- /**
- * @Author: zou.yingbin
- * @Create : 2021/9/7 16:01
- * @Modify : 2021/9/7 16:01
- * @note : 天津麦顿
- */
- package models
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/pb"
- "mtp2_if/utils"
- "github.com/golang/protobuf/proto"
- )
- // TjmdQuoteGoods 掉期报价列表
- type TjmdQuoteGoods struct {
- GOODSID int64 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 合约id
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 合约代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 合约名称
- REFGOODSID int64 `json:"refgoodsid" xorm:"'REFGOODSID'"` // 标的合约id
- REFGOODSCODE string `json:"refgoodscode" xorm:"'REFGOODSCODE'"` // 标的合约代码
- REFGOODSNAME string `json:"refgoodsname" xorm:"'REFGOODSNAME'"` // 标的合约名称
- SELLQTY float64 `json:"sellqty" xorm:"'SELLQTY'"` // 卖量(暂不做, 无值, 保留字段)
- BUYQTY float64 `json:"buyqty" xorm:"'BUYQTY'"` // 买量(暂不做, 无值, 保留字段)
- GOODSGROUPID int64 `json:"goodsgroupid" xorm:"'GOODSGROUPID'" form:"goodsgroupid"` // 商品组ID(自增ID)
- GOODSGROUPNAME string `json:"goodsgroupname" xorm:"'GOODSGROUPNAME'"` // 商品组名称
- UserType int32 `json:"-" form:"usertype"` // 用户类型
- FtMarketIds string `json:"-" form:"marketids"` // 市场id, 格式 1,2,3
- DECIMALPLACE int32 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
- }
- func (r *TjmdQuoteGoods) calc() {
- }
- func (r *TjmdQuoteGoods) buildSql() string {
- var sqlId utils.SQLVal = `
- select g1.goodsid,
- g1.goodscode,
- g1.goodsname,
- g1.decimalplace,
- g2.goodsid refgoodsid,
- g2.goodscode refgoodscode,
- g2.goodsname refgoodsname,
- gp.goodsgroupid,
- gp.goodsgroupname,
- gp.outergroupcode goodsgroupcode,
- gp.marketid
- from goods g1
- left join goods g2
- on g1.refgoodsid = g2.goodsid
- left join goodsgroup gp
- on g1.goodsgroupid = gp.goodsgroupid
- where 1=1 and g1.goodsstatus = 3
- `
- sqlId.JoinEx(r.FtMarketIds != "", fmt.Sprintf(" and gp.marketid in(%v)", r.FtMarketIds))
- sqlId.Join(" order by g1.goodscode")
- return sqlId.String()
- }
- // GetDataEx 获取掉期报价列表
- func (r *TjmdQuoteGoods) GetDataEx() (interface{}, error) {
- sData := make([]TjmdQuoteGoods, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // TjmdTradeOrderDetail 买卖大厅
- type TjmdTradeOrderDetail struct {
- ORDERID string `json:"orderid" xorm:"'ORDERID'"` // 委托单号
- GOODSID int32 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 商品id
- BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'" form:"buyorsell"` // 买卖方向 0-买 1-卖
- ORDERPRICE SFLOAT64 `json:"orderprice" xorm:"'ORDERPRICE'"` // 委托价格
- ORDERQTY int64 `json:"orderqty" xorm:"'ORDERQTY'"` // 委托数量
- USERID int64 `json:"userid" xorm:"'USERID'" form:"userid"` // 用户id
- USERNAME string `json:"username" xorm:"'USERNAME'"` // 用户名称(已脱敏)
- PRICEMODE int32 `json:"pricemode" xorm:"'PRICEMODE'"` // 取价方式 - 1:市价 2: 限价 3:浮动价
- MARKETMAXSUB float64 `json:"marketmaxsub" xorm:"'MARKETMAXSUB'"` // 市价最大偏移范围 [浮动价 - 点差]
- PageEx `xorm:"extends"`
- USERTYPE int32 `json:"-" form:"usertype"` // 用户类型
- FtMarketIds string `json:"-" form:"marketids"` // 市场id, 格式 1,2,3
- }
- func (r *TjmdTradeOrderDetail) calc() {
- r.USERNAME = EncryptByStar(r.USERNAME)
- }
- func (r *TjmdTradeOrderDetail) buildSql() string {
- var sqlId utils.SQLVal = `
- select to_char(t.orderid) orderid,
- t.buyorsell,
- t.goodsid,
- t.orderprice,
- t.orderqty - t.tradeqty orderqty,
- u.userid,
- u.accountname username,
- t.orderstatus,
- t.pricemode,
- t.marketmaxsub,
- g.marketid
- from trade_orderdetail t
- left join taaccount ta
- on t.accountid = ta.accountid
- left join useraccount u
- on ta.relateduserid = u.userid
- left join goods g on t.goodsid=g.goodsid
- where 1 = 1
- and t.orderstatus in (3, 7)
- and (u.usertype = decode(%v,2,5,2) or u.userid = %v)
- `
- // 投资者只能看到会员的单, 会员只能看到投资者的单, decode(%v,2,5,-1); or u.userid=r.userid 则为自己的挂单可见
- sqlId.FormatParam(r.USERTYPE, r.USERID)
- sqlId.And("t.GOODSID", r.GOODSID)
- sqlId.And("t.BUYORSELL", r.BUYORSELL)
- sqlId.JoinEx(r.FtMarketIds != "", fmt.Sprintf(" and g.marketid in(%v)", r.FtMarketIds))
- if r.BUYORSELL == 0 {
- sqlId.Join(" order by t.orderprice desc, t.ordertime desc")
- } else {
- sqlId.Join(" order by t.orderprice, t.ordertime desc")
- }
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- // GetDataByPage 获取买卖大厅
- func (r *TjmdTradeOrderDetail) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]TjmdTradeOrderDetail, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- if len(sData) > 0 {
- r.Total = sData[0].Total
- }
- return sData, err, r.Page, r.PageSize, r.Total
- }
- // TjmdTransferApply 协议转让申请
- type TjmdTransferApply struct {
- APPLYID int64 `json:"applyid" xorm:"'APPLYID'"` // 申请ID(自增ID SEQ_TRADE_HOLDTRANSFERAPPLY)
- MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID
- INACCOUNTID int64 `json:"-" xorm:"INACCOUNTID" form:"inaccountid"` // 转入方资金ID(确认方) --对方申请
- OUTACCOUNTID int64 `json:"-" xorm:"OUTACCOUNTID" form:"outaccountid"` // 转出方资金ID(申请方) --我的申请
- GOODSID int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- QTYDECIMALPLACE int `json:"-" xorm:"'QTYDECIMALPLACE'"` // 成交量小数位
- BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'"` // 买卖 - 0:买 1:卖
- TRANSFERPRICE float64 `json:"transferprice" xorm:"'TRANSFERPRICE'"` // 转让价格(协议价格)
- QTY SFLOAT64 `json:"qty" xorm:"'QTY'"` // 转让数量(数量)
- TRANSFERAMOUNT float64 `json:"transferamount" xorm:"'TRANSFERAMOUNT'"` // 转让总金额(金额)
- APPLYSTATUS int32 `json:"applystatus" xorm:"'APPLYSTATUS'"` // 状态 - 0:未提交 1:待审核 2:审核中 3:审核通过 4:审核拒绝 5:审核失败 6:已撤销
- TRADEID string `json:"tradeid" xorm:"'TRADEID'"` // 成交单号(关联持仓)
- APPLYTIME string `json:"applytime" xorm:"'APPLYTIME'"` // 申请时间(时间)
- AUDITREMARK string `json:"auditremark" xorm:"'AUDITREMARK'"` // 审核备注(拒绝原因?)
- ApplyType int32 `json:"-" form:"applytype"` // 类型 1-我的申请 2-对方申请
- FtMarketIds string `json:"-" form:"marketids"` // 市场 格式 1,2,3
- FtAccountIds string `json:"-" form:"accountids"` // 资金账号 格式 1,2,3
- BEGINDATE string `json:"begindate" form:"begindate"` // 开始交易日(yyyymmdd)
- ENDDATE string `json:"enddate" form:"enddate"` // 结束交易日(yyyymmdd)
- }
- func (r *TjmdTransferApply) calc() {
- if r.QTYDECIMALPLACE != 0 {
- r.QTY.Power10(r.QTYDECIMALPLACE * -1)
- }
- }
- func (r *TjmdTransferApply) buildSql() string {
- var sqlId utils.SQLVal = `
- select t.applyid,
- t.marketid,
- t.goodsid,
- g.goodscode,
- g.goodsname,
- g.qtydecimalplace,
- t.buyorsell,
- t.transferprice,
- t.qty,
- t.transferamount,
- t.applystatus,
- to_char(t.tradeid) tradeid,
- to_char(t.applytime,'yyyy-mm-dd hh24:mi:ss') applytime,
- t.auditremark
- from trade_holdtransferapply t
- left join goods g
- on t.goodsid = g.goodsid
- where 1=1
- `
- // 格式 yyyymmdd
- if len(r.BEGINDATE) > 0 {
- sqlId.JoinFormat(" and t.TRADEDATE >= '%v'", r.BEGINDATE)
- }
- if len(r.ENDDATE) > 0 {
- sqlId.JoinFormat(" and t.TRADEDATE <= '%v'", r.ENDDATE)
- }
- sqlId.JoinEx(r.FtMarketIds != "", fmt.Sprintf(" and t.marketid in(%v)", r.FtMarketIds))
- if r.ApplyType == 1 {
- sqlId.JoinEx(r.FtAccountIds != "", fmt.Sprintf(" and t.outaccountid in(%v)", r.FtAccountIds))
- } else if r.ApplyType == 2 {
- sqlId.JoinEx(r.FtAccountIds != "", fmt.Sprintf(" and t.inaccountid in(%v)", r.FtAccountIds))
- }
- return sqlId.String()
- }
- // GetDataEx 获取协议转让申请
- func (r *TjmdTransferApply) GetDataEx() (interface{}, error) {
- sData := make([]TjmdTransferApply, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // TjmdTodayAccountMargin 账户保证金配置
- type TjmdTodayAccountMargin struct {
- ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'" form:"accountid"` // 账号ID
- GOODSID int32 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 商品ID
- INFOCONTENT string `json:"-" xorm:"'INFOCONTENT'"` // 保证金信息(存储配置的Protobuffer串)
- MARKETID int32 `json:"marketid" xorm:"'MARKETID'" form:"marketid"` // 市场ID
- INFOC pb.GoodsMarginCfgStruct `json:"infoc"` // 配置参数
- }
- func (r *TjmdTodayAccountMargin) calc() {
- if len(r.INFOCONTENT) > 0 {
- _ = proto.Unmarshal([]byte(r.INFOCONTENT), &r.INFOC)
- }
- }
- func (r *TjmdTodayAccountMargin) buildSql() string {
- var sqlId utils.SQLVal = `
- select t.accountid, t.goodsid, t.infocontent, t.createdate, t.marketid
- from today_accountmargin t
- where 1 = 1
- `
- if r.ACCOUNTID > 0 {
- sqlId.JoinFormat(" and t.ACCOUNTID in(0, %v)", r.ACCOUNTID)
- }
- sqlId.AndEx("t.GOODSID", r.GOODSID, r.GOODSID > 0)
- sqlId.AndEx("t.MARKETID", r.MARKETID, r.MARKETID > 0)
- sqlId.Join(" order by t.accountid desc")
- sqlId.Page(1, 1) // 只取一条
- return sqlId.String()
- }
- // GetDataEx 获取账户保证金配置
- func (r *TjmdTodayAccountMargin) GetDataEx() (interface{}, error) {
- sData := make([]TjmdTodayAccountMargin, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // TjmdMarketSection 市场板块
- type TjmdMarketSection struct {
- MARKETSECTIONID int64 `json:"marketsectionid" xorm:"'MARKETSECTIONID'"` // 市场版块ID(SEQ_MARKETSECTION)
- MARKETSECTIONNAME string `json:"marketsectionname" xorm:"'MARKETSECTIONNAME'"` // 市场版块名称
- ORDERINDEX int32 `json:"orderindex" xorm:"'ORDERINDEX'"` // 排序
- REMARK string `json:"remark" xorm:"'REMARK'"` // 备注
- PICTUREURL string `json:"pictureurl" xorm:"'PICTUREURL'"` // 图片url, 规格(90*90)
- MLIST []TjmdMarketSectionConfig `json:"mlist"` // 市场列表(板块下面有多少个市场)
- }
- func (r *TjmdMarketSection) calc() {
- r.MLIST = make([]TjmdMarketSectionConfig, 0)
- }
- func (r *TjmdMarketSection) addMarketList(lst []TjmdMarketSectionConfig) {
- for i := range lst {
- if lst[i].MARKETSECTIONID == r.MARKETSECTIONID {
- r.MLIST = append(r.MLIST, lst[i])
- }
- }
- }
- func (r *TjmdMarketSection) buildSql() string {
- var sqlId utils.SQLVal = `
- SELECT t.MARKETSECTIONID, t.MARKETSECTIONNAME, t.ORDERINDEX, t.REMARK, t.PICTUREURL
- FROM MARKETSECTION t
- WHERE t.isvalid = 1
- order by t.orderindex
- `
- return sqlId.String()
- }
- // GetDataEx 获取市场板块
- func (r *TjmdMarketSection) GetDataEx() (interface{}, error) {
- sData := make([]TjmdMarketSection, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- // 获取版块详细配置
- if len(sData) > 0 {
- m := TjmdMarketSectionConfig{}
- if d, err := m.GetDataEx(); err == nil {
- lst := d.([]TjmdMarketSectionConfig)
- for i := range sData {
- sData[i].addMarketList(lst)
- }
- }
- }
- return sData, err
- }
- // TjmdMarketSectionConfig 市场板块设置
- type TjmdMarketSectionConfig struct {
- MARKETSECTIONID int64 `json:"marketsectionid" xorm:"'MARKETSECTIONID'"` // 市场版块ID(SEQ_MARKETSECTION)
- ORDERINDEX int32 `json:"orderindex" xorm:"'ORDERINDEX'"` // 排序
- NOWRQUOTAFLAG int32 `json:"nowrquotaflag" xorm:"'NOWRQUOTAFLAG'"` // 是否校验无仓单额度(仓单贸易) 0:否 1:是
- LISTINGMODE int32 `json:"listingmode" xorm:"'LISTINGMODE'"` // 挂牌方式 1:一口价 2:浮动价 3:贸易圈 4:协议指定
- MARKETID int32 `json:"marketid" xorm:"MARKETID" form:"marketid"` // 市场ID正常5位,前三位固定:两位表示交易模式, 一位表示交易属性(1:收益权,2:所有权) 其它特殊市场:0-系统 1-交割服务 2-账户服务3-履约服务 4-仓单服务 5-积分服务 6-银行服务
- MARKETNAME string `json:"marketname" xorm:"MARKETNAME"` // 市场名称
- EXCHAREAID int32 `json:"exchareaid" xorm:"EXCHAREAID" form:"exchareaid"` // 所属交易所,可以没有
- MARKETTYPE int32 `json:"markettype" xorm:"MARKETTYPE"` // 市场类型- 1:非交易服务 2:交易服务
- TRADEMODE int32 `json:"trademode" xorm:"TRADEMODE"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
- TRADEPROPERTY int32 `json:"tradeproperty" xorm:"TRADEPROPERTY"` // 交易属性 - 1:收益权(可做空) 2:所有权(不可做空) 3:期权 4:现货 5:参考行情 6:通道交易 7:币交易 8:场外期权
- OPENMETHOD int32 `json:"openmethod" xorm:"OPENMETHOD"` // 开盘模式 - 0 自动 1手动
- RECKONPRICEALGORITHM int32 `json:"reckonpricealgorithm" xorm:"RECKONPRICEALGORITHM"` // 结算价算法: 1:最后多少笔成交价加权平均 2:最后多少秒成交价加权平均 3:全天加权平均 4:最后一口价 5.买一价 6.卖一价 7.买一卖一均价 8.外部结算价
- RECKONPRICEPARAM int32 `json:"reckonpriceparam" xorm:"RECKONPRICEPARAM"` // 结算价参数
- MARKETSTATUS int32 `json:"marketstatus" xorm:"MARKETSTATUS"` // 生效状态(ValidStatus枚举): 1:待生效 2:正常 3:注销
- MARKETSERVICEID int32 `json:"marketserviceid" xorm:"MARKETSERVICEID" form:"marketserviceid"` // 市场服务ID
- MARGINFORMULA int32 `json:"marginformula" xorm:"MARGINFORMULA"` // 持仓保证金公式 - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
- PERFORMANCETEMPID int64 `json:"performancetempid" xorm:"PERFORMANCETEMPID" form:"performancetempid"` // 履约计划模板ID - 作废
- CLEARINTERVAL int32 `json:"clearinterval" xorm:"CLEARINTERVAL"` // 待开市间隔(交易市场开盘前多久发市场待开市信号(单位分钟))
- MATCHERMODE int32 `json:"matchermode" xorm:"MATCHERMODE"` // 指定对手模式[仓单贸易模式专用] - 1:任意对手 - 作废
- RECKONORDER int32 `json:"reckonorder" xorm:"RECKONORDER"` // 结算顺序
- CANPREEXERCISE int32 `json:"canpreexercise" xorm:"CANPREEXERCISE"` // [期权]是否可预申报- 0:否 1:是
- CANGOODSEXERCISE int32 `json:"cangoodsexercise" xorm:"CANGOODSEXERCISE"` // [期权]是否可现货行权- 0:否 1:是
- GOODSTYPE int32 `json:"goodstype" xorm:"GOODSTYPE"` // 商品类型 - 1:交易商品 2:仓单商品
- ROLEPRIORITYTYPE int32 `json:"roleprioritytype" xorm:"ROLEPRIORITYTYPE"` // 角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]
- ISRECORDSOURCE int32 `json:"isrecordsource" xorm:"ISRECORDSOURCE"` // 是否记录成交源 - 0:不记录 1:记录 [所有权]
- MARGINFORMULA2 int32 `json:"marginformula2" xorm:"MARGINFORMULA2"` // 持仓保证金公式(仅受托竞价) - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
- HASWR int32 `json:"haswr" xorm:"HASWR"` // [竞拍]是否需要仓单 - 0:不需要 1:需要-作废
- PREMIUMQUOTEMODE int32 `json:"premiumquotemode" xorm:"PREMIUMQUOTEMODE"` // 权利金报价方式 - 1:自动 2:手动
- CANGOODSEXERCISETYPE int32 `json:"cangoodsexercisetype" xorm:"CANGOODSEXERCISETYPE"` // 可现货行权期权类型 - 1:认购 2认沽 3:认购认沽 [CanGoodsExercise = 1时可设置]
- CANACCEPTQUOTE int32 `json:"canacceptquote" xorm:"CANACCEPTQUOTE"` // 确认行权是否接收行情 - 0:不接受 1:接受 [可确认权的挂牌期权市场可配置]
- CANMUTISTAGE int32 `json:"canmutistage" xorm:"CANMUTISTAGE"` // 是否可多段运行 – 0:不可 1:可 [挂牌期权]
- ISDEDUCTMARGIN int32 `json:"isdeductmargin" xorm:"ISDEDUCTMARGIN"` // 竞拍违约是否扣除保证金[竞拍-降价式] - 0:不扣 1:扣除
- CANMANUALQUOTESTRIKE int32 `json:"canmanualquotestrike" xorm:"CANMANUALQUOTESTRIKE"` // 是否可手动报行权价- 0:否 1:是 [期权]
- TRADETYPE int32 `json:"tradetype" xorm:"TRADETYPE"` // 下单方式[通道交易] - 1:直接转单 2:净头寸下单
- PENDINGFLAG int32 `json:"pendingflag" xorm:"PENDINGFLAG"` // 待开市时间标识[通道交易-对冲] - 0:当日 1:上日
- PENDINGTIME string `json:"pendingtime" xorm:"PENDINGTIME"` // 待开市时间[通道交易-对冲](HH:mm)
- RECKONTIME string `json:"reckontime" xorm:"RECKONTIME"` // 结算时间[通道交易-对冲](HH:mm)
- HASTRADECREDIT int32 `json:"hastradecredit" xorm:"HASTRADECREDIT"` // 是否交易授信[做市收益权] - 0:不授信 1:授信
- CONTRACTTMP string `json:"contracttmp" xorm:"CONTRACTTMP"` // 合同模板[荷兰式][竞价式][仓单贸易]
- HASREBATE int32 `json:"hasrebate" xorm:"HASREBATE"` // 是否返利[竞价式] 0:不返,1:返利 -- 根据系统参数088显示或隐藏
- REBATERATIO float64 `json:"rebateratio" xorm:"REBATERATIO"` // 返利比率[竞价式]
- OTCUSERID int64 `json:"otcuserid" xorm:"OTCUSERID" form:"otcuserid"` // 场外期权做市商[场外期权]
- OUTERSYNCTIME string `json:"outersynctime" xorm:"OUTERSYNCTIME"` // 外部同步时间点(h24:mi:ss)[场外期权]
- AUCTIONWRTYPE int32 `json:"auctionwrtype" xorm:"AUCTIONWRTYPE"` // 仓单类型(现货交易) - 1:无仓单 2:有仓单 3;有无仓单均可
- ISRELEASEMARGIN int32 `json:"isreleasemargin" xorm:"ISRELEASEMARGIN"` // 成交参与保证金是否释放[竞价式] - 0:不释放 1释放
- SELLLISTINGAUDITFLAG int32 `json:"selllistingauditflag" xorm:"SELLLISTINGAUDITFLAG"` // 卖挂牌是否需要审核(仓单贸易) - 0:不需要 1:需要
- TRADEMARKETTYPE int32 `json:"trademarkettype" xorm:"TRADEMARKETTYPE"` // 交易市场类型 - 1:合约市场 2:外部市场 3:仓单市场
- PAYLATERFLAG int32 `json:"paylaterflag" xorm:"PAYLATERFLAG"` // 是否支持后付 - 0:不支持 1;支持 - [挂牌点选 所有权、预售挂牌支持]
- ISUPDATERECKONPRICE int32 `json:"isupdatereckonprice" xorm:"ISUPDATERECKONPRICE"` // 输入结算价标识 - 0:系统生成 1:手工输入(自动) 2:手工输入(手动)
- UPDATERECKONPRICEINTERVAL int32 `json:"updatereckonpriceinterval" xorm:"UPDATERECKONPRICEINTERVAL"` // 输入结算价时长(分钟) [1:手工输入(自动)]
- FINANCEMARKETID int32 `json:"financemarketid" xorm:"FINANCEMARKETID" form:"financemarketid"` // 融资回购市场ID [仓单贸易]
- }
- func (r *TjmdMarketSectionConfig) calc() {
- }
- func (r *TjmdMarketSectionConfig) buildSql() string {
- var sqlId utils.SQLVal = `
- select t.marketsectionid,
- t.orderindex,
- m.*,
- c.nowrquotaflag,
- c.listingmode
- from marketsectionconfig t
- inner join market m
- on t.marketid = m.marketid
- left join markettradeconfig c
- on t.marketid = c.marketid
- where 1 = 1
- order by t.orderindex
- `
- return sqlId.String()
- }
- // GetDataEx 获取市场板块设置
- func (r *TjmdMarketSectionConfig) GetDataEx() (interface{}, error) {
- sData := make([]TjmdMarketSectionConfig, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // TjmdHolderDetailTradeInfo 掉期商品订单详情(交易确认书)
- type TjmdHolderDetailTradeInfo struct {
- TRADEID string `json:"tradeid" xorm:"'TRADEID'" form:"tradeid"` // 成交编号
- TRADEDATE string `json:"tradedate" xorm:"'TRADEDATE'"` // 成交日期
- GOODSID int `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
- GOODSCODE string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- GOODSNAME string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称(交易标的)
- LISTINGDATE string `json:"listingdate" xorm:"'LISTINGDATE'"` // 开始交易日
- LASTTRADEDATE string `json:"lasttradedate" xorm:"'LASTTRADEDATE'"` // 最后交易日
- DELISTINGDATE string `json:"delistingdate" xorm:"'DELISTINGDATE'"` // 最后结算日
- AGREEUNIT float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约乘数
- OPENQTY int64 `json:"openqty" xorm:"'OPENQTY'"` // 交易数量
- OPENPRICE float64 `json:"openprice" xorm:"'OPENPRICE'"` // 成交价
- TRADEAMOUNT float64 `json:"tradeamount" xorm:"'TRADEAMOUNT'"` // 初始名义价值
- EXPIREDATE string `json:"expiredate" xorm:"'EXPIREDATE'"` // 到期结算价定价日
- BUYACCOUNTID string `json:"buyaccountid" xorm:"'BUYACCOUNTID'"` // 买方账户
- SELLACCOUNTID string `json:"sellaccountid" xorm:"'SELLACCOUNTID'"` // 卖方账户
- BUYUSERNAME string `json:"buyusername" xorm:"'BUYUSERNAME'"` // 买方
- SELLUSERNAME string `json:"sellusername" xorm:"'SELLUSERNAME'"` // 卖方
- EXPRIEPRICE string `json:"exprieprice" xorm:"'EXPRIEPRICE'"` // 到期清算价格
- }
- func (r *TjmdHolderDetailTradeInfo) calc() {
- // #3568 固定为 到期收盘价
- r.EXPRIEPRICE = "到期收盘价"
- if len(r.TRADEDATE) == 8 {
- // 20220408 插入分隔符'-' 变成 2022-04-08
- r.TRADEDATE = r.TRADEDATE[:4] + "-" + r.TRADEDATE[4:6] + "-" + r.TRADEDATE[6:]
- }
- }
- func (r *TjmdHolderDetailTradeInfo) buildSql() string {
- var sqlId utils.SQLVal = `
- select to_char(a.tradeid) tradeid,
- a.tradedate,
- a.goodsid,
- g.goodscode,
- g.goodsname,
- to_char(g.listingdate, 'yyyy-mm-dd') listingdate,
- to_char(g.lasttradedate, 'yyyy-mm-dd') lasttradedate,
- to_char(g.delistingdate, 'yyyy-mm-dd') delistingdate,
- g.agreeunit,
- a.openqty,
- a.openprice,
- a.tradeamount,
- a.expiredate,
- to_char(a.accountid) buyaccountid,
- to_char(b.accountid) sellaccountid,
- u1.accountname buyusername,
- u2.accountname sellusername
- from trade_holderdetail a
- left join trade_holderdetail b
- on a.tradeid = b.tradeid
- and b.buyorsell = 1
- left join goods g
- on a.goodsid = g.goodsid
- left join taaccount ta1
- on a.accountid = ta1.accountid
- left join useraccount u1
- on ta1.relateduserid = u1.userid
- left join taaccount ta2
- on b.accountid = ta2.accountid
- left join useraccount u2
- on ta2.relateduserid = u2.userid
- where a.buyorsell = 0
- and a.tradeid = %v
- `
- sqlId.FormatParam(r.TRADEID)
- return sqlId.String()
- }
- // GetDataEx 获取掉期商品订单详情(交易确认书)
- func (r *TjmdHolderDetailTradeInfo) GetDataEx() (interface{}, error) {
- sData := make([]TjmdHolderDetailTradeInfo, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
|