| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- // Package cptrade 产能预售
- package cptrade
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/global/app"
- "mtp2_if/global/e"
- "mtp2_if/logger"
- "net/http"
- "time"
- "github.com/gin-gonic/gin"
- )
- // QueryPresaleApplyReq 产能预售申请表请求参数
- type QueryPresaleApplyReq struct {
- UserID int `form:"userid" binding:"required"`
- ApplyID int `form:"applyid"`
- AccountID int `form:"accountid"`
- }
- // Cptradepresaleapply CPTRADE_PRESALEAPPLY 产能预售申请表
- type Cptradepresaleapply struct {
- Applyid int64 `json:"applyid" xorm:"'APPLYID'" binding:"required"` // 申请ID(181+Unix秒时间戳(10位)+xxxxxx)
- Userid int64 `json:"userid" xorm:"'USERID'"` // 申请人ID
- Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 申请人账户ID
- Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码
- Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称
- Relatedgoodsid int64 `json:"relatedgoodsid" xorm:"'RELATEDGOODSID'"` // 关联交易合约ID
- Presaleqty int64 `json:"presaleqty" xorm:"'PRESALEQTY'"` // 预售数量
- Starttime time.Time `json:"starttime" xorm:"'STARTTIME'"` // 预售开始时间
- Endtime time.Time `json:"endtime" xorm:"'ENDTIME'"` // 预售结束时间
- Attachmenturl string `json:"attachmenturl" xorm:"'ATTACHMENTURL'"` // 附件地址
- Applystatus int64 `json:"applystatus" xorm:"'APPLYSTATUS'"` // 申请状态 - 1:已提交 2:初审通过 3:初审拒绝 4:初审失败 5复审通过 6:复审拒绝 7:复审失败 8:已撤销
- Handlestatus int64 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态
- Applytime time.Time `json:"applytime" xorm:"'APPLYTIME'"` // 申请时间
- Marketid int64 `json:"marketid" xorm:"'MARKETID'"` // 预售市场ID
- Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
- Relatedgoodscode string `json:"relatedgoodscode" xorm:"'RELATEDGOODSCODE'"` // 关联交易合约代码
- Relatedgoodsname string `json:"relatedgoodsname" xorm:"'RELATEDGOODSNAME'"` // 关联交易合约名称
- Marketname string `json:"marketname" xorm:"'MARKETNAME'"` // 预售市场名称
- Trademode int64 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式 - 16:挂牌点选 21:大宗竞拍
- Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
- }
- // TableName is
- func (Cptradepresaleapply) TableName() string {
- return "CPTRADE_PRESALEAPPLY"
- }
- // QueryPreasleApply 查询产能预售申请信息
- // @Summary 查询产能预售申请信息
- // @Produce json
- // @Security ApiKeyAuth
- // @Param userid query int true "账户ID"
- // @Param applyid query int false "申请ID"
- // @Param accountid query int false "资金账户ID"
- // @Success 200 {object} Cptradepresaleapply
- // @Failure 500 {object} app.Response
- // @Router /CPTrade/QueryPreasleApply [get]
- // @Tags 产能预售
- func QueryPreasleApply(c *gin.Context) {
- appG := app.Gin{C: c}
- // 获取请求参数
- var req QueryPresaleApplyReq
- if err := appG.C.ShouldBindQuery(&req); err != nil {
- logger.GetLogger().Errorf("QueryPreasleApply failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
- return
- }
- // 查询数据
- engine := db.GetEngine()
- datas := make([]Cptradepresaleapply, 0)
- // s := engine.Where("userid=?", req.UserID)
- // if req.AccountID != 0 {
- // s = s.And("accountid=?", req.AccountID)
- // }
- // if req.ApplyID != 0 {
- // s = s.And("applyid=?", req.ApplyID)
- // }
- sql := fmt.Sprintf(`select
- t.ApplyID,
- t.UserID,
- t.AccountID,
- t.GoodsCode,
- t.GoodsName,
- t.RelatedGoodsID,
- t.PresaleQty,
- t.StartTime,
- t.EndTime,
- t.AttachmentUrl,
- t.ApplyStatus,
- t.HandleStatus,
- t.ApplyTime,
- t.CreatorID,
- t.CreateTime,
- t.MarketID,
- t.TradeDate,
- g.goodscode RelatedGoodsCode,
- g.goodsname RelatedGoodsName,
- m.MarketName,
- m.TradeMode,
- e.enumdicname GoodUnit
- from CPTrade_PresaleApply t
- left join goods g on t.RelatedGoodsID = g.goodsid
- left join market m on t.MarketID = m.marketid
- left join enumdicitem e on g.goodunitid = e.enumitemname and e.enumdiccode = 'goodsunit'
- where t.UserID = %d`, req.UserID)
- if req.AccountID != 0 {
- sql += fmt.Sprintf(` and t.AccountID = %d`, req.AccountID)
- }
- if req.ApplyID != 0 {
- sql += fmt.Sprintf(` and t.ApplyID = %d`, req.ApplyID)
- }
- if err := engine.SQL(sql).Find(&datas); err != nil {
- // 查询失败
- logger.GetLogger().Errorf("QueryPreasleApply failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
- return
- }
- // 查询成功
- logger.GetLogger().Infof("QueryPreasleApply successed: %v", datas)
- appG.Response(http.StatusOK, e.SUCCESS, datas)
- }
- // QueryCPTradeUserGoodsDataReq 远期订单查询请求参数
- type QueryCPTradeUserGoodsDataReq struct {
- AccountID int `form:"accountid" binding:"required"`
- }
- // Cptradeusergoodsdata 用户合约数据表 - 导历史 (远期订单数据)
- type Cptradeusergoodsdata struct {
- Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 账户ID
- Goodsid int64 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID
- Wrstandardid int64 `json:"wrstandardid" xorm:"'WRSTANDARDID'"` // 仓单标准ID
- Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID
- Inqty int64 `json:"inqty" xorm:"'INQTY'"` // 转入量(总数量)
- Cancelqty int64 `json:"cancelqty" xorm:"'CANCELQTY'"` // 注销量
- Deliveryqty int64 `json:"deliveryqty" xorm:"'DELIVERYQTY'"` // 交割量
- Curpresaleqty int64 `json:"curpresaleqty" xorm:"'CURPRESALEQTY'"` // 当前预售量
- Presaledqty int64 `json:"presaledqty" xorm:"'PRESALEDQTY'"` // 已预售量
- Presaledamount int64 `json:"presaledamount" xorm:"'PRESALEDAMOUNT'"` // 已预售总金额
- Marketid int64 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
- Freezeamount float64 `json:"freezeamount" xorm:"'FREEZEAMOUNT'"` // 冻结金额
- Hasspotfreeze int64 `json:"hasspotfreeze" xorm:"'HASSPOTFREEZE'"` // 是否有现货冻结 - 0:否 1:有
- Goodscode string `json:"GoodsCode" xorm:"'GOODSCODE'"` // 订单商品代码
- Goodsname string `json:"GoodsName" xorm:"'GOODSNAME'"` // 订单商品名称
- Wrstandardcode string `json:"WRStandardCode" xorm:"'WRSTANDARDCODE'"` // 仓单标准代码
- Wrstandardname string `json:"WRStandardName" xorm:"'WRSTANDARDNAME'"` // 仓单标准名称
- Enabledqty int64 `json:"EnabledQty" xorm:"'ENABLEDQTY'"` // 可用量
- Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
- }
- // TableName is CPTRADE_USERGOODSDATA
- func (Cptradeusergoodsdata) TableName() string {
- return "CPTRADE_USERGOODSDATA"
- }
- // QueryCPTradeUserGoodsData 查询远期订单信息
- // @Summary 查询远期订单信息
- // @Produce json
- // @Security ApiKeyAuth
- // @Param accountid query int true "资金账户ID"
- // @Success 200 {object} Cptradeusergoodsdata
- // @Failure 500 {object} app.Response
- // @Router /CPTrade/QueryCPTradeUserGoodsData [get]
- // @Tags 产能预售
- func QueryCPTradeUserGoodsData(c *gin.Context) {
- appG := app.Gin{C: c}
- // 获取请求参数
- var req QueryCPTradeUserGoodsDataReq
- if err := appG.C.ShouldBindQuery(&req); err != nil {
- logger.GetLogger().Errorf("QueryCPTradeUserGoodsData failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
- return
- }
- // 查询数据
- engine := db.GetEngine()
- datas := make([]Cptradeusergoodsdata, 0)
- if err := engine.SQL(`select
- t.AccountID,
- t.GoodsID,
- t.WRStandardID,
- t.UserID,
- t.InQty,
- t.CancelQty,
- t.DeliveryQty,
- t.CurPresaleQty,
- t.PresaledQty,
- t.PresaledAmount,
- t.FreezeAmount,
- t.MarketID,
- t.HasSpotFreeze,
- g.GoodsCode,
- g.GoodsName,
- ws.WRStandardCode,
- ws.WRStandardName,
- (t.InQty - t.CancelQty - t.DeliveryQty - t.CurPresaleQty) EnabledQty,
- e.enumdicname GoodUnit
- from CPTrade_UserGoodsData t
- left join goods g on t.goodsid = g.goodsid
- left join WRStandard ws on t.wrstandardid = ws.wrstandardid
- left join enumdicitem e on g.goodunitid = e.enumitemname and e.enumdiccode = 'goodsunit'
- where t.accountid = ?`, req.AccountID).Find(&datas); err != nil {
- // 查询失败
- logger.GetLogger().Errorf("QueryCPTradeUserGoodsData failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
- return
- }
- // 查询成功
- logger.GetLogger().Infof("QueryCPTradeUserGoodsData successed: %v", datas)
- appG.Response(http.StatusOK, e.SUCCESS, datas)
- }
- // QueryPositionCancelReq 查询远期订单注销申请请求参数
- type QueryPositionCancelReq struct {
- UserID int `form:"userid" binding:"required"`
- AccountID int `form:"accountid"`
- CancelID int `form:"cancelid"`
- }
- // Cptradepositioncancel 远期订单注销申请表
- type Cptradepositioncancel struct {
- Cancelid int64 `json:"cancelid" xorm:"'CANCELID'" binding:"required"` // 注销ID(SEQ_CPTRADE_POSITIONCANCEL)
- Userid int64 `json:"userid" xorm:"'USERID'"` // 申请人ID
- Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 申请人账户ID
- Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
- Cancelqty int64 `json:"cancelqty" xorm:"'CANCELQTY'"` // 注销数量
- Applystatus int64 `json:"applystatus" xorm:"'APPLYSTATUS'"` // 申请状态 - 1:已提交 2:初审通过 3:初审拒绝 4:初审失败 5复审通过 6:复审拒绝 7:复审失败 8:已撤销
- Handlestatus int64 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态
- Applytime time.Time `json:"applytime" xorm:"'APPLYTIME'"` // 申请时间
- Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
- Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
- Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
- Marketid int64 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
- Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 订单商品代码
- Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 订单商品名称
- Marketname string `json:"marketname" xorm:"'GOODSNAME'"` // 市场名称
- Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位
- }
- // TableName is CPTRADE_POSITIONCANCEL
- func (Cptradepositioncancel) TableName() string {
- return "CPTRADE_POSITIONCANCEL"
- }
- // QueryCPTradePositionCancel 查询远期订单注销申请信息
- // @Summary 查询远期订单注销申请信息
- // @Produce json
- // @Security ApiKeyAuth
- // @Param userid query int true "账户ID"
- // @Param cancelid query int false "注销ID"
- // @Param accountid query int false "资金账户ID"
- // @Success 200 {object} Cptradepositioncancel
- // @Failure 500 {object} app.Response
- // @Router /CPTrade/QueryCPTradePositionCancel [get]
- // @Tags 产能预售
- func QueryCPTradePositionCancel(c *gin.Context) {
- appG := app.Gin{C: c}
- // 获取请求参数
- var req QueryPositionCancelReq
- if err := appG.C.ShouldBindQuery(&req); err != nil {
- logger.GetLogger().Errorf("QueryCPTradePositionCancel failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
- return
- }
- // 查询数据
- sql := fmt.Sprintf(`select
- t.CancelID,
- t.UserID,
- t.AccountID,
- t.GoodsID,
- t.CancelQty,
- t.ApplyStatus,
- t.HandleStatus,
- t.ApplyTime,
- t.CreatorID,
- t.CreateTime,
- t.TradeDate,
- t.MarketID,
- g.GoodsCode,
- g.GoodsName,
- m.MarketName,
- e.enumdicname GoodUnit
- from CPTrade_PositionCancel t
- left join goods g on t.goodsid = g.goodsid
- left join market m on t.marketid = m.marketid
- left join enumdicitem e on g.goodunitid = e.enumitemname and e.enumdiccode = 'goodsunit'
- where t.userid = %d`, req.UserID)
- if req.AccountID != 0 {
- sql += fmt.Sprintf(` and t.AccountID= %d`, req.AccountID)
- }
- if req.CancelID != 0 {
- sql += fmt.Sprintf(` and t.CancelID= %d`, req.CancelID)
- }
- engine := db.GetEngine()
- datas := make([]Cptradepositioncancel, 0)
- if err := engine.SQL(sql).Find(&datas); err != nil {
- // 查询失败
- logger.GetLogger().Errorf("QueryCPTradePositionCancel failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
- return
- }
- // 查询成功
- logger.GetLogger().Infof("QueryCPTradePositionCancel successed: %v", datas)
- appG.Response(http.StatusOK, e.SUCCESS, datas)
- }
|