szdz.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package szdz
  2. import (
  3. "fmt"
  4. "mtp2_if/db"
  5. "mtp2_if/global/app"
  6. "mtp2_if/global/e"
  7. "mtp2_if/logger"
  8. "mtp2_if/models"
  9. "net/http"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // QueryRecieptOrderReq 点选挂牌委托单据查询参数
  13. type QueryRecieptOrderReq struct {
  14. GoodsID int `form:"goodsID" binding:"required"` // 商品ID,必填
  15. AccountName string `form:"accountName"` // 所属账户名称
  16. MarketID int `form:"marketID"` // 市场ID
  17. }
  18. // QueryRecieptOrderRsp 点选挂牌委托单据查询返回模型
  19. type QueryRecieptOrderRsp struct {
  20. Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
  21. Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
  22. Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
  23. Buyorsell int64 `json:"buyorsell" xorm:"'BUYORSELL'"` // 方向 - 0:买 1:卖
  24. Orderid int64 `json:"orderid" xorm:"'ORDERID'"` // 委托单号
  25. Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
  26. Orderprice float64 `json:"orderprice" xorm:"'ORDERPRICE'"` // 委托价格
  27. EnableQty int64 `json:"enableqty" xorm:"ENABLEQTY"` // 可摘数量
  28. AccountName string `json:"accountName" xorm:"ACCOUNTNAME"` // 所属账号名称(已脱敏)
  29. }
  30. // QueryRecieptOrder 点选挂牌委托单据查询(摘牌大厅)
  31. // @Summary 点选挂牌委托单据查询(摘牌大厅)
  32. // @Produce json
  33. // @Security ApiKeyAuth
  34. // @Param goodsID query int true "商品ID"
  35. // @Param accountName query string false "所属账户名称"
  36. // @Param marketID query int false "市场ID"
  37. // @Success 200 {object} QueryRecieptOrderRsp
  38. // @Failure 500 {object} app.Response
  39. // @Router /SZDZ/QueryRecieptOrder [get]
  40. // @Tags 尚志大宗
  41. func QueryRecieptOrder(c *gin.Context) {
  42. appG := app.Gin{C: c}
  43. // 获取请求参数
  44. var req QueryRecieptOrderReq
  45. if err := appG.C.ShouldBindQuery(&req); err != nil {
  46. logger.GetLogger().Errorf("QueryRecieptOrder failed: %s", err.Error())
  47. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  48. return
  49. }
  50. datas := make([]QueryRecieptOrderRsp, 0)
  51. engine := db.GetEngine()
  52. // 投资者挂牌委托单
  53. s := engine.Table("TRADE_ORDERDETAIL").
  54. Join("INNER", "GOODS", "TRADE_ORDERDETAIL.GOODSID = GOODS.GOODSID").
  55. Join("LEFT", "TAACCOUNT", "TAACCOUNT.ACCOUNTID = TRADE_ORDERDETAIL.ACCOUNTID").
  56. Join("LEFT", "USERACCOUNT", "USERACCOUNT.USERID = TAACCOUNT.RELATEDUSERID").
  57. Select(`GOODS.GOODSID, GOODS.GOODSCODE, GOODS.GOODSNAME,
  58. TRADE_ORDERDETAIL.BUYORSELL, TRADE_ORDERDETAIL.ORDERID, TRADE_ORDERDETAIL.TRADEDATE, TRADE_ORDERDETAIL.ORDERPRICE,
  59. TRADE_ORDERDETAIL.ORDERQTY - TRADE_ORDERDETAIL.TRADEQTY - TRADE_ORDERDETAIL.CANCELQTY as ENABLEQTY,
  60. substr(USERACCOUNT.ACCOUNTNAME,0,1)||'****' as ACCOUNTNAME`).
  61. Where("TRADE_ORDERDETAIL.ORDERSTATUS in (3,7,12) and GOODS.GOODSID = ?", req.GoodsID)
  62. if len(req.AccountName) > 0 {
  63. s = s.And("USERACCOUNT.ACCOUNTNAME = ?", req.AccountName)
  64. }
  65. if req.MarketID > 0 {
  66. s = s.And("TRADE_ORDERDETAIL.MARKETID = ?", req.MarketID)
  67. }
  68. d1 := make([]QueryRecieptOrderRsp, 0)
  69. if err := s.Find(&d1); err != nil {
  70. // 查询失败
  71. logger.GetLogger().Errorf("QueryRecieptOrder failed: %s", err.Error())
  72. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  73. return
  74. }
  75. datas = append(datas, d1...)
  76. // 报价商挂牌委托
  77. s = engine.Table("TRADE_QUOTEDETAILNEW").
  78. Join("INNER", "GOODS", "TRADE_QUOTEDETAILNEW.GOODSID = GOODS.GOODSID").
  79. Join("INNER", "QUOTER", "QUOTER.QUOTERID = TRADE_QUOTEDETAILNEW.QUOTERID").
  80. Join("INNER", "AREAROLE", "AREAROLE.USERID = QUOTER.DEFAULTMAKERID and AREAROLE.ROLETYPE = 8").
  81. Select(`GOODS.GOODSID, GOODS.GOODSCODE, GOODS.GOODSNAME,
  82. TRADE_QUOTEDETAILNEW.BUYORSELL, TRADE_QUOTEDETAILNEW.ORDERID, TRADE_QUOTEDETAILNEW.TRADEDATE, TRADE_QUOTEDETAILNEW.PRICE as ORDERPRICE,
  83. TRADE_QUOTEDETAILNEW.CURQTY as ENABLEQTY,
  84. substr(QUOTER.QUOTERNAME,0,1)||'****' as ACCOUNTNAME`).
  85. Where("(TRADE_QUOTEDETAILNEW.CURQTY > 0 or TRADE_QUOTEDETAILNEW.PRICE > 0) and TRADE_QUOTEDETAILNEW.ISVALID != 1 and TRADE_QUOTEDETAILNEW.FREEZESTATUS != 3")
  86. d2 := make([]QueryRecieptOrderRsp, 0)
  87. if err := s.Find(&d2); err != nil {
  88. // 查询失败
  89. logger.GetLogger().Errorf("QueryRecieptOrder failed: %s", err.Error())
  90. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  91. return
  92. }
  93. datas = append(datas, d2...)
  94. // FIXME: - 排序 & 分页
  95. // 查询成功返回
  96. logger.GetLogger().Infof("QueryRecieptOrder successed: %v", datas)
  97. appG.Response(http.StatusOK, e.SUCCESS, datas)
  98. }
  99. // QueryGoodsPickupReq 商品提货单查询请求参数
  100. type QueryGoodsPickupReq struct {
  101. AccountID string `form:"accountID" binding:"required"`
  102. TakeOrderStatus int `form:"takeOrderStatus"`
  103. }
  104. // QueryGoodsPickup 商品提货单查询
  105. // @Summary 商品提货单查询
  106. // @Produce json
  107. // @Security ApiKeyAuth
  108. // @Param accountID query string true "资金账户 - 格式:1,2,3"
  109. // @Param takeOrderStatus query int false "提货状态 - 1:待发货 2:已发货 3:已收货"
  110. // @Success 200 {object} models.Szdz3goodspickup
  111. // @Failure 500 {object} app.Response
  112. // @Router /SZDZ/QueryGoodsPickup [get]
  113. // @Tags 尚志大宗
  114. func QueryGoodsPickup(c *gin.Context) {
  115. appG := app.Gin{C: c}
  116. // 获取请求参数
  117. var req QueryGoodsPickupReq
  118. if err := appG.C.ShouldBindQuery(&req); err != nil {
  119. logger.GetLogger().Errorf("QueryGoodsPickup failed: %s", err.Error())
  120. appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
  121. return
  122. }
  123. datas := make([]models.Szdz3goodspickup, 0)
  124. engine := db.GetEngine()
  125. s := engine.Where(fmt.Sprintf(`ACCOUNTID in (%s)`, req.AccountID))
  126. if req.TakeOrderStatus > 0 {
  127. s = s.And("TAKEORDERSTATUS = ?", req.TakeOrderStatus)
  128. }
  129. if err := s.Find(&datas); err != nil {
  130. // 查询失败
  131. logger.GetLogger().Errorf("QueryGoodsPickup failed: %s", err.Error())
  132. appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
  133. return
  134. }
  135. // 查询成功返回
  136. logger.GetLogger().Infof("QueryGoodsPickup successed: %v", datas)
  137. appG.Response(http.StatusOK, e.SUCCESS, datas)
  138. }