presale.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package models
  2. import (
  3. "mtp2_if/db"
  4. "mtp2_if/utils"
  5. "time"
  6. )
  7. // PresaleAuction 预售竞拍
  8. type PresaleAuction struct {
  9. GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID
  10. APPLYID int64 `json:"applyid" xorm:"APPLYID"` // 关联申请ID
  11. USERID int64 `json:"userid" xorm:"USERID"` // 卖方用户ID
  12. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 卖方账户ID
  13. RELATEDGOODSID int64 `json:"relatedgoodsid" xorm:"RELATEDGOODSID"` // 关联交易合约ID
  14. PRESALEQTY int64 `json:"presaleqty" xorm:"PRESALEQTY"` // 预售数量
  15. STARTTIME string `json:"starttime" xorm:"STARTTIME"` // 预售开始时间
  16. ENDTIME string `json:"endtime" xorm:"ENDTIME"` // 预售结束时间
  17. ATTACHMENTURL string `json:"attachmenturl" xorm:"ATTACHMENTURL"` // 缩略图片(1:1)
  18. PRESALEMODE int32 `json:"presalemode" xorm:"PRESALEMODE" form:"presalemode" binding:"required"` // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
  19. MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 预售市场ID - 根据预售模式选择市场
  20. REFPRICE float64 `json:"refprice" xorm:"REFPRICE"` // 参考价格[一口价]
  21. STARTPRICE float64 `json:"startprice" xorm:"STARTPRICE"` // 起拍价[大宗式竞拍]
  22. FLOORPRICE float64 `json:"floorprice" xorm:"FLOORPRICE"` // 底价[大宗式竞拍]
  23. CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
  24. TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
  25. RELATEDMARKETID int64 `json:"relatedmarketid" xorm:"RELATEDMARKETID"` // 关联交易合约市场ID
  26. PRESALEDQTY int64 `json:"presaledqty" xorm:"PRESALEDQTY"` // 已预售量(预售结束时更新) 71-委托时更新
  27. PRESALEDAMOUNT float64 `json:"presaledamount" xorm:"PRESALEDAMOUNT"` // 已预售总金额(预售结束时更新)71-委托时更新
  28. SELLSTATUS int32 `json:"sellstatus" xorm:"SELLSTATUS"` // 卖方处理状态 - 1:卖方头寸未处理 2:卖方头寸已处理
  29. GOODSDETAIL string `json:"goodsdetail" xorm:"GOODSDETAIL"` // 详情[大宗]
  30. TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价[大宗]
  31. BUYMAXQTY int64 `json:"buymaxqty" xorm:"BUYMAXQTY"` // 购买上限 [71] - 0为不限
  32. PRESALEDEPOSITALGORITHM int32 `json:"presaledepositalgorithm" xorm:"PRESALEDEPOSITALGORITHM"` // 预售定金方式(48) - 1:比率 2:固定
  33. PRESALEDEPOSITVALUE float64 `json:"presaledepositvalue" xorm:"PRESALEDEPOSITVALUE"` // 预售定金设置值(48)
  34. PRESALESTATUS int32 `json:"presalestatus" xorm:"PRESALESTATUS"` // 预售状态 - 1:未开始 2:预售中 3:已结束
  35. PICTUREURLS string `json:"pictureurls" xorm:"PICTUREURLS"` // 详情图片(逗号分隔)(宽:1125)
  36. BANNERPICURL string `json:"bannerpicurl" xorm:"BANNERPICURL"` // Banner图(逗号分隔)(2:1)
  37. GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
  38. GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
  39. TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49)
  40. PROVIDERUSERID int64 `json:"provideruserid" xorm:"PROVIDERUSERID"` // 发售方用户ID(49)
  41. SELLNAME string `json:"sellname" xorm:"SELLNAME"` // [卖方名称]客户名称(企业名称)
  42. PRESALEMODESTR string `json:"presalemodestr" xorm:"PRESALEMODESTR"` // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
  43. PageEx `xorm:"extends"` // 页码信息
  44. }
  45. func (r *PresaleAuction) calc() {
  46. }
  47. func (r *PresaleAuction) buildSql() string {
  48. var sqlId utils.SQLVal = `
  49. select
  50. t.GOODSID,
  51. t.APPLYID,
  52. t.USERID,
  53. t.ACCOUNTID,
  54. t.RELATEDGOODSID,
  55. t.PRESALEQTY,
  56. to_char(t.STARTTIME, 'yyyy-mm-dd') STARTTIME,
  57. to_char(t.ENDTIME, 'yyyy-mm-dd') ENDTIME,
  58. t.ATTACHMENTURL,
  59. t.PRESALEMODE,
  60. t.MARKETID,
  61. t.REFPRICE,
  62. t.STARTPRICE,
  63. t.FLOORPRICE,
  64. t.CREATETIME,
  65. t.TRADEDATE,
  66. t.RELATEDMARKETID,
  67. t.PRESALEDQTY,
  68. t.PRESALEDAMOUNT,
  69. t.SELLSTATUS,
  70. t.GOODSDETAIL,
  71. t.TRADEPRICE,
  72. t.BUYMAXQTY,
  73. t.PRESALEDEPOSITALGORITHM,
  74. t.PRESALEDEPOSITVALUE,
  75. t.PRESALESTATUS,
  76. t.PICTUREURLS,
  77. t.BANNERPICURL
  78. g.GOODSCODE,
  79. g.GOODSNAME,
  80. g.PRESALEPRICE,
  81. g.TRANSFERDEPOSITRATIO,
  82. g.PROVIDERUSERID,
  83. ui.CUSTOMERNAME SELLNAME,
  84. en.ENUMDICNAME PRESALEMODESTR
  85. from CPTrade_PresaleGoodsEx t
  86. inner join Goods g
  87. on t.relatedgoodsid = g.goodsid
  88. inner join userinfo ui
  89. on g.provideruserid = ui.userid
  90. left join enumdicitem en
  91. on en.enumdiccode = 'presalemode'
  92. and t.PresaleMode = en.enumitemname
  93. where t.marketid = 48201 and t.PRESALEMODE = %v
  94. order by t.endtime
  95. `
  96. sqlId.FormatParam(r.PRESALEMODE)
  97. sqlId.Page(r.Page, r.PageSize)
  98. return sqlId.String()
  99. }
  100. func (r *PresaleAuction) GetDataByPage() (interface{}, error, int, int, int) {
  101. sData := make([]PresaleAuction, 0)
  102. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  103. total := 0
  104. for i := range sData {
  105. sData[i].calc()
  106. total = sData[i].Total
  107. }
  108. return sData, err, r.Page, r.PageSize, total
  109. }