presale.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package models
  2. import (
  3. "errors"
  4. "mtp2_if/db"
  5. "mtp2_if/utils"
  6. "time"
  7. )
  8. // PresaleAuction 预售竞拍
  9. type PresaleAuction struct {
  10. GOODSID int64 `json:"goodsid" xorm:"GOODSID"` // 商品ID
  11. APPLYID string `json:"applyid" xorm:"APPLYID"` // 关联申请ID
  12. USERID int64 `json:"userid" xorm:"USERID"` // 卖方用户ID
  13. ACCOUNTID int64 `json:"accountid" xorm:"ACCOUNTID"` // 卖方账户ID
  14. RELATEDGOODSID int64 `json:"relatedgoodsid" xorm:"RELATEDGOODSID"` // 关联交易合约ID
  15. PRESALEQTY int64 `json:"presaleqty" xorm:"PRESALEQTY"` // 预售数量
  16. STARTTIME string `json:"starttime" xorm:"STARTTIME"` // 预售开始时间
  17. ENDTIME string `json:"endtime" xorm:"ENDTIME"` // 预售结束时间
  18. ATTACHMENTURL string `json:"attachmenturl" xorm:"ATTACHMENTURL"` // 缩略图片(1:1)
  19. PRESALEMODE int32 `json:"presalemode" xorm:"PRESALEMODE" form:"presalemode" binding:"required"` // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
  20. MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 预售市场ID - 根据预售模式选择市场
  21. REFPRICE float64 `json:"refprice" xorm:"REFPRICE"` // 参考价格[一口价]
  22. STARTPRICE float64 `json:"startprice" xorm:"STARTPRICE"` // 起拍价[大宗式竞拍]
  23. FLOORPRICE float64 `json:"floorprice" xorm:"FLOORPRICE"` // 底价[大宗式竞拍]
  24. CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
  25. TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日(yyyyMMdd)
  26. RELATEDMARKETID int64 `json:"relatedmarketid" xorm:"RELATEDMARKETID"` // 关联交易合约市场ID
  27. PRESALEDQTY int64 `json:"presaledqty" xorm:"PRESALEDQTY"` // 已预售量(预售结束时更新) 71-委托时更新
  28. PRESALEDAMOUNT float64 `json:"presaledamount" xorm:"PRESALEDAMOUNT"` // 已预售总金额(预售结束时更新)71-委托时更新
  29. SELLSTATUS int32 `json:"sellstatus" xorm:"SELLSTATUS"` // 卖方处理状态 - 1:卖方头寸未处理 2:卖方头寸已处理
  30. GOODSDETAIL string `json:"goodsdetail" xorm:"GOODSDETAIL"` // 详情[大宗]
  31. TRADEPRICE float64 `json:"tradeprice" xorm:"TRADEPRICE"` // 成交价[大宗]
  32. BUYMAXQTY int64 `json:"buymaxqty" xorm:"BUYMAXQTY"` // 购买上限 [71] - 0为不限
  33. PRESALEDEPOSITALGORITHM int32 `json:"presaledepositalgorithm" xorm:"PRESALEDEPOSITALGORITHM"` // 预售定金方式(48) - 1:比率 2:固定
  34. PRESALEDEPOSITVALUE float64 `json:"presaledepositvalue" xorm:"PRESALEDEPOSITVALUE"` // 预售定金设置值(48)
  35. PRESALESTATUS int32 `json:"presalestatus" xorm:"PRESALESTATUS" form:"presalestatus"` // 预售状态 - 1:未开始 2:预售中 3:已结束
  36. PICTUREURLS string `json:"pictureurls" xorm:"PICTUREURLS"` // 详情图片(逗号分隔)(宽:1125)
  37. BANNERPICURL string `json:"bannerpicurl" xorm:"BANNERPICURL"` // Banner图(逗号分隔)(2:1)
  38. GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
  39. GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
  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"` // 预售模式 - 1:一口价 2:大宗式竞拍 3:挂牌预售(HSBY)
  44. PageEx `xorm:"extends"` // 页码信息
  45. }
  46. func (r *PresaleAuction) calc() {
  47. }
  48. func (r *PresaleAuction) buildSql() string {
  49. var sqlId utils.SQLVal = `
  50. select
  51. t.GOODSID,
  52. to_char(t.APPLYID) APPLYID,
  53. t.USERID,
  54. t.ACCOUNTID,
  55. t.RELATEDGOODSID,
  56. t.PRESALEQTY,
  57. to_char(t.STARTTIME, 'yyyy-mm-dd') STARTTIME,
  58. to_char(t.ENDTIME, 'yyyy-mm-dd') ENDTIME,
  59. t.ATTACHMENTURL,
  60. t.PRESALEMODE,
  61. t.MARKETID,
  62. t.REFPRICE,
  63. t.STARTPRICE,
  64. t.FLOORPRICE,
  65. t.CREATETIME,
  66. t.TRADEDATE,
  67. t.RELATEDMARKETID,
  68. t.PRESALEDQTY,
  69. t.PRESALEDAMOUNT,
  70. t.SELLSTATUS,
  71. t.GOODSDETAIL,
  72. t.TRADEPRICE,
  73. t.BUYMAXQTY,
  74. t.PRESALEDEPOSITALGORITHM,
  75. t.PRESALEDEPOSITVALUE,
  76. t.PRESALESTATUS,
  77. t.PICTUREURLS,
  78. t.BANNERPICURL,
  79. g.GOODSCODE,
  80. g.GOODSNAME,
  81. g.PRESALEPRICE,
  82. g.TRANSFERDEPOSITRATIO,
  83. g.PROVIDERUSERID,
  84. ui.CUSTOMERNAME SELLNAME,
  85. en.ENUMDICNAME PRESALEMODESTR
  86. from CPTrade_PresaleGoodsEx t
  87. inner join Goods g
  88. on t.relatedgoodsid = g.goodsid
  89. inner join userinfo ui
  90. on g.provideruserid = ui.userid
  91. left join enumdicitem en
  92. on en.enumdiccode = 'presalemode'
  93. and t.PresaleMode = en.enumitemname
  94. where t.marketid = 48201
  95. `
  96. // sqlId.FormatParam(r.PRESALEMODE)
  97. sqlId.And("t.PRESALEMODE", r.PRESALEMODE)
  98. sqlId.AndEx("t.PRESALESTATUS", r.PRESALESTATUS, r.PRESALESTATUS != 0)
  99. sqlId.OrderBy("t.endtime")
  100. sqlId.Page(r.Page, r.PageSize)
  101. return sqlId.String()
  102. }
  103. func (r *PresaleAuction) GetDataByPage() (interface{}, error, int, int, int) {
  104. sData := make([]PresaleAuction, 0)
  105. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  106. total := 0
  107. for i := range sData {
  108. sData[i].calc()
  109. total = sData[i].Total
  110. }
  111. return sData, err, r.Page, r.PageSize, total
  112. }
  113. // PresaleDefault 转让详情
  114. type PresaleDefault struct {
  115. GOODSID int32 `json:"goodsid" xorm:"GOODSID" form:"goodsid" binding:"required"` // 期货合约ID(自增ID SEQ_GOODS)
  116. GOODSCODE string `json:"goodscode" xorm:"GOODSCODE"` // 期货合约代码(内部)
  117. GOODSNAME string `json:"goodsname" xorm:"GOODSNAME"` // 期货合约名称
  118. PRESALEPRICE float64 `json:"presaleprice" xorm:"PRESALEPRICE"` // 发售价\订货价(49)
  119. TRANSFERDEPOSITRATIO float64 `json:"transferdepositratio" xorm:"TRANSFERDEPOSITRATIO"` // 转让定金比例(49)
  120. BANNERPICURL string `json:"bannerpicurl" xorm:"BANNERPICURL"` // Banner图(逗号分隔)(2:1)
  121. PICTUREURLS string `json:"pictureurls" xorm:"PICTUREURLS"` // 详情图片(逗号分隔)(宽:1125)
  122. CUSTOMERNAME string `json:"sellname" xorm:"CUSTOMERNAME"` // 客户名称(企业名称)
  123. }
  124. func (r *PresaleDefault) calc() {
  125. }
  126. func (r *PresaleDefault) buildSql() string {
  127. var sqlId utils.SQLVal = `
  128. select
  129. g.GOODSID,
  130. g.GOODSCODE,
  131. g.PRESALEPRICE,
  132. g.TRANSFERDEPOSITRATIO,
  133. cp.BANNERPICURL,
  134. cp.PICTUREURLS,
  135. ui.customername "SELLNAME"
  136. from goods g
  137. left join CPTrade_PresaleGoodsEx cp
  138. on g.goodsid = cp.relatedgoodsid
  139. and cp.presalestatus = 2
  140. inner join userinfo ui
  141. on g.provideruserid = ui.userid
  142. where g.goodsid = %v
  143. `
  144. sqlId.FormatParam(r.GOODSID)
  145. return sqlId.String()
  146. }
  147. // GetDataEx 从数据库中查询数据
  148. func (r *PresaleDefault) GetDataEx() (interface{}, error) {
  149. e := db.GetEngine()
  150. s := e.SQL(r.buildSql())
  151. sData := make([]PresaleDefault, 0)
  152. if err := s.Find(&sData); err != nil {
  153. return nil, err
  154. }
  155. // for i := range sData {
  156. // sData[i].calc()
  157. // }
  158. if len(sData) > 0 {
  159. return sData[0], nil
  160. } else {
  161. return nil, errors.New("无数据")
  162. }
  163. }