| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093 |
- package models
- import (
- "mtp2_if/db"
- "mtp2_if/utils"
- "time"
- )
- // MineCpTradePreSaleResult 我的持仓-预售持仓
- type MineCpTradePreSaleResult struct {
- TRADEID string `json:"tradeid" xorm:"TRADEID"` // 成交单号(101+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- BUYACCOUNTID int64 `json:"buyaccountid" xorm:"BUYACCOUNTID"` // 买方账户ID
- BUYUSERID int64 `json:"buyuserid" xorm:"BUYUSERID" form:"userid" binding:"required"` // 买方用户ID
- SELLACCOUNTID int64 `json:"sellaccountid" xorm:"SELLACCOUNTID"` // 卖方账户ID
- SELLUSERID int64 `json:"selluserid" xorm:"SELLUSERID"` // 卖方用户ID
- RELATEDGOODSID int64 `json:"relatedgoodsid" xorm:"RELATEDGOODSID"` // 关联交易合约ID
- TRADEQTY int64 `json:"tradeqty" xorm:"TRADEQTY"` // 成交数量
- HANDLEFLAG int32 `json:"handleflag" xorm:"HANDLEFLAG"` // 处理标识 - 0:未处理 1:已处理
- HANDLESTATUS int32 `json:"handlestatus" xorm:"HANDLESTATUS"` // 处理状态
- CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- RELATEDMARKETID int64 `json:"relatedmarketid" xorm:"RELATEDMARKETID"` // 关联交易合约市场ID
- APPLYID string `json:"applyid" xorm:"APPLYID"` // 预售申请ID
- OPENPRICE float64 `json:"openprice" xorm:"OPENPRICE"` // 建仓价格\预售价
- TRADEAMOUNT float64 `json:"tradeamount" xorm:"TRADEAMOUNT"` // 成交金额\转让定金
- SELLHANDLEFLAG int32 `json:"sellhandleflag" xorm:"SELLHANDLEFLAG"` // 卖处理标识
- BUYHANDLEFLAG int32 `json:"buyhandleflag" xorm:"BUYHANDLEFLAG"` // 买处理标识
- RELATEDTRADEID int64 `json:"relatedtradeid" xorm:"RELATEDTRADEID"` // 二级市场成交单ID
- TRANSFERDEPOSIT float64 `json:"transferdeposit" xorm:"TRANSFERDEPOSIT"` // 转让定金
- DEPOSITREMAIN float64 `json:"depositremain" xorm:"DEPOSITREMAIN"` // 未付定金
- PAYSTATUS int32 `json:"paystatus" xorm:"PAYSTATUS"` // 支付状态 - 1:待支付 2:已支付
- STARTTIME string `json:"starttime" xorm:"STARTTIME"` // 预售开始时间
- ENDTIME string `json:"endtime" xorm:"ENDTIME"` // 预售结束时间
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
- Goodsnamedisplay string `json:"goodsnamedisplay" xorm:"GOODSNAMEDISPLAY"` // 商品名称
- TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49)
- CUSTOMERNAME string `json:"sellname" xorm:"SELLNAME"` // 客户名称(企业名称)
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *MineCpTradePreSaleResult) calc() {
- }
- func (r *MineCpTradePreSaleResult) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "GOODSNAMEDISPLAY",
- ui.customername "SELLNAME",
- to_char(pge.starttime, 'yyyy-mm-dd') STARTTIME,
- to_char(pge.endtime, 'yyyy-mm-dd') ENDTIME,
- g.transferdepositratio,
- to_char(t.tradeid) TRADEID,
- t.goodsid,
- t.buyaccountid,
- t.buyuserid,
- t.sellaccountid,
- t.selluserid,
- t.relatedgoodsid,
- t.tradeqty,
- t.handleflag,
- t.handlestatus,
- t.createtime,
- t.tradedate,
- t.marketid,
- t.relatedmarketid,
- to_char(t.applyid) APPLYID,
- t.openprice,
- t.tradeamount,
- t.sellhandleflag,
- t.buyhandleflag,
- t.relatedtradeid,
- t.transferdeposit,
- t.depositremain,
- t.paystatus
- from CPTrade_PresaleResult t
- left join CPTrade_PresaleGoodsEx pge on t.goodsid = pge.goodsid
- left join Goods g on t.relatedgoodsid = g.goodsid
- left join userinfo ui on pge.userid = ui.userid
- where t.handleflag = 0 and pge.marketid in (48201, 51201)
- and t.buyuserid = %v
- order by t.paystatus, pge.endtime
- `
- sqlId.FormatParam(r.BUYUSERID)
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineCpTradePreSaleResult) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]MineCpTradePreSaleResult, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- // MineTradePositionEx 我的持仓-转让持仓
- type MineTradePositionEx struct {
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 账号Id
- GOODSID int32 `json:"goodsid" xorm:"GOODSID" form:"goodsid"` // 商品Id
- TRANSFERDEPOSIT float64 `json:"transferdeposit" xorm:"TRANSFERDEPOSIT"` // 转让定金(49)
- DEPOSITREMAIN float64 `json:"depositremain" xorm:"DEPOSITREMAIN"` // 未付定金
- PAYSTATUS int32 `json:"paystatus" xorm:"PAYSTATUS"` // 支付状态 -1:待支付 2:已支付
- BUYCURPOSITIONQTY int64 `json:"buycurpositionqty" xorm:"BUYCURPOSITIONQTY"` // 买当前持仓总数量
- BUYCURHOLDERAMOUNT float64 `json:"buycurholderamount" xorm:"BUYCURHOLDERAMOUNT"` // 买当前持仓总金额[商品币种]
- BUYFROZENQTY int64 `json:"buyfrozenqty" xorm:"BUYFROZENQTY"` // 买持仓冻结数量
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
- Goodsnamedisplay string `json:"goodsnamedisplay" xorm:"GOODSNAMEDISPLAY"` // 商品名称
- PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价(49)
- TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49)
- LASTTRADEDATE string `json:"lasttradedate" xorm:"LASTTRADEDATE"` // 最后交易日期
- QUOTEMINUNIT int64 `json:"quoteminunit" xorm:"QUOTEMINUNIT"` // 行情最小变动单位 [整数,报价小数位一起使用]
- DECIMALPLACE int32 `json:"decimalplace" xorm:"DECIMALPLACE"` // 报价小数位
- PROVIDERUSERID int64 `json:"provideruserid" xorm:"PROVIDERUSERID"` // 发售方用户ID(49)\供货商(50)
- PROVIDERACCOUNTID int64 `json:"provideraccountid" xorm:"PROVIDERACCOUNTID"` // 发售方资金账户ID(49)\供货商资金账户ID(50)
- RELATEDGOODSID int64 `json:"relatedgoodsid" xorm:"RELATEDGOODSID"` // 关联交易合约ID
- CUSTOMERNAME string `json:"sellname" xorm:"SELLNAME"` // 客户名称(企业名称)
- Userid int `json:"-" xorm:"-" form:"userid" binding:"required"` // 用户ID
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *MineTradePositionEx) calc() {
- }
- func (r *MineTradePositionEx) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.GOODSID,
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "GOODSNAMEDISPLAY",
- g.QUOTEMINUNIT,
- g.DECIMALPLACE,
- tp.buycurpositionqty,
- tp.buycurholderamount,
- tp.buyfrozenqty,
- ui.customername "SELLNAME",
- g.presaleprice,
- g.PROVIDERUSERID,
- g.PROVIDERACCOUNTID,
- to_char(g.lasttradedate, 'yyyy-mm-dd') LASTTRADEDATE,
- tpe.accountid,
- tpe.transferdepositratio,
- tpe.transferdeposit,
- tpe.depositremain,
- tpe.paystatus
- from tradepositionEx tpe
- inner join tradeposition tp
- on tpe.accountid = tp.accountid
- and tpe.goodsid = tp.goodsid
- inner join goods g
- on tpe.goodsid = g.goodsid and g.GOODSSTATUS <> 7
- left join CPTrade_PresaleGoodsEx ge
- on tpe.goodsid = ge.relatedgoodsid
- left join userinfo ui
- on ge.userid = ui.userid
- left join taaccount ta
- on tpe.accountid = ta.accountid
- where g.marketid = 49201
- `
- sqlId.And("ta.relateduserid", r.Userid)
- sqlId.AndEx("g.GOODSID", r.GOODSID, r.GOODSID != 0)
- sqlId.OrderBy("tpe.paystatus, g.goodscode")
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradePositionEx) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]MineTradePositionEx, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- // MineTradeOrderDetail 我的订单-预售认购
- type MineTradeOrderDetail struct {
- ORDERID string `json:"orderid" xorm:"ORDERID"` // 委托单号(100+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- BUILDTYPE int32 `json:"buildtype" xorm:"BUILDTYPE"` // 委托单据类型 - 1:建仓 2:平仓 3:先平后建
- PREORDERID int64 `json:"preorderid" xorm:"PREORDERID"` // 关联预埋单号(止盈止损单时填写)
- CANCELORDERID int64 `json:"cancelorderid" xorm:"CANCELORDERID"` // 撤单单号(撤单时填写)
- RELATEDID string `json:"relatedid" xorm:"RELATEDID"` // 关联单号(交割单)
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 账户ID[报价币种]
- MEMBERUSERID int64 `json:"memberuserid" xorm:"MEMBERUSERID"` // 所属会员UserID
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
- PRICEMODE int32 `json:"pricemode" xorm:"PRICEMODE"` // 取价方式 - 1:市价 2: 限价 3:浮动价
- ORDERPRICE float64 `json:"orderprice" xorm:"ORDERPRICE"` // 委托价格
- MARKETMAXSUB float64 `json:"marketmaxsub" xorm:"MARKETMAXSUB"` // 市价最大偏移范围 [浮动价 - 点差]
- ORDERQTY int64 `json:"orderqty" xorm:"ORDERQTY"` // 委托数量
- TRADEQTY int64 `json:"tradeqty" xorm:"TRADEQTY"` // 成交数量
- CANCELQTY int64 `json:"cancelqty" xorm:"CANCELQTY"` // 撤单数量
- OPENQTY int64 `json:"openqty" xorm:"OPENQTY"` // 开仓数量(先建后平操作,需要记录)
- CLOSEQTY int64 `json:"closeqty" xorm:"CLOSEQTY"` // 平仓数量(先建后平操作 需要记录)
- OPENTRADEQTY int64 `json:"opentradeqty" xorm:"OPENTRADEQTY"` // 开仓成交数量(先建后平操作,需要记录)
- CLOSETRADEQTY int64 `json:"closetradeqty" xorm:"CLOSETRADEQTY"` // 平仓成交数量(先建后平操作,需要记录)
- FREEZEMARGIN float64 `json:"freezemargin" xorm:"FREEZEMARGIN"` // 冻结保证金(冻结交易金额)
- UNFREEZEMARGIN float64 `json:"unfreezemargin" xorm:"UNFREEZEMARGIN"` // 解冻保证金
- FREEZECHARGE float64 `json:"freezecharge" xorm:"FREEZECHARGE"` // 冻结手续费
- UNFREEZECHARGE float64 `json:"unfreezecharge" xorm:"UNFREEZECHARGE"` // 解冻手续费
- OPENFREEZECHARGE float64 `json:"openfreezecharge" xorm:"OPENFREEZECHARGE"` // 开仓冻结手续费(先建后平操作,需要记录)
- CLOSEFREEZECHARGE float64 `json:"closefreezecharge" xorm:"CLOSEFREEZECHARGE"` // 平仓冻结手续费(先建后平操作,需要记录)
- OPENUNFREEZECHARGE float64 `json:"openunfreezecharge" xorm:"OPENUNFREEZECHARGE"` // 开仓解冻手续费(先建后平操作,需要记录)
- CLOSEUNFREEZECHARGE float64 `json:"closeunfreezecharge" xorm:"CLOSEUNFREEZECHARGE"` // 平仓解冻手续费(先建后平操作,需要记录)
- VALIDTYPE int32 `json:"validtype" xorm:"VALIDTYPE"` // 有效类型 - 1当日有效 2本周有效 3指定日期有效 4一直有效 5指定时间有效
- VALIDTIME time.Time `json:"validtime" xorm:"VALIDTIME"` // 有效期限
- VOLUMETYPE int32 `json:"volumetype" xorm:"VOLUMETYPE"` // 当时间有效类型为 “立即执行否则取消 IOC” 时,需要此项 - 0:任意量 1:最小量(暂时不支持) 2:全部量
- OPERATETYPE int32 `json:"operatetype" xorm:"OPERATETYPE"` // 操作类型 - 1:正常下单 2:斩仓 3:转单 4:结算撤单 5:系统卖出(适用于先平后建的卖出) 6:行情源报价 7:(结算)到期强平 8:(结算)协议转让 9:系统对冲单 10:(结算)到期无效 11:交割协议转让 12:交割协议平仓 13:交割成交(所有权) 14:管理端强行平仓 15:管理端协议转让 ... 23:融资买入
- ORDERTIME string `json:"ordertime" xorm:"ORDERTIME"` // 委托时间
- ORDERSRC int32 `json:"ordersrc" xorm:"ORDERSRC"` // 委托来源 - 1:客户端 2:管理端 3:风控服务 4:交割服务 5:交易服务 6:交易日结 7:商品强平 8:管理端商品退市强平 9:交易接口 10:交割服务商被动(受托竞价) 11:预埋触发
- ORDERSTATUS int32 `json:"orderstatus" xorm:"ORDERSTATUS"` // 委托状态 - 参考枚举'orderstatus' - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败
- OPERATORID int64 `json:"operatorid" xorm:"OPERATORID"` // 登录账号(LoginID)
- UPDATETIME time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
- CLIENTORDERTIME time.Time `json:"clientordertime" xorm:"CLIENTORDERTIME"` // 客户端委托时间
- CLIENTTICKET string `json:"clientticket" xorm:"CLIENTTICKET"` // 客户端流水号
- UUID string `json:"uuid" xorm:"UUID"` // 发起端唯一id
- CLIENTTYPE int32 `json:"clienttype" xorm:"CLIENTTYPE"` // 客户端类型 - 0:保留为未填终端类型 1:PC管理端 2:PC交易端 3:手机客户端_安卓 4:网页客户端 5:微信客户端 6:手机客户端_苹果 7:网上开户客户端 8:无效终端编号 9:报价终端(中江)
- RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 错误代码
- TRADEPROPERTY int32 `json:"tradeproperty" xorm:"TRADEPROPERTY"` // 交易属性
- LISTINGSELECTTYPE int32 `json:"listingselecttype" xorm:"LISTINGSELECTTYPE"` // 挂牌点选类型 - 1:挂牌 2:摘牌 3:先摘后挂
- DELISTINGTYPE int32 `json:"delistingtype" xorm:"DELISTINGTYPE"` // 摘牌类型 - 1:价格最优 2:点选成交
- MARGINALGORITHM int32 `json:"marginalgorithm" xorm:"MARGINALGORITHM"` // 保证金收取方式 1:比率 2:固定
- MARGINVALUE float64 `json:"marginvalue" xorm:"MARGINVALUE"` // 即市保证金设置值
- OPENFEEALGORITHM int32 `json:"openfeealgorithm" xorm:"OPENFEEALGORITHM"` // 建仓手续费收取方式 1:比率 2:固定
- OPENMEMBERCHARGEVALUE float64 `json:"openmemberchargevalue" xorm:"OPENMEMBERCHARGEVALUE"` // 建仓会员手续费设置值
- OPENEXCHAGECHARGEVALUE float64 `json:"openexchagechargevalue" xorm:"OPENEXCHAGECHARGEVALUE"` // 建仓交易所手续费设置值
- CLOSEFEEALGORITHM int32 `json:"closefeealgorithm" xorm:"CLOSEFEEALGORITHM"` // 平仓手续费收取方式 1:比率 2:固定
- CLOSEMEMBERCHARGEVALUE float64 `json:"closememberchargevalue" xorm:"CLOSEMEMBERCHARGEVALUE"` // 平仓会员手续费设置值
- CLOSEEXCHAGECHARGEVALUE float64 `json:"closeexchagechargevalue" xorm:"CLOSEEXCHAGECHARGEVALUE"` // 平仓交易所手续费设置值
- OPTIONTYPE int32 `json:"optiontype" xorm:"OPTIONTYPE"` // 期权类型 - 1:认购(看涨) 2:认沽(看跌)
- PREMIUM float64 `json:"premium" xorm:"PREMIUM"` // 权利金
- ISPREEXERCISE int32 `json:"ispreexercise" xorm:"ISPREEXERCISE"` // 是否预申报- 0:否 1:是
- PREEXERCISEPRICE float64 `json:"preexerciseprice" xorm:"PREEXERCISEPRICE"` // 预申报价格
- ISCONFIRMEXERCISE int32 `json:"isconfirmexercise" xorm:"ISCONFIRMEXERCISE"` // 是否确认行权- 0:否 1:是
- QUOTEID int64 `json:"quoteid" xorm:"QUOTEID"` // 报价单ID
- GCACCOUNTID int64 `json:"gcaccountid" xorm:"GCACCOUNTID"` // 账户ID[合约币种]
- SESSIONID int64 `json:"sessionid" xorm:"SESSIONID"` // 会话ID
- FREEZEQTY int64 `json:"freezeqty" xorm:"FREEZEQTY"` // 冻结数量
- AMOUNTFLAG int32 `json:"amountflag" xorm:"AMOUNTFLAG"` // 资金标识 - 1:余额 2;待付
- ORDERFLAG int32 `json:"orderflag" xorm:"ORDERFLAG"` // 委托标识 - 1:按量 2:按金额
- PRESALEDEPOSITALGORITHM int32 `json:"presaledepositalgorithm" xorm:"PRESALEDEPOSITALGORITHM"` // 预售定金方式(48) - 1:比率 2:固定
- PRESALEDEPOSITVALUE float64 `json:"presaledepositvalue" xorm:"PRESALEDEPOSITVALUE"` // 预售定金设置值(48)
- STARTPRICE float64 `json:"startprice" xorm:"STARTPRICE"` // 起拍价[大宗式竞拍]
- STARTTIME string `json:"starttime" xorm:"STARTTIME"` // 预售开始时间
- ENDTIME string `json:"endtime" xorm:"ENDTIME"` // 预售结束时间
- TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价[大宗]
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
- Goodsnamedisplay string `json:"goodsnamedisplay" xorm:"GOODSNAMEDISPLAY"` // 商品名称
- CUSTOMERNAME string `json:"sellname" xorm:"SELLNAME"` // 客户名称(企业名称)
- Userid int `json:"-" xorm:"-" form:"userid" binding:"required"` // 用户ID
- IsHis bool `json:"-" xorm:"-" form:"ishis"` // 是否历史查询
- BeginDate string `json:"-" xorm:"-" form:"begindate"` // 开始交易日
- EndDate string `json:"-" xorm:"-" form:"enddate"` // 结束交易日
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *MineTradeOrderDetail) calc() {
- }
- func (r *MineTradeOrderDetail) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "GOODSNAMEDISPLAY",
- pge.presaledepositalgorithm,
- pge.presaledepositvalue,
- ui.customername "SELLNAME",
- pge.startprice,
- to_char(pge.starttime, 'yyyy-mm-dd') STARTTIME,
- to_char(pge.endtime, 'yyyy-mm-dd') ENDTIME,
- pge.tradeprice,
- t.cancelorderid,
- to_char(t.relatedid) RELATEDID,
- t.marketid,
- t.accountid,
- t.marketmaxsub,
- t.tradeqty,
- t.cancelqty,
- t.opentradeqty,
- t.closetradeqty,
- t.freezemargin,
- t.unfreezemargin,
- t.freezecharge,
- t.unfreezecharge,
- t.openfreezecharge,
- t.closefreezecharge,
- t.openunfreezecharge,
- t.closeunfreezecharge,
- t.validtype,
- t.validtime,
- t.operatetype,
- t.orderstatus,
- t.operatorid,
- t.updatetime,
- t.tradeproperty,
- t.marginalgorithm,
- t.marginvalue,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.gcaccountid,
- t.amountflag,
- t.orderflag,
- to_char(t.ordertime, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
- to_char(t.orderid) ORDERID,
- t.orderqty,
- t.orderprice
- from trade_orderdetail t
- inner join CPTrade_PresaleGoodsEx pge
- on t.goodsid = pge.goodsid
- inner join goods g
- on pge.relatedgoodsid = g.goodsid
- inner join taaccount ta
- on t.accountid = ta.accountid
- left join userinfo ui
- on pge.userid = ui.userid
- where t.marketid in (48201,51201)
- and ta.userid = %v
- order by t.ordertime desc
- `
- sqlId.FormatParam(r.Userid)
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeOrderDetail) buildSql_His() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "GOODSNAMEDISPLAY",
- pge.presaledepositalgorithm,
- pge.presaledepositvalue,
- ui.customername "SELLNAME",
- pge.startprice,
- pge.starttime,
- pge.endtime,
- pge.tradeprice,
- t.cancelorderid,
- to_char(t.relatedid) RELATEDID,
- t.marketid,
- t.accountid,
- t.marketmaxsub,
- t.tradeqty,
- t.cancelqty,
- t.opentradeqty,
- t.closetradeqty,
- t.freezemargin,
- t.unfreezemargin,
- t.freezecharge,
- t.unfreezecharge,
- t.openfreezecharge,
- t.closefreezecharge,
- t.openunfreezecharge,
- t.closeunfreezecharge,
- t.validtype,
- t.validtime,
- t.operatetype,
- t.orderstatus,
- t.operatorid,
- t.updatetime,
- t.tradeproperty,
- t.marginalgorithm,
- t.marginvalue,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.gcaccountid,
- t.amountflag,
- t.orderflag,
- to_char(t.ordertime, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
- to_char(t.orderid) ORDERID,
- t.orderqty,
- t.orderprice
- from HIS_Trade_OrderDetail t
- inner join CPTrade_PresaleGoodsEx pge
- on t.goodsid = pge.goodsid
- inner join goods g
- on t.goodsid = g.goodsid
- inner join taaccount ta
- on t.accountid = ta.accountid
- left join userinfo ui
- on pge.userid = ui.userid
- where t.marketid in (48201,51201) and t.isvaliddata = 1
- `
- sqlId.And("ta.userid", r.Userid)
- if r.BeginDate != "" && r.EndDate != "" {
- sqlId.JoinFormat(" AND (t.TRADEDATE >= '%v' AND t.TRADEDATE <= '%v')", r.BeginDate, r.EndDate)
- }
- sqlId.OrderByDesc("t.ordertime")
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeOrderDetail) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]MineTradeOrderDetail, 0)
- sql := ""
- if r.IsHis {
- sql = r.buildSql_His()
- } else {
- sql = r.buildSql()
- }
- err := db.GetEngine().SQL(sql).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- // MineTradeOrder 我的订单-转让委托
- type MineTradeOrder struct {
- ORDERID string `json:"orderid" xorm:"ORDERID"` // 委托单号(100+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- BUILDTYPE int32 `json:"buildtype" xorm:"BUILDTYPE"` // 委托单据类型 - 1:建仓 2:平仓 3:先平后建
- PREORDERID int64 `json:"preorderid" xorm:"PREORDERID"` // 关联预埋单号(止盈止损单时填写)
- CANCELORDERID int64 `json:"cancelorderid" xorm:"CANCELORDERID"` // 撤单单号(撤单时填写)
- RELATEDID int64 `json:"relatedid" xorm:"RELATEDID"` // 关联单号(交割单)
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 账户ID[报价币种]
- MEMBERUSERID int64 `json:"memberuserid" xorm:"MEMBERUSERID"` // 所属会员UserID
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
- PRICEMODE int32 `json:"pricemode" xorm:"PRICEMODE"` // 取价方式 - 1:市价 2: 限价 3:浮动价
- ORDERPRICE float64 `json:"orderprice" xorm:"ORDERPRICE"` // 委托价格
- MARKETMAXSUB float64 `json:"marketmaxsub" xorm:"MARKETMAXSUB"` // 市价最大偏移范围 [浮动价 - 点差]
- ORDERQTY int64 `json:"orderqty" xorm:"ORDERQTY"` // 委托数量
- TRADEQTY int64 `json:"tradeqty" xorm:"TRADEQTY"` // 成交数量
- CANCELQTY int64 `json:"cancelqty" xorm:"CANCELQTY"` // 撤单数量
- OPENQTY int64 `json:"openqty" xorm:"OPENQTY"` // 开仓数量(先建后平操作,需要记录)
- CLOSEQTY int64 `json:"closeqty" xorm:"CLOSEQTY"` // 平仓数量(先建后平操作 需要记录)
- OPENTRADEQTY int64 `json:"opentradeqty" xorm:"OPENTRADEQTY"` // 开仓成交数量(先建后平操作,需要记录)
- CLOSETRADEQTY int64 `json:"closetradeqty" xorm:"CLOSETRADEQTY"` // 平仓成交数量(先建后平操作,需要记录)
- FREEZEMARGIN float64 `json:"freezemargin" xorm:"FREEZEMARGIN"` // 冻结保证金(冻结交易金额)
- UNFREEZEMARGIN float64 `json:"unfreezemargin" xorm:"UNFREEZEMARGIN"` // 解冻保证金
- FREEZECHARGE float64 `json:"freezecharge" xorm:"FREEZECHARGE"` // 冻结手续费
- UNFREEZECHARGE float64 `json:"unfreezecharge" xorm:"UNFREEZECHARGE"` // 解冻手续费
- OPENFREEZECHARGE float64 `json:"openfreezecharge" xorm:"OPENFREEZECHARGE"` // 开仓冻结手续费(先建后平操作,需要记录)
- CLOSEFREEZECHARGE float64 `json:"closefreezecharge" xorm:"CLOSEFREEZECHARGE"` // 平仓冻结手续费(先建后平操作,需要记录)
- OPENUNFREEZECHARGE float64 `json:"openunfreezecharge" xorm:"OPENUNFREEZECHARGE"` // 开仓解冻手续费(先建后平操作,需要记录)
- CLOSEUNFREEZECHARGE float64 `json:"closeunfreezecharge" xorm:"CLOSEUNFREEZECHARGE"` // 平仓解冻手续费(先建后平操作,需要记录)
- VALIDTYPE int32 `json:"validtype" xorm:"VALIDTYPE"` // 有效类型 - 1当日有效 2本周有效 3指定日期有效 4一直有效 5指定时间有效
- VALIDTIME time.Time `json:"validtime" xorm:"VALIDTIME"` // 有效期限
- VOLUMETYPE int32 `json:"volumetype" xorm:"VOLUMETYPE"` // 当时间有效类型为 “立即执行否则取消 IOC” 时,需要此项 - 0:任意量 1:最小量(暂时不支持) 2:全部量
- OPERATETYPE int32 `json:"operatetype" xorm:"OPERATETYPE"` // 操作类型 - 1:正常下单 2:斩仓 3:转单 4:结算撤单 5:系统卖出(适用于先平后建的卖出) 6:行情源报价 7:(结算)到期强平 8:(结算)协议转让 9:系统对冲单 10:(结算)到期无效 11:交割协议转让 12:交割协议平仓 13:交割成交(所有权) 14:管理端强行平仓 15:管理端协议转让 ... 23:融资买入
- ORDERTIME string `json:"ordertime" xorm:"ORDERTIME"` // 委托时间
- ORDERSRC int32 `json:"ordersrc" xorm:"ORDERSRC"` // 委托来源 - 1:客户端 2:管理端 3:风控服务 4:交割服务 5:交易服务 6:交易日结 7:商品强平 8:管理端商品退市强平 9:交易接口 10:交割服务商被动(受托竞价) 11:预埋触发
- ORDERSTATUS int32 `json:"orderstatus" xorm:"ORDERSTATUS"` // 委托状态 - 参考枚举'orderstatus' - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败
- OPERATORID int64 `json:"operatorid" xorm:"OPERATORID"` // 登录账号(LoginID)
- UPDATETIME time.Time `json:"updatetime" xorm:"UPDATETIME"` // 更新时间
- CLIENTORDERTIME time.Time `json:"clientordertime" xorm:"CLIENTORDERTIME"` // 客户端委托时间
- CLIENTTICKET string `json:"clientticket" xorm:"CLIENTTICKET"` // 客户端流水号
- UUID string `json:"uuid" xorm:"UUID"` // 发起端唯一id
- CLIENTTYPE int32 `json:"clienttype" xorm:"CLIENTTYPE"` // 客户端类型 - 0:保留为未填终端类型 1:PC管理端 2:PC交易端 3:手机客户端_安卓 4:网页客户端 5:微信客户端 6:手机客户端_苹果 7:网上开户客户端 8:无效终端编号 9:报价终端(中江)
- RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 错误代码
- TRADEPROPERTY int32 `json:"tradeproperty" xorm:"TRADEPROPERTY"` // 交易属性
- LISTINGSELECTTYPE int32 `json:"listingselecttype" xorm:"LISTINGSELECTTYPE"` // 挂牌点选类型 - 1:挂牌 2:摘牌 3:先摘后挂
- DELISTINGTYPE int32 `json:"delistingtype" xorm:"DELISTINGTYPE"` // 摘牌类型 - 1:价格最优 2:点选成交
- MARGINALGORITHM int32 `json:"marginalgorithm" xorm:"MARGINALGORITHM"` // 保证金收取方式 1:比率 2:固定
- MARGINVALUE float64 `json:"marginvalue" xorm:"MARGINVALUE"` // 即市保证金设置值
- OPENFEEALGORITHM int32 `json:"openfeealgorithm" xorm:"OPENFEEALGORITHM"` // 建仓手续费收取方式 1:比率 2:固定
- OPENMEMBERCHARGEVALUE float64 `json:"openmemberchargevalue" xorm:"OPENMEMBERCHARGEVALUE"` // 建仓会员手续费设置值
- OPENEXCHAGECHARGEVALUE float64 `json:"openexchagechargevalue" xorm:"OPENEXCHAGECHARGEVALUE"` // 建仓交易所手续费设置值
- CLOSEFEEALGORITHM int32 `json:"closefeealgorithm" xorm:"CLOSEFEEALGORITHM"` // 平仓手续费收取方式 1:比率 2:固定
- CLOSEMEMBERCHARGEVALUE float64 `json:"closememberchargevalue" xorm:"CLOSEMEMBERCHARGEVALUE"` // 平仓会员手续费设置值
- CLOSEEXCHAGECHARGEVALUE float64 `json:"closeexchagechargevalue" xorm:"CLOSEEXCHAGECHARGEVALUE"` // 平仓交易所手续费设置值
- OPTIONTYPE int32 `json:"optiontype" xorm:"OPTIONTYPE"` // 期权类型 - 1:认购(看涨) 2:认沽(看跌)
- PREMIUM float64 `json:"premium" xorm:"PREMIUM"` // 权利金
- ISPREEXERCISE int32 `json:"ispreexercise" xorm:"ISPREEXERCISE"` // 是否预申报- 0:否 1:是
- PREEXERCISEPRICE float64 `json:"preexerciseprice" xorm:"PREEXERCISEPRICE"` // 预申报价格
- ISCONFIRMEXERCISE int32 `json:"isconfirmexercise" xorm:"ISCONFIRMEXERCISE"` // 是否确认行权- 0:否 1:是
- QUOTEID int64 `json:"quoteid" xorm:"QUOTEID"` // 报价单ID
- GCACCOUNTID int64 `json:"gcaccountid" xorm:"GCACCOUNTID"` // 账户ID[合约币种]
- SESSIONID int64 `json:"sessionid" xorm:"SESSIONID"` // 会话ID
- FREEZEQTY int64 `json:"freezeqty" xorm:"FREEZEQTY"` // 冻结数量
- AMOUNTFLAG int32 `json:"amountflag" xorm:"AMOUNTFLAG"` // 资金标识 - 1:余额 2;待付
- ORDERFLAG int32 `json:"orderflag" xorm:"ORDERFLAG"` // 委托标识 - 1:按量 2:按金额
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
- Goodsnamedisplay string `json:"goodsnamedisplay" xorm:"GOODSNAMEDISPLAY"` // 商品名称
- PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价(49)
- Userid int `json:"-" xorm:"-" form:"userid" binding:"required"` // 用户ID
- Status string `json:"-" xorm:"-" form:"status"`
- IsHis bool `json:"-" xorm:"-" form:"ishis"` // 是否历史查询
- BeginDate string `json:"-" xorm:"-" form:"begindate"` // 开始交易日
- EndDate string `json:"-" xorm:"-" form:"enddate"` // 结束交易日
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *MineTradeOrder) calc() {
- }
- func (r *MineTradeOrder) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "GOODSNAMEDISPLAY",
- g.presaleprice,
- t.goodsid,
- t.cancelorderid,
- t.relatedid,
- t.marketid,
- t.accountid,
- t.marketmaxsub,
- t.tradeqty,
- t.cancelqty,
- t.opentradeqty,
- t.closetradeqty,
- t.freezemargin,
- t.unfreezemargin,
- t.freezecharge,
- t.unfreezecharge,
- t.openfreezecharge,
- t.closefreezecharge,
- t.openunfreezecharge,
- t.closeunfreezecharge,
- t.validtype,
- t.validtime,
- t.operatetype,
- t.orderstatus,
- t.operatorid,
- t.updatetime,
- t.tradeproperty,
- t.marginalgorithm,
- t.marginvalue,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.gcaccountid,
- t.amountflag,
- t.orderflag,
- to_char(t.ordertime, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
- to_char(t.orderid) ORDERID,
- t.orderqty,
- t.orderprice
- from trade_orderdetail t
- inner join goods g
- on t.goodsid = g.goodsid
- inner join taaccount ta
- on t.accountid = ta.accountid
- where t.marketid = 49201
- `
- // and ta.userid = %v
- // order by t.ordertime desc
- // `
- // sqlId.FormatParam(r.Userid)
- sqlId.And("ta.userid", r.Userid)
- // sqlId.AndEx("t.orderstatus", r.ORDERSTATUS, r.ORDERSTATUS > 0)
- if r.Status != "" {
- sqlId.JoinFormat("and t.orderstatus in (%s)", r.Status)
- }
- sqlId.OrderByDesc("t.ordertime")
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeOrder) buildSql_His() string {
- var sqlId utils.SQLVal = `
- select DISTINCT
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "GOODSNAMEDISPLAY",
- g.presaleprice,
- t.goodsid,
- t.cancelorderid,
- t.relatedid,
- t.marketid,
- t.accountid,
- t.marketmaxsub,
- t.tradeqty,
- t.cancelqty,
- t.opentradeqty,
- t.closetradeqty,
- t.freezemargin,
- t.unfreezemargin,
- t.freezecharge,
- t.unfreezecharge,
- t.openfreezecharge,
- t.closefreezecharge,
- t.openunfreezecharge,
- t.closeunfreezecharge,
- t.validtype,
- t.validtime,
- t.operatetype,
- t.orderstatus,
- t.operatorid,
- t.updatetime,
- t.tradeproperty,
- t.marginalgorithm,
- t.marginvalue,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.gcaccountid,
- t.amountflag,
- t.orderflag,
- to_char(t.ordertime, 'yyyy-mm-dd hh24:mi:ss') ORDERTIME,
- to_char(t.orderid) ORDERID,
- t.orderqty,
- t.orderprice
- from HIS_Trade_OrderDetail t
- inner join goods g
- on t.goodsid = g.goodsid
- inner join taaccount ta
- on t.accountid = ta.accountid
- where t.marketid = 49201
- `
- sqlId.And("ta.userid", r.Userid)
- if r.BeginDate != "" && r.EndDate != "" {
- sqlId.JoinFormat(" AND (t.TRADEDATE >= '%v' AND t.TRADEDATE <= '%v')", r.BeginDate, r.EndDate)
- }
- sqlId.OrderByDesc("ORDERTIME")
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeOrder) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]MineTradeOrder, 0)
- sql := ""
- if r.IsHis {
- sql = r.buildSql_His()
- } else {
- sql = r.buildSql()
- }
- err := db.GetEngine().SQL(sql).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- // MineTradeTradeDetail 我的订单-转让成交
- type MineTradeTradeDetail struct {
- TRADEID string `json:"tradeid" xorm:"TRADEID"` // 成交单号(101+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 方向 - 0:买 1:卖
- ORDERID int64 `json:"orderid" xorm:"ORDERID"` // 委托单号
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 账户ID[报价币种]
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- MEMBERUSERID int64 `json:"memberuserid" xorm:"MEMBERUSERID"` // 会员id 个人投资者 需要填写
- MATCHACCOUNTID int64 `json:"matchaccountid" xorm:"MATCHACCOUNTID"` // 对手账号id
- TRADETIME string `json:"tradetime" xorm:"TRADETIME"` // 成交时间
- TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价格
- TRADEQTY int64 `json:"tradeqty" xorm:"TRADEQTY"` // 成交数量
- TRADEAMOUNT float64 `json:"tradeamount" xorm:"TRADEAMOUNT"` // 成交金额[账户币种,用于所有权]
- CLOSEPL float64 `json:"closepl" xorm:"CLOSEPL"` // 平仓盈亏
- INTCLOSEPL int64 `json:"intclosepl" xorm:"INTCLOSEPL"` // 整型盈亏(用于交易结算试算平衡-收益权)
- OPENCHARGE float64 `json:"opencharge" xorm:"OPENCHARGE"` // 建仓手续费(支付总手续费=(交易所比率+会员比率)*成交金额)
- CLOSECHARGE float64 `json:"closecharge" xorm:"CLOSECHARGE"` // 平仓手续费(支付总手续费=(交易所比率+会员比率)*成交金额)
- TRADETYPE int32 `json:"tradetype" xorm:"TRADETYPE"` // 成交类别 - 1:正常委托成交 2:定向做市成交(接单) 3:交割协议平仓成交 4:交割减仓成交 5:到期强平成交 6:风控斩仓成交 7:协议平仓(管理端)成交 8:仓单转持仓成交 9: 交割协议转让成交 10:受托竞价成交(接单) 11:协议转让成交 12:系统强行平仓 13:期权违约平仓
- BUILDTYPE int32 `json:"buildtype" xorm:"BUILDTYPE"` // 委托单据类型 1:建仓 2:平仓 3:先平后建
- OPENQTY int64 `json:"openqty" xorm:"OPENQTY"` // 开仓数量(先建后平操作 需要记录)
- CLOSEQTY int64 `json:"closeqty" xorm:"CLOSEQTY"` // 平仓数量(先建后平操作 需要记录)
- STATUS int32 `json:"status" xorm:"STATUS"` // 处理状态 - 1:待处理 2:已处理 3:处理失败
- ISRECKONED int32 `json:"isreckoned" xorm:"ISRECKONED"` // 是否结算 - 0:未结算 1:已结算
- TRADEPROPERTY int32 `json:"tradeproperty" xorm:"TRADEPROPERTY"` // 交易属性
- OPENFEEALGORITHM int32 `json:"openfeealgorithm" xorm:"OPENFEEALGORITHM"` // 建仓手续费收取方式 1:比率 2:固定
- OPENMEMBERCHARGEVALUE float64 `json:"openmemberchargevalue" xorm:"OPENMEMBERCHARGEVALUE"` // 建仓会员手续费设置值
- OPENEXCHAGECHARGEVALUE float64 `json:"openexchagechargevalue" xorm:"OPENEXCHAGECHARGEVALUE"` // 建仓交易所手续费设置值
- CLOSEFEEALGORITHM int32 `json:"closefeealgorithm" xorm:"CLOSEFEEALGORITHM"` // 平仓手续费收取方式 1:比率 2:固定
- CLOSEMEMBERCHARGEVALUE float64 `json:"closememberchargevalue" xorm:"CLOSEMEMBERCHARGEVALUE"` // 平仓会员手续费设置值
- CLOSEEXCHAGECHARGEVALUE float64 `json:"closeexchagechargevalue" xorm:"CLOSEEXCHAGECHARGEVALUE"` // 平仓交易所手续费设置值
- OPTIONTYPE int32 `json:"optiontype" xorm:"OPTIONTYPE"` // 期权类型 - 1:认购(看涨) 2:认沽(看跌)
- PREMIUM float64 `json:"premium" xorm:"PREMIUM"` // 权利金 - [持仓单的权利金]
- ISPREEXERCISE int32 `json:"ispreexercise" xorm:"ISPREEXERCISE"` // 是否预申报- 0:否 1:是
- PREEXERCISEPRICE float64 `json:"preexerciseprice" xorm:"PREEXERCISEPRICE"` // 预申报价格
- ISCONFIRMEXERCISE int32 `json:"isconfirmexercise" xorm:"ISCONFIRMEXERCISE"` // 是否确认行权- 0:否 1:是
- ISMAIN int32 `json:"ismain" xorm:"ISMAIN"` // 是否主单 - 0:不是 1:是
- PERFORMANCEPLANID int64 `json:"performanceplanid" xorm:"PERFORMANCEPLANID"` // 履约计划ID[期权]
- PERFORMANCESTATUS int32 `json:"performancestatus" xorm:"PERFORMANCESTATUS"` // 履约状态[期权] - 0:无履约 1:未履约 2:履约中 3:履约完成
- CREDITAMOUNT float64 `json:"creditamount" xorm:"CREDITAMOUNT"` // 授信金额
- GCACCOUNTID int64 `json:"gcaccountid" xorm:"GCACCOUNTID"` // 账户ID[合约币种]
- CLOSEPL2 float64 `json:"closepl2" xorm:"CLOSEPL2"` // 平仓盈亏[逐笔]
- RELATEDOUTTRADEID int64 `json:"relatedouttradeid" xorm:"RELATEDOUTTRADEID"` // 关联外部成交单ID
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
- Goodsnamedisplay string `json:"goodsnamedisplay" xorm:"GOODSNAMEDISPLAY"` // 商品名称
- PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价(49)
- Userid int `json:"-" xorm:"-" form:"userid" binding:"required"` // 用户ID
- IsHis bool `json:"-" xorm:"-" form:"ishis"` // 是否历史查询
- BeginDate string `json:"-" xorm:"-" form:"begindate"` // 开始交易日
- EndDate string `json:"-" xorm:"-" form:"enddate"` // 结束交易日
- ACCOUNTNAME string `json:"accountname" xorm:"ACCOUNTNAME"` // 账户名称(机构名称)
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *MineTradeTradeDetail) calc() {
- }
- func (r *MineTradeTradeDetail) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "goodsnamedisplay",
- g.presaleprice,
- ua.accountname,
-
- to_char(t.tradeid) TRADEID,
- t.buyorsell,
- t.orderid,
- t.tradedate,
- t.accountid,
- t.goodsid,
- t.marketid,
- t.memberuserid,
- t.matchaccountid,
- to_char(t.tradetime, 'yyyy-mm-dd hh24:mi:ss') TRADETIME,
- t.tradeprice,
- t.tradeqty,
- t.tradeamount,
- t.closepl,
- t.intclosepl,
- t.opencharge,
- t.closecharge,
- t.tradetype,
- t.buildtype,
- t.openqty,
- t.closeqty,
- t.status,
- t.isreckoned,
- t.tradeproperty,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.optiontype,
- t.premium,
- t.ispreexercise,
- t.preexerciseprice,
- t.isconfirmexercise,
- t.ismain,
- t.performanceplanid,
- t.performancestatus,
- t.creditamount,
- t.gcaccountid,
- t.closepl2,
- t.relatedouttradeid
-
- from trade_tradedetail t
- inner join goods g
- on t.goodsid = g.goodsid
- inner join taaccount ta
- on t.accountid = ta.accountid
- left join taaccount ta2
- on t.matchaccountid = ta2.accountid
- left join useraccount ua
- on ua.userid = ta2.userid
- where t.marketid = 49201
- and ta.userid = %v
- order by t.tradetime desc
- `
- sqlId.FormatParam(r.Userid)
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeTradeDetail) buildSql_His() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname "goodsnamedisplay",
- g.presaleprice,
- ua.accountname,
-
- to_char(t.tradeid) TRADEID,
- t.buyorsell,
- t.orderid,
- t.tradedate,
- t.accountid,
- t.goodsid,
- t.marketid,
- t.memberuserid,
- t.matchaccountid,
- to_char(t.tradetime, 'yyyy-mm-dd hh24:mi:ss') TRADETIME,
- t.tradeprice,
- t.tradeqty,
- t.tradeamount,
- t.closepl,
- t.intclosepl,
- t.opencharge,
- t.closecharge,
- t.tradetype,
- t.buildtype,
- t.openqty,
- t.closeqty,
- t.status,
- t.isreckoned,
- t.tradeproperty,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.optiontype,
- t.premium,
- t.ispreexercise,
- t.preexerciseprice,
- t.isconfirmexercise,
- t.ismain,
- t.performanceplanid,
- t.performancestatus,
- t.creditamount,
- t.gcaccountid,
- t.closepl2,
- t.relatedouttradeid
-
- from HIS_Trade_TradeDetail t
- inner join goods g
- on t.goodsid = g.goodsid
- inner join taaccount ta
- on t.accountid = ta.accountid
- left join taaccount ta2
- on t.matchaccountid = ta2.accountid
- left join useraccount ua
- on ua.userid = ta2.userid
- where t.marketid = 49201 and t.isvaliddata = 1
- `
- sqlId.And("ta.userid", r.Userid)
- if r.BeginDate != "" && r.EndDate != "" {
- sqlId.JoinFormat(" AND (t.TRADEDATE >= '%v' AND t.TRADEDATE <= '%v')", r.BeginDate, r.EndDate)
- }
- sqlId.OrderByDesc("t.tradetime")
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeTradeDetail) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]MineTradeTradeDetail, 0)
- sql := ""
- if r.IsHis {
- sql = r.buildSql_His()
- } else {
- sql = r.buildSql()
- }
- err := db.GetEngine().SQL(sql).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- // MineTradeGoodsDeliveryOffline 交收提货-线下交收单
- type MineTradeGoodsDeliveryOffline struct {
- DELIVERYORDERID string `json:"deliveryorderid" xorm:"DELIVERYORDERID"` // 交收单号(905+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- USERID int64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 申请用户ID
- ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 账户ID
- GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- BUYORSELL *int32 `json:"buyorsell" xorm:"BUYORSELL" form:"buyorsell"` // 交收方向 - 0:买 1:卖
- DELIVERYLOT int64 `json:"deliverylot" xorm:"DELIVERYLOT"` // 交收手数
- DELIVERYQTY int64 `json:"deliveryqty" xorm:"DELIVERYQTY"` // 交收数量 (手数*合约乘数)
- DELIVERYINFO string `json:"deliveryinfo" xorm:"DELIVERYINFO"` // 交收信息
- MATCHUSERID int64 `json:"matchuserid" xorm:"MATCHUSERID"` // 对手方UserID
- MATCHACCOUNTID int64 `json:"matchaccountid" xorm:"MATCHACCOUNTID"` // 对手方AccountID
- REQTIME string `json:"reqtime" xorm:"REQTIME"` // 申请时间
- REQTRADEDATE string `json:"reqtradedate" xorm:"REQTRADEDATE"` // 申请交易日
- ORDERSTATUS int32 `json:"orderstatus" xorm:"ORDERSTATUS"` // 单据状态 - 1:待处理 2:交收中 3:已完成
- DELIVERYPRICE float64 `json:"deliveryprice" xorm:"DELIVERYPRICE"` // 交收价格
- DELIVERYAMOUNT float64 `json:"deliveryamount" xorm:"DELIVERYAMOUNT"` // 交收货款
- CLOSETIME time.Time `json:"closetime" xorm:"CLOSETIME"` // 完成时间
- CLOSETRADEDATE string `json:"closetradedate" xorm:"CLOSETRADEDATE"` // 完成交易日
- TRADEID string `json:"tradeid" xorm:"TRADEID"` // 成交单号(10-线下交收)
- TOTALPRICEMOVE float64 `json:"totalpricemove" xorm:"TOTALPRICEMOVE"` // 总升贴水(10-线下交收)
- TOTALSHIPPINGFEE float64 `json:"totalshippingfee" xorm:"TOTALSHIPPINGFEE"` // 总运费(10-线下交收)
- TOTALOTHERFEE float64 `json:"totalotherfee" xorm:"TOTALOTHERFEE"` // 总其它费用(10-线下交收)
- GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
- GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
- Goodsnamedisplay string `json:"goodsnamedisplay" xorm:"GOODSNAMEDISPLAY"` // 商品名称
- THUMURLS string `json:"thumurls" xorm:"THUMURLS"` // 缩略图片(1:1)(逗号分隔)
- Buyorselldisplay string `json:"buyorselldisplay" xorm:"BUYORSELLDISPLAY"` // 交收方向
- Goodsunit string `json:"goodsunit" xorm:"GOODSUNIT"` // 单位
- Orderstatusdisplay string `json:"orderstatusdisplay" xorm:"ORDERSTATUSDISPLAY"` // 单据状态
- CUSTOMERNAME string `json:"matchusername" xorm:"MATCHUSERNAME"` // [交收对手方]客户名称(企业名称)
- AGREEUNIT float64 `json:"agreeunit" xorm:"AGREEUNIT"` // 合约乘数
- GOODSNAMETH string `json:"goodsnameth" xorm:"GOODSNAMETH"` // 期货合约名称泰文)
- GOODSNAMEEN string `json:"goodsnameen" xorm:"GOODSNAMEEN"` // 期货合约名称(英文)
- GOODSNAMETW string `json:"goodsnametw" xorm:"GOODSNAMETW"` // 期货合约名称(繁体)
- MarketIds string `form:"marketids"` // 过滤市场ID列表,格式 1,2,3
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *MineTradeGoodsDeliveryOffline) calc() {
- }
- func (r *MineTradeGoodsDeliveryOffline) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode,
- g.goodsname,
- g.goodscode || '/' || g.goodsname GOODSNAMEDISPLAY,
- g.thumurls,
- e1.enumdicname BUYORSELLDISPLAY,
- e2.enumdicname GOODSUNIT,
- g.agreeunit,
- ui.customername MATCHUSERNAME,
- e3.enumdicname ORDERSTATUSDISPLAY,
- to_char(t.deliveryorderid) DELIVERYORDERID,
- t.userid,
- t.accountid,
- t.goodsid,
- t.marketid,
- t.buyorsell,
- t.deliverylot,
- t.deliveryqty,
- t.deliveryinfo,
- t.matchuserid,
- t.matchaccountid,
- to_char(t.reqtime, 'yyyy-mm-dd hh24:mi:ss') REQTIME,
- t.reqtradedate,
- t.orderstatus,
- t.deliveryprice,
- t.deliveryamount,
- t.closetime,
- t.closetradedate,
- to_char(t.tradeid) TRADEID,
- t.totalpricemove,
- t.totalshippingfee,
- t.totalotherfee,
- ge.goodsnameth,
- ge.goodsnameen,
- ge.goodsnametw
-
- from Trade_GoodsDeliveryOffLine t
- left join goods g
- on t.goodsid = g.goodsid
- left join goodsex ge
- on t.goodsid = ge.goodsid
- left join enumdicitem e1
- on e1.enumdiccode = 'buyOrSell'
- and t.buyorsell = e1.enumitemname
- left join enumdicitem e2
- on e2.enumdiccode = 'goodsunit'
- and g.goodunitid = e2.enumitemname
- left join enumdicitem e3
- on e3.enumdiccode = 'deliveryOrderStatus'
- and t.orderstatus = e3.enumitemname
- left join userinfo ui
- on t.matchuserid = ui.userid
- where 1 = 1
- `
- sqlId.And("t.userid", r.USERID)
- if r.BUYORSELL != nil {
- sqlId.And("t.buyorsell", *r.BUYORSELL)
- }
- if r.MarketIds != "" {
- sqlId.JoinFormat("and t.marketid in (%s)", r.MarketIds)
- }
- sqlId.OrderByDesc("t.reqtime")
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *MineTradeGoodsDeliveryOffline) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]MineTradeGoodsDeliveryOffline, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
|