package models import ( "fmt" "mtp2_if/db" "time" ) // Szdz3goodspickup 商品提货单表 type Szdz3goodspickup struct { Takeorderid string `json:"takeorderid" xorm:"'TAKEORDERID'" binding:"required"` // 提货单号(905+Unix秒时间戳(10位)+xxxxxx) Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账户ID Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID Qty float64 `json:"qty" xorm:"'QTY'"` // 提货数量 Reqtime time.Time `json:"reqtime" xorm:"'REQTIME'"` // 更新时间 Recivername string `json:"recivername" xorm:"'RECIVERNAME'"` // 提货人姓名 Cardtypeid int32 `json:"cardtypeid" xorm:"'CARDTYPEID'"` // 提货人证件类型 Cardnum string `json:"cardnum" xorm:"'CARDNUM'"` // 提货人证件号码 Phonenum string `json:"phonenum" xorm:"'PHONENUM'"` // 提货人联系方式 Takemode int32 `json:"takemode" xorm:"'TAKEMODE'"` // 提货方式 - 2:自提 3:配送 Address string `json:"address" xorm:"'ADDRESS'"` // 提货人详细地址 Takeremark string `json:"takeremark" xorm:"'TAKEREMARK'"` // 提货备注 Takeorderstatus int32 `json:"takeorderstatus" xorm:"'TAKEORDERSTATUS'"` // 提货状态 - 1:待发货 2:已发货 3:已收货 Auditer int32 `json:"auditer" xorm:"'AUDITER'"` // 审核人 Audittime time.Time `json:"audittime" xorm:"'AUDITTIME'"` // 审核时间 Checkremark string `json:"checkremark" xorm:"'CHECKREMARK'"` // 审核备注 Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd) Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Handlestatus int32 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态 } // TableName is SZDZ3_GOODSPICKUP func (Szdz3goodspickup) TableName() string { return "SZDZ3_GOODSPICKUP" } // Szdz3convertlog 交易系统转换流水表 type Szdz3convertlog struct { Logid int64 `json:"logid" xorm:"'LOGID'" binding:"required"` // LogID(901+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx) Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd) Converttype int32 `json:"converttype" xorm:"'CONVERTTYPE'"` // 转换类型 - 1:金点赞转交易 2:金点拍转交易 3:交易转金点赞 4:交易转金点拍 Outergoodscode string `json:"outergoodscode" xorm:"'OUTERGOODSCODE'"` // 外部商品代码[JD\PD] Innergoodsid int64 `json:"innergoodsid" xorm:"'INNERGOODSID'"` // 内部商品ID Outvalue float64 `json:"outvalue" xorm:"'OUTVALUE'"` // 源值 Invalue float64 `json:"invalue" xorm:"'INVALUE'"` // 目标值 Outratio int64 `json:"outratio" xorm:"'OUTRATIO'"` // 配置转出比值 Inratio int64 `json:"inratio" xorm:"'INRATIO'"` // 配置转入比值 Daymaxvalue float64 `json:"daymaxvalue" xorm:"'DAYMAXVALUE'"` // 配置当日最大转入限制 Timemaxvalue float64 `json:"timemaxvalue" xorm:"'TIMEMAXVALUE'"` // 配置单次最大转入限制 Timeminvalue float64 `json:"timeminvalue" xorm:"'TIMEMINVALUE'"` // 配置单次最小数量限制 Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 资金账户ID Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 记账时间 Handlestatus int32 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态 Clientticket string `json:"clientticket" xorm:"'CLIENTTICKET'"` // 客户端流水号 Remark string `json:"remark" xorm:"'REMARK'"` // 备注 Mobile string `json:"mobile" xorm:"'MOBILE'"` // 手机号码(加密存储) Sessionid int64 `json:"sessionid" xorm:"'SESSIONID'"` // 会话ID Daymaxvalue2 float64 `json:"daymaxvalue2" xorm:"'DAYMAXVALUE2'"` // 配置当日最大转入限制(转入) Timemaxvalue2 float64 `json:"timemaxvalue2" xorm:"'TIMEMAXVALUE2'"` // 配置单次最大转入限制(转入) Timeminvalue2 float64 `json:"timeminvalue2" xorm:"'TIMEMINVALUE2'"` // 配置单次最小数量限制(转入) Pddecimalplace int32 `json:"pddecimalplace" xorm:"'PDDECIMALPLACE'"` // PD小数位 } // TableName is SZDZ3_CONVERTLOG func (Szdz3convertlog) TableName() string { return "SZDZ3_CONVERTLOG" } // Szdz3searchwhitelist 搜索白名单表 type Szdz3searchwhitelist struct { Userid int64 `json:"userid" xorm:"'USERID'" binding:"required"` // 用户ID Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间 Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人 Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人 Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 } // TableName is SZDZ3_SEARCHWHITELIST func (Szdz3searchwhitelist) TableName() string { return "SZDZ3_SEARCHWHITELIST" } // Szdz3convertconfig 交易系统转换设置表 type Szdz3convertconfig struct { Converttype int32 `json:"converttype" xorm:"'CONVERTTYPE'" binding:"required"` // 转换类型 - 1:金点赞转交易 2:金点拍转交易 3:交易转金点赞(不设置) 4:交易转金点拍(不设置) 5:花生米转交易 6:交易转花生米(不设置) Outergoodscode string `json:"outergoodscode" xorm:"'OUTERGOODSCODE'" binding:"required"` // 外部商品代码[JD\PD] Innergoodsid int64 `json:"innergoodsid" xorm:"'INNERGOODSID'" binding:"required"` // 内部商品ID[交易] Outratio int64 `json:"outratio" xorm:"'OUTRATIO'"` // 源值 Inratio int64 `json:"inratio" xorm:"'INRATIO'"` // 目标值 Daymaxvalue float64 `json:"daymaxvalue" xorm:"'DAYMAXVALUE'"` // 当日最大转入限制 Timemaxvalue float64 `json:"timemaxvalue" xorm:"'TIMEMAXVALUE'"` // 单次最大转入限制 Timeminvalue float64 `json:"timeminvalue" xorm:"'TIMEMINVALUE'"` // 单次最小转入限制 Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间 Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人 Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人 Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间 Pddecimalplace int32 `json:"pddecimalplace" xorm:"'PDDECIMALPLACE'"` // PD小数位 Canin int32 `json:"canin" xorm:"'CANIN'"` // 是否可转入 - 0:不可 1:可 [5:花生米转交易] Canout int32 `json:"canout" xorm:"'CANOUT'"` // 是否可转出 - 0:不可 1:可 [5:花生米转交易] Freezedays int32 `json:"freezedays" xorm:"'FREEZEDAYS'"` // 冻结天数 [5:花生米转交易] } // TableName is SZDZ3_CONVERTCONFIG func (Szdz3convertconfig) TableName() string { return "SZDZ3_CONVERTCONFIG" } // SZDZTradePosition 尚志大宗查买持仓数据库模型 type SZDZTradePosition struct { Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账号Id Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品Id Positionqty int64 `json:"positionqty" xorm:"'POSITIONQTY'"` // 期初持仓数量 Holderamount float64 `json:"holderamount" xorm:"'HOLDERAMOUNT'"` // 期初持仓总金额 Curpositionqty int64 `json:"curpositionqty" xorm:"'CURPOSITIONQTY'"` // 当前持仓总数量 Curholderamount float64 `json:"curholderamount" xorm:"'CURHOLDERAMOUNT'"` // 当前持仓总金额 Frozenqty int64 `json:"frozenqty" xorm:"'FROZENQTY'"` // 持仓冻结数量 Otherfrozenqty int64 `json:"otherfrozenqty" xorm:"'OTHERFROZENQTY'"` // 持仓其他冻结数量(交割冻结) Openreqqty int64 `json:"openreqqty" xorm:"'OPENREQQTY'"` // 开仓申请数量 Opentotalqty int64 `json:"opentotalqty" xorm:"'OPENTOTALQTY'"` // 开仓总数量 Closetotalqty int64 `json:"closetotalqty" xorm:"'CLOSETOTALQTY'"` // 平仓总数量 Tnqty int64 `json:"tnqty" xorm:"'TNQTY'"` // T+N冻结总量 Tnusedqty int64 `json:"tnusedqty" xorm:"'TNUSEDQTY'"` // T+N使用量 Usedmargin float64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金 Curtdposition int64 `json:"curtdposition" xorm:"'CURTDPOSITION'"` // 期末今日头寸 Fretdposition int64 `json:"fretdposition" xorm:"'FRETDPOSITION'"` // 冻结今日头寸 Goodscode string `json:"goodscode" xorm:"'GOODSCODE'"` // 商品代码(内部) Goodsname string `json:"goodsname" xorm:"'GOODSNAME'"` // 商品名称 Currencyid int64 `json:"currencyid" xorm:"'CURRENCYID'"` // 报价货币ID Goodunitid int64 `json:"goodunitid" xorm:"'GOODUNITID'"` // 报价单位ID Goodunit string `json:"goodunit" xorm:"'GOODUNIT'"` // 报价单位 Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位 Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位 Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID Trademode int32 `json:"trademode" xorm:"'TRADEMODE'"` // 交易模式 SZDZ3FreezQTY int64 `json:"szdz3freezqty" xorm:"'SZDZ3FREEZQTY'"` // 尚志大宗转换冻结总数量 } // GetSZDZBuyTradePosition 获取尚志大宗买持仓数据 // 参数 accountID int 资金账户 // 返回值 []SZDZTradePosition 尚志大宗买持仓数据 // 返回值 error 错误 func GetSZDZBuyTradePosition(accountID int) ([]SZDZTradePosition, error) { engine := db.GetEngine() // 查询数据, 使用Goods作为主表, TRADEPOSITION无记录时使用SZDZ3_FREEZEPOSITION tradePosition := make([]SZDZTradePosition, 0) s := engine.Table("GOODS"). Join("LEFT", "TRADEPOSITION", fmt.Sprintf("TRADEPOSITION.GOODSID = GOODS.GOODSID and TRADEPOSITION.ACCOUNTID = %d", accountID)). Join("LEFT", "SZDZ3_FREEZEPOSITION", fmt.Sprintf("SZDZ3_FREEZEPOSITION.GOODSID = GOODS.GOODSID and SZDZ3_FREEZEPOSITION.ACCOUNTID = %d", accountID)). Join("LEFT", "MARKET", "GOODS.MARKETID = MARKET.MARKETID"). Join("LEFT", "ENUMDICITEM", "GOODS.GOODUNITID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'goodsunit'"). Select(`NVL(TRADEPOSITION.ACCOUNTID, SZDZ3_FREEZEPOSITION.ACCOUNTID) ACCOUNTID, NVL(TRADEPOSITION.GOODSID,SZDZ3_FREEZEPOSITION.GOODSID) GOODSID, NVL(TRADEPOSITION.BUYPOSITIONQTY, 0) POSITIONQTY, NVL(TRADEPOSITION.BUYHOLDERAMOUNT, 0) HOLDERAMOUNT, NVL(TRADEPOSITION.BUYCURPOSITIONQTY, 0) CURPOSITIONQTY, NVL(TRADEPOSITION.BUYCURHOLDERAMOUNT, 0) CURHOLDERAMOUNT, NVL(TRADEPOSITION.BUYFROZENQTY, 0) FROZENQTY, NVL(TRADEPOSITION.BUYOTHERFROZENQTY, 0) OTHERFROZENQTY, NVL(TRADEPOSITION.BUYOPENREQQTY, 0) OPENREQQTY, NVL(TRADEPOSITION.BUYOPENTOTALQTY, 0) OPENTOTALQTY, NVL(TRADEPOSITION.BUYCLOSETOTALQTY, 0) CLOSETOTALQTY, NVL(TRADEPOSITION.BUYTNQTY, 0) TNQTY, NVL(TRADEPOSITION.BUYTNUSEDQTY, 0) TNUSEDQTY, NVL(TRADEPOSITION.USEDMARGIN, 0) USEDMARGIN, NVL(TRADEPOSITION.BUYCURTDPOSITION, 0) CURTDPOSITION, NVL(TRADEPOSITION.BUYFRETDPOSITION, 0) FRETDPOSITION, NVL(SZDZ3_FREEZEPOSITION.QTY, 0) SZDZ3FreezQTY, GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.CURRENCYID, GOODS.GOODUNITID, ENUMDICITEM.ENUMDICNAME as GOODUNIT, GOODS.AGREEUNIT, GOODS.DECIMALPLACE, MARKET.MARKETID, MARKET.TRADEMODE`). Where(fmt.Sprintf(`TRADEPOSITION.ACCOUNTID = %d and TRADEPOSITION.BUYCURPOSITIONQTY > 0 or SZDZ3_FREEZEPOSITION.QTY > 0`, accountID)) if err := s.Find(&tradePosition); err != nil { // 查询失败 return tradePosition, err } return tradePosition, nil }