hnsh.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package models
  2. import (
  3. "fmt"
  4. "mtp2_if/db"
  5. "mtp2_if/utils"
  6. "time"
  7. )
  8. type PresaleGoods 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 time.Time `json:"starttime" xorm:"STARTTIME"` // 预售开始时间
  16. ENDTIME time.Time `json:"endtime" xorm:"ENDTIME"` // 预售结束时间
  17. ATTACHMENTURL string `json:"attachmenturl" xorm:"ATTACHMENTURL"` // 缩略图片(1:1)
  18. PRESALEMODE int32 `json:"presalemode" xorm:"PRESALEMODE"` // 预售模式 - 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. PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价(49)
  40. TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49)
  41. PROVIDERUSERID int64 `json:"provideruserid" xorm:"PROVIDERUSERID"` // 发售方用户ID(49)
  42. SELLNAME string `json:"sellname" xorm:"SELLNAME"` // 发售方
  43. PRESALEMODESTR string `json:"presalemodestr" xorm:"PRESALEMODESTR"` // 预售模式
  44. PageEx `xorm:"extends"` // 页码信息
  45. }
  46. func (r *PresaleGoods) calc() {
  47. if len(r.TRADEDATE) == 8 {
  48. r.TRADEDATE = fmt.Sprintf("%v-%v-%v", r.TRADEDATE[0:4], r.TRADEDATE[4:6], r.TRADEDATE[6:8])
  49. }
  50. }
  51. func (r *PresaleGoods) buildSql() string {
  52. var sqlId utils.SQLVal = `
  53. select
  54. g.GOODSCODE,
  55. g.GOODSNAME,
  56. t.ATTACHMENTURL,
  57. t.PICTUREURLS,
  58. t.BANNERPICURL,
  59. t.STARTPRICE,
  60. g.PRESALEPRICE,
  61. t.PRESALEQTY,
  62. t.STARTTIME,
  63. t.ENDTIME,
  64. t.PRESALEDEPOSITALGORITHM,
  65. t.PRESALEDEPOSITVALUE,
  66. g.TRANSFERDEPOSITRATIO,
  67. g.PROVIDERUSERID,
  68. ui.CUSTOMERNAME SELLNAME,
  69. en.ENUMDICNAME PRESALEMODESTR,
  70. t.PRESALESTATUS
  71. from CPTrade_PresaleGoodsEx t
  72. inner join Goods g
  73. on t.relatedgoodsid = g.goodsid
  74. inner join userinfo ui
  75. on g.provideruserid = ui.userid
  76. left join enumdicitem en
  77. on en.enumdiccode = 'presalemode'
  78. and t.PresaleMode = en.enumitemname
  79. where t.marketid = 48201
  80. order by t.endtime
  81. `
  82. sqlId.Page(r.Page, r.PageSize)
  83. return sqlId.String()
  84. }
  85. func (r *PresaleGoods) GetDataByPage() (interface{}, error, int, int, int) {
  86. sData := make([]PresaleGoods, 0)
  87. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  88. total := 0
  89. for i := range sData {
  90. sData[i].calc()
  91. total = sData[i].Total
  92. }
  93. return sData, err, r.Page, r.PageSize, total
  94. }