| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- package models
- import (
- "encoding/hex"
- "fmt"
- "mtp2_if/db"
- "mtp2_if/utils"
- "time"
- )
- // Tradepositiontransfer 持仓过户申请表 - 16所有权(中融需求)
- type InTradepositiontransfer struct {
- APPLYID string `json:"applyid" xorm:"APPLYID"` // 申请ID(185+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- OUTUSERID int64 `json:"outuserid" xorm:"OUTUSERID"` // 转出方用户ID(申请方)
- OUTLOGINID int64 `json:"outloginid" xorm:"OUTLOGINID"` // 转出方登录账号
- OUTACCOUNTID int64 `json:"outaccountid" xorm:"OUTACCOUNTID"` // 转出方资金ID(申请方)
- INUSERID int64 `json:"inuserid" xorm:"INUSERID" form:"userid" binding:"required"` // 转入方用户ID(确认方)
- INACCOUNTID int64 `json:"inaccountid" xorm:"INACCOUNTID"` // 转入方资金ID(确认方)
- INLOGINID int64 `json:"inloginid" xorm:"INLOGINID"` // 转入方登录账号
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
- QTY int64 `json:"qty" xorm:"QTY"` // 转让数量
- TRANSFERPRICE float64 `json:"transferprice" xorm:"TRANSFERPRICE"` // 转让价格
- TRANSFERAPPLYSTATUS int32 `json:"transferapplystatus" xorm:"TRANSFERAPPLYSTATUS"` // 过户申请状态 - 1: 待审核 2:待确认 3:确认处理中 4:已确认 5:申请失败 6:系统撤销 7:审核拒绝- 枚举"transferapplystatus"
- FREEZEDAYS int64 `json:"freezedays" xorm:"FREEZEDAYS"` // 冻结天数(T+N)
- APPLYREMARK string `json:"applyremark" xorm:"APPLYREMARK"` // 申请备注
- RETREMARK string `json:"retremark" xorm:"RETREMARK"` // 返回信息
- RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 错误代码
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日
- APPLICANTID int64 `json:"applicantid" xorm:"APPLICANTID"` // 申请人ID
- APPLYTIME string `json:"applytime" xorm:"APPLYTIME"` // 申请时间
- TRANSFERTYPE int32 `json:"transfertype" xorm:"TRANSFERTYPE"` // 转让类型 - 1.协议转让
- TRANSFERAMOUNT float64 `json:"transferamount" xorm:"TRANSFERAMOUNT"` // 转让总金额
- GOODSCURPRICE float64 `json:"goodscurprice" xorm:"GOODSCURPRICE"` // 商品实时价格
- GOODSCURAMOUNT float64 `json:"goodscuramount" xorm:"GOODSCURAMOUNT"` // 商品实时价金额
- OPENFEEALGORITHM int32 `json:"openfeealgorithm" xorm:"OPENFEEALGORITHM"` // 建仓手续费收取方式 1:比率 2:固定
- OPENMEMBERCHARGEVALUE float64 `json:"openmemberchargevalue" xorm:"OPENMEMBERCHARGEVALUE"` // 建仓会员手续费设置值
- OPENEXCHAGECHARGEVALUE float64 `json:"openexchagechargevalue" xorm:"OPENEXCHAGECHARGEVALUE"` // 建仓交易所手续费设置值
- CLOSEFEEALGORITHM int32 `json:"closefeealgorithm" xorm:"CLOSEFEEALGORITHM"` // 平仓手续费收取方式(转出方) 1:比率 2:固定
- CLOSEMEMBERCHARGEVALUE float64 `json:"closememberchargevalue" xorm:"CLOSEMEMBERCHARGEVALUE"` // 平仓会员手续费设置值(转出方)
- CLOSEEXCHAGECHARGEVALUE float64 `json:"closeexchagechargevalue" xorm:"CLOSEEXCHAGECHARGEVALUE"` // 平仓交易所手续费设置值(转出方)
- OUTCHARGE float64 `json:"outcharge" xorm:"OUTCHARGE"` // 转出方手续费
- INCHARGE float64 `json:"incharge" xorm:"INCHARGE"` // 转入方手续费
- CONFIRMDATE time.Time `json:"confirmdate" xorm:"CONFIRMDATE"` // 确认时间
- AUDITORID int64 `json:"auditorid" xorm:"AUDITORID"` // 审核人
- AUDITTIME time.Time `json:"audittime" xorm:"AUDITTIME"` // 审核时间
- AUDITREMARK string `json:"auditremark" xorm:"AUDITREMARK"` // 审核备注
- CLIENTTICKET string `json:"clientticket" xorm:"CLIENTTICKET"` // 客户端流水号
- GOODSDISPLAY string `json:"goodsdisplay" xorm:"GOODSDISPLAY"` // 商品名称
- OUTUSERNAME string `json:"outusername" xorm:"OUTUSERNAME"` // 转出方
- APPLYSTATUS string `json:"applystatus" xorm:"APPLYSTATUS"` // 状态
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *InTradepositiontransfer) calc() {
- }
- func (r *InTradepositiontransfer) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode || '/' || g.goodsname as GOODSDISPLAY,
- vlogin.LOGINIDS || '/' || ui.customername as OUTUSERNAME,
- en.enumdicname as APPLYSTATUS,
- to_char(t.applyid) APPLYID,
- to_char(t.applytime, 'yyyy-mm-dd hh24:mi:ss') APPLYTIME,
- t.OUTUSERID ,
- t.OUTLOGINID ,
- t.OUTACCOUNTID ,
- t.INUSERID ,
- t.INACCOUNTID ,
- t.INLOGINID ,
- t.GOODSID ,
- t.MARKETID ,
- t.BUYORSELL ,
- t.QTY ,
- t.TRANSFERPRICE ,
- t.TRANSFERAPPLYSTATUS ,
- t.FREEZEDAYS ,
- t.APPLYREMARK ,
- t.RETREMARK ,
- t.RETCODE ,
- t.TRADEDATE ,
- t.APPLICANTID ,
- t.TRANSFERTYPE ,
- t.TRANSFERAMOUNT ,
- t.GOODSCURPRICE ,
- t.GOODSCURAMOUNT ,
- t.OPENFEEALGORITHM ,
- t.OPENMEMBERCHARGEVALUE ,
- t.OPENEXCHAGECHARGEVALUE ,
- t.CLOSEFEEALGORITHM ,
- t.CLOSEMEMBERCHARGEVALUE ,
- t.CLOSEEXCHAGECHARGEVALUE,
- t.OUTCHARGE ,
- t.INCHARGE ,
- t.CONFIRMDATE ,
- t.AUDITORID ,
- t.AUDITTIME ,
- t.AUDITREMARK ,
- t.CLIENTTICKET
- from Trade_PositionTransfer t
- left join goods g
- on t.goodsid = g.goodsid
- left join userinfo ui
- on t.outuserid = ui.userid
- left join VIEW_USER_LOGINIDS vlogin
- on t.outuserid = vlogin.USERID
- left join enumdicitem en
- on en.enumdiccode = 'transferapplystatus'
- and en.enumitemname = t.transferapplystatus
- where t.inuserid = %v
- and t.transferapplystatus not in (1, 5)
- order by t.applytime desc
- `
- sqlId.FormatParam(r.INUSERID)
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *InTradepositiontransfer) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]InTradepositiontransfer, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- // OutTradepositiontransfer 持仓过户申请表 - 16所有权(中融需求)
- type OutTradepositiontransfer struct {
- APPLYID string `json:"applyid" xorm:"APPLYID"` // 申请ID(185+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- OUTUSERID int64 `json:"outuserid" xorm:"OUTUSERID" form:"userid" binding:"required"` // 转出方用户ID(申请方)
- OUTLOGINID int64 `json:"outloginid" xorm:"OUTLOGINID"` // 转出方登录账号
- OUTACCOUNTID int64 `json:"outaccountid" xorm:"OUTACCOUNTID"` // 转出方资金ID(申请方)
- INUSERID int64 `json:"inuserid" xorm:"INUSERID"` // 转入方用户ID(确认方)
- INACCOUNTID int64 `json:"inaccountid" xorm:"INACCOUNTID"` // 转入方资金ID(确认方)
- INLOGINID int64 `json:"inloginid" xorm:"INLOGINID"` // 转入方登录账号
- GOODSID int32 `json:"goodsid" xorm:"GOODSID"` // 商品ID
- MARKETID int32 `json:"marketid" xorm:"MARKETID"` // 市场ID
- BUYORSELL int32 `json:"buyorsell" xorm:"BUYORSELL"` // 买卖 - 0:买 1:卖
- QTY int64 `json:"qty" xorm:"QTY"` // 转让数量
- TRANSFERPRICE float64 `json:"transferprice" xorm:"TRANSFERPRICE"` // 转让价格
- TRANSFERAPPLYSTATUS int32 `json:"transferapplystatus" xorm:"TRANSFERAPPLYSTATUS"` // 过户申请状态 - 1: 待审核 2:待确认 3:确认处理中 4:已确认 5:申请失败 6:系统撤销 7:审核拒绝- 枚举"transferapplystatus"
- FREEZEDAYS int64 `json:"freezedays" xorm:"FREEZEDAYS"` // 冻结天数(T+N)
- APPLYREMARK string `json:"applyremark" xorm:"APPLYREMARK"` // 申请备注
- RETREMARK string `json:"retremark" xorm:"RETREMARK"` // 返回信息
- RETCODE int32 `json:"retcode" xorm:"RETCODE"` // 错误代码
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE"` // 交易日
- APPLICANTID int64 `json:"applicantid" xorm:"APPLICANTID"` // 申请人ID
- APPLYTIME string `json:"applytime" xorm:"APPLYTIME"` // 申请时间
- TRANSFERTYPE int32 `json:"transfertype" xorm:"TRANSFERTYPE"` // 转让类型 - 1.协议转让
- TRANSFERAMOUNT float64 `json:"transferamount" xorm:"TRANSFERAMOUNT"` // 转让总金额
- GOODSCURPRICE float64 `json:"goodscurprice" xorm:"GOODSCURPRICE"` // 商品实时价格
- GOODSCURAMOUNT float64 `json:"goodscuramount" xorm:"GOODSCURAMOUNT"` // 商品实时价金额
- OPENFEEALGORITHM int32 `json:"openfeealgorithm" xorm:"OPENFEEALGORITHM"` // 建仓手续费收取方式 1:比率 2:固定
- OPENMEMBERCHARGEVALUE float64 `json:"openmemberchargevalue" xorm:"OPENMEMBERCHARGEVALUE"` // 建仓会员手续费设置值
- OPENEXCHAGECHARGEVALUE float64 `json:"openexchagechargevalue" xorm:"OPENEXCHAGECHARGEVALUE"` // 建仓交易所手续费设置值
- CLOSEFEEALGORITHM int32 `json:"closefeealgorithm" xorm:"CLOSEFEEALGORITHM"` // 平仓手续费收取方式(转出方) 1:比率 2:固定
- CLOSEMEMBERCHARGEVALUE float64 `json:"closememberchargevalue" xorm:"CLOSEMEMBERCHARGEVALUE"` // 平仓会员手续费设置值(转出方)
- CLOSEEXCHAGECHARGEVALUE float64 `json:"closeexchagechargevalue" xorm:"CLOSEEXCHAGECHARGEVALUE"` // 平仓交易所手续费设置值(转出方)
- OUTCHARGE float64 `json:"outcharge" xorm:"OUTCHARGE"` // 转出方手续费
- INCHARGE float64 `json:"incharge" xorm:"INCHARGE"` // 转入方手续费
- CONFIRMDATE time.Time `json:"confirmdate" xorm:"CONFIRMDATE"` // 确认时间
- AUDITORID int64 `json:"auditorid" xorm:"AUDITORID"` // 审核人
- AUDITTIME time.Time `json:"audittime" xorm:"AUDITTIME"` // 审核时间
- AUDITREMARK string `json:"auditremark" xorm:"AUDITREMARK"` // 审核备注
- CLIENTTICKET string `json:"clientticket" xorm:"CLIENTTICKET"` // 客户端流水号
- GOODSDISPLAY string `json:"goodsdisplay" xorm:"GOODSDISPLAY"` // 商品名称
- INUSERNAME string `json:"inusername" xorm:"INUSERNAME"` // 转入方
- APPLYSTATUS string `json:"applystatus" xorm:"APPLYSTATUS"` // 状态
- PageEx `xorm:"extends"` // 页码信息
- }
- func (r *OutTradepositiontransfer) calc() {
- }
- func (r *OutTradepositiontransfer) buildSql() string {
- var sqlId utils.SQLVal = `
- select
- g.goodscode || '/' || g.goodsname as GOODSDISPLAY,
- vlogin.LOGINIDS || '/' || ui.customername as INUSERNAME,
- en.enumdicname as APPLYSTATUS,
- to_char(t.applyid) APPLYID,
- t.outuserid,
- t.outloginid,
- t.outaccountid,
- t.inuserid,
- t.inaccountid,
- t.inloginid,
- t.goodsid,
- t.marketid,
- t.buyorsell,
- t.qty,
- t.transferprice,
- t.transferapplystatus,
- t.freezedays,
- t.applyremark,
- t.retremark,
- t.retcode,
- t.tradedate,
- t.applicantid,
- to_char(t.applytime,'yyyy-mm-dd hh24:mi:ss') applytime,
- t.transfertype,
- t.transferamount,
- t.goodscurprice,
- t.goodscuramount,
- t.openfeealgorithm,
- t.openmemberchargevalue,
- t.openexchagechargevalue,
- t.closefeealgorithm,
- t.closememberchargevalue,
- t.closeexchagechargevalue,
- t.outcharge,
- t.incharge,
- t.confirmdate,
- t.auditorid,
- t.audittime,
- t.auditremark,
- t.clientticket
- from Trade_PositionTransfer t
- left join goods g
- on t.goodsid = g.goodsid
- left join userinfo ui
- on t.inuserid = ui.userid
- left join VIEW_USER_LOGINIDS vlogin
- on t.inuserid = vlogin.USERID
- left join enumdicitem en
- on en.enumdiccode = 'transferapplystatus'
- and en.enumitemname = t.transferapplystatus
- where t.outuserid = %v
- order by t.applytime desc
- `
- sqlId.FormatParam(r.OUTUSERID)
- sqlId.Page(r.Page, r.PageSize)
- return sqlId.String()
- }
- func (r *OutTradepositiontransfer) GetDataByPage() (interface{}, error, int, int, int) {
- sData := make([]OutTradepositiontransfer, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- total := 0
- for i := range sData {
- sData[i].calc()
- total = sData[i].Total
- }
- return sData, err, r.Page, r.PageSize, total
- }
- func GetUserInfoByUserIDorMobile(param string) (userinfo *Userinfo, err error) {
- // 先尝试加密手机号码,手机号码需要AES加密
- mobile := ""
- key, _ := hex.DecodeString(utils.AESSecretKey)
- if mobileEncrypted, err := utils.AESEncrypt([]byte(param), key); err == nil {
- mobile = hex.EncodeToString(mobileEncrypted)
- }
- userinfos := make([]Userinfo, 0)
- sql := fmt.Sprintf(`
- SELECT
- t.*
- FROM userinfo t
- INNER JOIN loginaccount l
- ON l.userid = t.userid
- WHERE l.loginid = %v
- `, param)
- if mobile != "" {
- sql = fmt.Sprintf("%v OR t.mobile = '%v'", sql, mobile)
- }
- err = db.GetEngine().SQL(sql).Find(&userinfos)
- if len(userinfos) > 0 {
- userinfo = &userinfos[0]
- }
- return
- }
|