package models import ( "errors" "mtp2_if/db" "mtp2_if/utils" "time" ) // PresaleAuction 预售竞拍 type PresaleAuction struct { GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID APPLYID string `json:"applyid" xorm:"APPLYID"` // 关联申请ID USERID int64 `json:"userid" xorm:"USERID"` // 卖方用户ID ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 卖方账户ID RELATEDGOODSID int64 `json:"relatedgoodsid" xorm:"RELATEDGOODSID"` // 关联交易合约ID PRESALEQTY int64 `json:"presaleqty" xorm:"PRESALEQTY"` // 预售数量 STARTTIME string `json:"starttime" xorm:"STARTTIME"` // 预售开始时间 ENDTIME string `json:"endtime" xorm:"ENDTIME"` // 预售结束时间 ATTACHMENTURL string `json:"attachmenturl" xorm:"ATTACHMENTURL"` // 缩略图片(1:1) PRESALEMODE int32 `json:"presalemode" xorm:"PRESALEMODE" form:"presalemode" binding:"required"` // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY) MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 预售市场ID - 根据预售模式选择市场 REFPRICE float64 `json:"refprice" xorm:"REFPRICE"` // 参考价格[一口价] STARTPRICE float64 `json:"startprice" xorm:"STARTPRICE"` // 起拍价[大宗式竞拍] FLOORPRICE float64 `json:"floorprice" xorm:"FLOORPRICE"` // 底价[大宗式竞拍] CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间 TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd) RELATEDMARKETID int64 `json:"relatedmarketid" xorm:"RELATEDMARKETID"` // 关联交易合约市场ID PRESALEDQTY int64 `json:"presaledqty" xorm:"PRESALEDQTY"` // 已预售量(预售结束时更新) 71-委托时更新 PRESALEDAMOUNT float64 `json:"presaledamount" xorm:"PRESALEDAMOUNT"` // 已预售总金额(预售结束时更新)71-委托时更新 SELLSTATUS int32 `json:"sellstatus" xorm:"SELLSTATUS"` // 卖方处理状态 - 1:卖方头寸未处理 2:卖方头寸已处理 GOODSDETAIL string `json:"goodsdetail" xorm:"GOODSDETAIL"` // 详情[大宗] TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价[大宗] BUYMAXQTY int64 `json:"buymaxqty" xorm:"BUYMAXQTY"` // 购买上限 [71] - 0为不限 PRESALEDEPOSITALGORITHM int32 `json:"presaledepositalgorithm" xorm:"PRESALEDEPOSITALGORITHM"` // 预售定金方式(48) - 1:比率 2:固定 PRESALEDEPOSITVALUE float64 `json:"presaledepositvalue" xorm:"PRESALEDEPOSITVALUE"` // 预售定金设置值(48) PRESALESTATUS int32 `json:"presalestatus" xorm:"PRESALESTATUS" form:"presalestatus"` // 预售状态 - 1:未开始 2:预售中 3:已结束 PICTUREURLS string `json:"pictureurls" xorm:"PICTUREURLS"` // 详情图片(逗号分隔)(宽:1125) BANNERPICURL string `json:"bannerpicurl" xorm:"BANNERPICURL"` // Banner图(逗号分隔)(2:1) GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部) GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称 TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49) PROVIDERUSERID int64 `json:"provideruserid" xorm:"PROVIDERUSERID"` // 发售方用户ID(49) SELLNAME string `json:"sellname" xorm:"SELLNAME"` // [卖方名称]客户名称(企业名称) PRESALEMODESTR string `json:"presalemodestr" xorm:"PRESALEMODESTR"` // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY) PageEx `xorm:"extends"` // 页码信息 } func (r *PresaleAuction) calc() { } func (r *PresaleAuction) buildSql() string { var sqlId utils.SQLVal = ` select t.GOODSID, to_char(t.APPLYID) APPLYID, t.USERID, t.ACCOUNTID, t.RELATEDGOODSID, t.PRESALEQTY, to_char(t.STARTTIME, 'yyyy-mm-dd') STARTTIME, to_char(t.ENDTIME, 'yyyy-mm-dd') ENDTIME, t.ATTACHMENTURL, t.PRESALEMODE, t.MARKETID, t.REFPRICE, t.STARTPRICE, t.FLOORPRICE, t.CREATETIME, t.TRADEDATE, t.RELATEDMARKETID, t.PRESALEDQTY, t.PRESALEDAMOUNT, t.SELLSTATUS, t.GOODSDETAIL, t.TRADEPRICE, t.BUYMAXQTY, t.PRESALEDEPOSITALGORITHM, t.PRESALEDEPOSITVALUE, t.PRESALESTATUS, t.PICTUREURLS, t.BANNERPICURL, g.GOODSCODE, g.GOODSNAME, g.PRESALEPRICE, g.TRANSFERDEPOSITRATIO, g.PROVIDERUSERID, ui.CUSTOMERNAME SELLNAME, en.ENUMDICNAME PRESALEMODESTR from CPTrade_PresaleGoodsEx t inner join Goods g on t.relatedgoodsid = g.goodsid inner join userinfo ui on g.provideruserid = ui.userid left join enumdicitem en on en.enumdiccode = 'presalemode' and t.PresaleMode = en.enumitemname where t.marketid = 48201 ` // sqlId.FormatParam(r.PRESALEMODE) sqlId.And("t.PRESALEMODE", r.PRESALEMODE) sqlId.AndEx("t.PRESALESTATUS", r.PRESALESTATUS, r.PRESALESTATUS != 0) sqlId.OrderBy("t.endtime") sqlId.Page(r.Page, r.PageSize) return sqlId.String() } func (r *PresaleAuction) GetDataByPage() (interface{}, error, int, int, int) { sData := make([]PresaleAuction, 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 } // PresaleDefault 转让详情 type PresaleDefault struct { GOODSID int32 `json:"goodsid" xorm:"GOODSID" form:"goodsid" binding:"required"` // 期货合约ID(自增ID SEQ_GOODS) GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部) GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称 PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价\订货价(49) TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49) BANNERPICURL string `json:"bannerpicurl" xorm:"BANNERPICURL"` // Banner图(逗号分隔)(2:1) PICTUREURLS string `json:"pictureurls" xorm:"PICTUREURLS"` // 详情图片(逗号分隔)(宽:1125) CUSTOMERNAME string `json:"sellname" xorm:"CUSTOMERNAME"` // 客户名称(企业名称) } func (r *PresaleDefault) calc() { } func (r *PresaleDefault) buildSql() string { var sqlId utils.SQLVal = ` select g.GOODSID, g.GOODSCODE, g.PRESALEPRICE, g.TRANSFERDEPOSITRATIO, cp.BANNERPICURL, cp.PICTUREURLS, ui.customername "SELLNAME" from goods g left join CPTrade_PresaleGoodsEx cp on g.goodsid = cp.relatedgoodsid and cp.presalestatus = 2 inner join userinfo ui on g.provideruserid = ui.userid where g.goodsid = %v ` sqlId.FormatParam(r.GOODSID) return sqlId.String() } // GetDataEx 从数据库中查询数据 func (r *PresaleDefault) GetDataEx() (interface{}, error) { e := db.GetEngine() s := e.SQL(r.buildSql()) sData := make([]PresaleDefault, 0) if err := s.Find(&sData); err != nil { return nil, err } // for i := range sData { // sData[i].calc() // } if len(sData) > 0 { return sData[0], nil } else { return nil, errors.New("无数据") } }