szdz.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package models
  2. import (
  3. "fmt"
  4. "mtp2_if/db"
  5. "time"
  6. )
  7. // Szdz3goodspickup 商品提货单表
  8. type Szdz3goodspickup struct {
  9. Takeorderid string `json:"takeorderid" xorm:"'TAKEORDERID'" binding:"required"` // 提货单号(905+Unix秒时间戳(10位)+xxxxxx)
  10. Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账户ID
  11. Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
  12. Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID
  13. Qty float64 `json:"qty" xorm:"'QTY'"` // 提货数量
  14. Reqtime time.Time `json:"reqtime" xorm:"'REQTIME'"` // 更新时间
  15. Recivername string `json:"recivername" xorm:"'RECIVERNAME'"` // 提货人姓名
  16. Cardtypeid int32 `json:"cardtypeid" xorm:"'CARDTYPEID'"` // 提货人证件类型
  17. Cardnum string `json:"cardnum" xorm:"'CARDNUM'"` // 提货人证件号码
  18. Phonenum string `json:"phonenum" xorm:"'PHONENUM'"` // 提货人联系方式
  19. Takemode int32 `json:"takemode" xorm:"'TAKEMODE'"` // 提货方式 - 2:自提 3:配送
  20. Address string `json:"address" xorm:"'ADDRESS'"` // 提货人详细地址
  21. Takeremark string `json:"takeremark" xorm:"'TAKEREMARK'"` // 提货备注
  22. Takeorderstatus int32 `json:"takeorderstatus" xorm:"'TAKEORDERSTATUS'"` // 提货状态 - 1:待发货 2:已发货 3:已收货
  23. Auditer int32 `json:"auditer" xorm:"'AUDITER'"` // 审核人
  24. Audittime time.Time `json:"audittime" xorm:"'AUDITTIME'"` // 审核时间
  25. Checkremark string `json:"checkremark" xorm:"'CHECKREMARK'"` // 审核备注
  26. Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
  27. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  28. Handlestatus int32 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态
  29. }
  30. // TableName is SZDZ3_GOODSPICKUP
  31. func (Szdz3goodspickup) TableName() string {
  32. return "SZDZ3_GOODSPICKUP"
  33. }
  34. // Szdz3convertlog 交易系统转换流水表
  35. type Szdz3convertlog struct {
  36. Logid int64 `json:"logid" xorm:"'LOGID'" binding:"required"` // LogID(901+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
  37. Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
  38. Converttype int32 `json:"converttype" xorm:"'CONVERTTYPE'"` // 转换类型 - 1:金点赞转交易 2:金点拍转交易 3:交易转金点赞 4:交易转金点拍
  39. Outergoodscode string `json:"outergoodscode" xorm:"'OUTERGOODSCODE'"` // 外部商品代码[JD\PD]
  40. Innergoodsid int64 `json:"innergoodsid" xorm:"'INNERGOODSID'"` // 内部商品ID
  41. Outvalue float64 `json:"outvalue" xorm:"'OUTVALUE'"` // 源值
  42. Invalue float64 `json:"invalue" xorm:"'INVALUE'"` // 目标值
  43. Outratio int64 `json:"outratio" xorm:"'OUTRATIO'"` // 配置转出比值
  44. Inratio int64 `json:"inratio" xorm:"'INRATIO'"` // 配置转入比值
  45. Daymaxvalue float64 `json:"daymaxvalue" xorm:"'DAYMAXVALUE'"` // 配置当日最大转入限制
  46. Timemaxvalue float64 `json:"timemaxvalue" xorm:"'TIMEMAXVALUE'"` // 配置单次最大转入限制
  47. Timeminvalue float64 `json:"timeminvalue" xorm:"'TIMEMINVALUE'"` // 配置单次最小数量限制
  48. Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID
  49. Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户ID
  50. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 记账时间
  51. Handlestatus int32 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态
  52. Clientticket string `json:"clientticket" xorm:"'CLIENTTICKET'"` // 客户端流水号
  53. Remark string `json:"remark" xorm:"'REMARK'"` // 备注
  54. Mobile string `json:"mobile" xorm:"'MOBILE'"` // 手机号码(加密存储)
  55. Sessionid int64 `json:"sessionid" xorm:"'SESSIONID'"` // 会话ID
  56. Daymaxvalue2 float64 `json:"daymaxvalue2" xorm:"'DAYMAXVALUE2'"` // 配置当日最大转入限制(转入)
  57. Timemaxvalue2 float64 `json:"timemaxvalue2" xorm:"'TIMEMAXVALUE2'"` // 配置单次最大转入限制(转入)
  58. Timeminvalue2 float64 `json:"timeminvalue2" xorm:"'TIMEMINVALUE2'"` // 配置单次最小数量限制(转入)
  59. Pddecimalplace int32 `json:"pddecimalplace" xorm:"'PDDECIMALPLACE'"` // PD小数位
  60. }
  61. // TableName is SZDZ3_CONVERTLOG
  62. func (Szdz3convertlog) TableName() string {
  63. return "SZDZ3_CONVERTLOG"
  64. }
  65. // Szdz3searchwhitelist 搜索白名单表
  66. type Szdz3searchwhitelist struct {
  67. Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID
  68. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
  69. Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
  70. Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人
  71. Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间
  72. }
  73. // TableName is SZDZ3_SEARCHWHITELIST
  74. func (Szdz3searchwhitelist) TableName() string {
  75. return "SZDZ3_SEARCHWHITELIST"
  76. }
  77. // Szdz3convertconfig 交易系统转换设置表
  78. type Szdz3convertconfig struct {
  79. Converttype int32 `json:"converttype" xorm:"'CONVERTTYPE'" binding:"required"` // 转换类型 - 1:金点赞转交易 2:金点拍转交易 3:交易转金点赞(不设置) 4:交易转金点拍(不设置) 5:花生米转交易 6:交易转花生米(不设置)
  80. Outergoodscode string `json:"outergoodscode" xorm:"'OUTERGOODSCODE'" binding:"required"` // 外部商品代码[JD\PD]
  81. Innergoodsid int64 `json:"innergoodsid" xorm:"'INNERGOODSID'" binding:"required"` // 内部商品ID[交易]
  82. Outratio int64 `json:"outratio" xorm:"'OUTRATIO'"` // 源值
  83. Inratio int64 `json:"inratio" xorm:"'INRATIO'"` // 目标值
  84. Daymaxvalue float64 `json:"daymaxvalue" xorm:"'DAYMAXVALUE'"` // 当日最大转入限制
  85. Timemaxvalue float64 `json:"timemaxvalue" xorm:"'TIMEMAXVALUE'"` // 单次最大转入限制
  86. Timeminvalue float64 `json:"timeminvalue" xorm:"'TIMEMINVALUE'"` // 单次最小转入限制
  87. Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
  88. Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
  89. Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人
  90. Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间
  91. Pddecimalplace int32 `json:"pddecimalplace" xorm:"'PDDECIMALPLACE'"` // PD小数位
  92. Canin int32 `json:"canin" xorm:"'CANIN'"` // 是否可转入 - 0:不可 1:可 [5:花生米转交易]
  93. Canout int32 `json:"canout" xorm:"'CANOUT'"` // 是否可转出 - 0:不可 1:可 [5:花生米转交易]
  94. Freezedays int32 `json:"freezedays" xorm:"'FREEZEDAYS'"` // 冻结天数 [5:花生米转交易]
  95. }
  96. // TableName is SZDZ3_CONVERTCONFIG
  97. func (Szdz3convertconfig) TableName() string {
  98. return "SZDZ3_CONVERTCONFIG"
  99. }
  100. // SZDZTradePosition 尚志大宗查买持仓数据库模型
  101. type SZDZTradePosition struct {
  102. Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账号Id
  103. Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品Id
  104. Positionqty int64 `json:"positionqty" xorm:"'POSITIONQTY'"` // 期初持仓数量
  105. Holderamount float64 `json:"holderamount" xorm:"'HOLDERAMOUNT'"` // 期初持仓总金额
  106. Curpositionqty int64 `json:"curpositionqty" xorm:"'CURPOSITIONQTY'"` // 当前持仓总数量
  107. Curholderamount float64 `json:"curholderamount" xorm:"'CURHOLDERAMOUNT'"` // 当前持仓总金额
  108. Frozenqty int64 `json:"frozenqty" xorm:"'FROZENQTY'"` // 持仓冻结数量
  109. Otherfrozenqty int64 `json:"otherfrozenqty" xorm:"'OTHERFROZENQTY'"` // 持仓其他冻结数量(交割冻结)
  110. Openreqqty int64 `json:"openreqqty" xorm:"'OPENREQQTY'"` // 开仓申请数量
  111. Opentotalqty int64 `json:"opentotalqty" xorm:"'OPENTOTALQTY'"` // 开仓总数量
  112. Closetotalqty int64 `json:"closetotalqty" xorm:"'CLOSETOTALQTY'"` // 平仓总数量
  113. Tnqty int64 `json:"tnqty" xorm:"'TNQTY'"` // T+N冻结总量
  114. Tnusedqty int64 `json:"tnusedqty" xorm:"'TNUSEDQTY'"` // T+N使用量
  115. Usedmargin float64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金
  116. Curtdposition int64 `json:"curtdposition" xorm:"'CURTDPOSITION'"` // 期末今日头寸
  117. Fretdposition int64 `json:"fretdposition" xorm:"'FRETDPOSITION'"` // 冻结今日头寸
  118. Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码(内部)
  119. Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
  120. Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 报价货币ID
  121. Goodunitid int64 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID
  122. Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
  123. Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
  124. Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
  125. Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
  126. Trademode int32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式
  127. SZDZ3FreezQTY int64 `json:"szdz3freezqty" xorm:"'SZDZ3FREEZQTY'"` // 尚志大宗转换冻结总数量
  128. }
  129. // GetSZDZBuyTradePosition 获取尚志大宗买持仓数据
  130. // 参数 accountID int 资金账户
  131. // 返回值 []SZDZTradePosition 尚志大宗买持仓数据
  132. // 返回值 error 错误
  133. func GetSZDZBuyTradePosition(accountID int) ([]SZDZTradePosition, error) {
  134. engine := db.GetEngine()
  135. // 查询数据, 使用Goods作为主表, TRADEPOSITION无记录时使用SZDZ3_FREEZEPOSITION
  136. tradePosition := make([]SZDZTradePosition, 0)
  137. s := engine.Table("GOODS").
  138. Join("LEFT", "TRADEPOSITION", fmt.Sprintf("TRADEPOSITION.GOODSID = GOODS.GOODSID and TRADEPOSITION.ACCOUNTID = %d", accountID)).
  139. Join("LEFT", "SZDZ3_FREEZEPOSITION", fmt.Sprintf("SZDZ3_FREEZEPOSITION.GOODSID = GOODS.GOODSID and SZDZ3_FREEZEPOSITION.ACCOUNTID = %d", accountID)).
  140. Join("LEFT", "MARKET", "GOODS.MARKETID = MARKET.MARKETID").
  141. Join("LEFT", "ENUMDICITEM", "GOODS.GOODUNITID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'goodsunit'").
  142. Select(`NVL(TRADEPOSITION.ACCOUNTID, SZDZ3_FREEZEPOSITION.ACCOUNTID) ACCOUNTID,
  143. NVL(TRADEPOSITION.GOODSID,SZDZ3_FREEZEPOSITION.GOODSID) GOODSID,
  144. NVL(TRADEPOSITION.BUYPOSITIONQTY, 0) POSITIONQTY,
  145. NVL(TRADEPOSITION.BUYHOLDERAMOUNT, 0) HOLDERAMOUNT,
  146. NVL(TRADEPOSITION.BUYCURPOSITIONQTY, 0) CURPOSITIONQTY,
  147. NVL(TRADEPOSITION.BUYCURHOLDERAMOUNT, 0) CURHOLDERAMOUNT,
  148. NVL(TRADEPOSITION.BUYFROZENQTY, 0) FROZENQTY,
  149. NVL(TRADEPOSITION.BUYOTHERFROZENQTY, 0) OTHERFROZENQTY,
  150. NVL(TRADEPOSITION.BUYOPENREQQTY, 0) OPENREQQTY,
  151. NVL(TRADEPOSITION.BUYOPENTOTALQTY, 0) OPENTOTALQTY,
  152. NVL(TRADEPOSITION.BUYCLOSETOTALQTY, 0) CLOSETOTALQTY,
  153. NVL(TRADEPOSITION.BUYTNQTY, 0) TNQTY,
  154. NVL(TRADEPOSITION.BUYTNUSEDQTY, 0) TNUSEDQTY,
  155. NVL(TRADEPOSITION.USEDMARGIN, 0) USEDMARGIN,
  156. NVL(TRADEPOSITION.BUYCURTDPOSITION, 0) CURTDPOSITION,
  157. NVL(TRADEPOSITION.BUYFRETDPOSITION, 0) FRETDPOSITION,
  158. NVL(SZDZ3_FREEZEPOSITION.QTY, 0) SZDZ3FreezQTY,
  159. GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.CURRENCYID, GOODS.GOODUNITID, ENUMDICITEM.ENUMDICNAME as GOODUNIT, GOODS.AGREEUNIT, GOODS.DECIMALPLACE, MARKET.MARKETID, MARKET.TRADEMODE`).
  160. Where(fmt.Sprintf(`TRADEPOSITION.ACCOUNTID = %d and TRADEPOSITION.BUYCURPOSITIONQTY > 0 or SZDZ3_FREEZEPOSITION.QTY > 0`, accountID))
  161. if err := s.Find(&tradePosition); err != nil {
  162. // 查询失败
  163. return tradePosition, err
  164. }
  165. return tradePosition, nil
  166. }