package models import ( "fmt" "mtp2_if/db" "mtp2_if/utils" "time" ) type PresaleGoods struct { GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID APPLYID int64 `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 time.Time `json:"starttime" xorm:"STARTTIME"` // 预售开始时间 ENDTIME time.Time `json:"endtime" xorm:"ENDTIME"` // 预售结束时间 ATTACHMENTURL string `json:"attachmenturl" xorm:"ATTACHMENTURL"` // 缩略图片(1:1) PRESALEMODE int32 `json:"presalemode" xorm:"PRESALEMODE"` // 预售模式 - 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"` // 预售状态 - 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"` // 期货合约名称 PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价(49) 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"` // 预售模式 PageEx `xorm:"extends"` // 页码信息 } func (r *PresaleGoods) calc() { if len(r.TRADEDATE) == 8 { r.TRADEDATE = fmt.Sprintf("%v-%v-%v", r.TRADEDATE[0:4], r.TRADEDATE[4:6], r.TRADEDATE[6:8]) } } func (r *PresaleGoods) buildSql() string { var sqlId utils.SQLVal = ` select g.GOODSCODE, g.GOODSNAME, t.ATTACHMENTURL, t.PICTUREURLS, t.BANNERPICURL, t.STARTPRICE, g.PRESALEPRICE, t.PRESALEQTY, t.STARTTIME, t.ENDTIME, t.PRESALEDEPOSITALGORITHM, t.PRESALEDEPOSITVALUE, g.TRANSFERDEPOSITRATIO, g.PROVIDERUSERID, ui.CUSTOMERNAME SELLNAME, en.ENUMDICNAME PRESALEMODESTR, t.PRESALESTATUS 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 order by t.endtime ` sqlId.Page(r.Page, r.PageSize) return sqlId.String() } func (r *PresaleGoods) GetDataByPage() (interface{}, error, int, int, int) { sData := make([]PresaleGoods, 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 }