| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- package models
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/utils"
- "strings"
- "time"
- )
- // Taaccountdigital 数字账户表
- type Taaccountdigital struct {
- DIGITALACCOUNTID string `json:"digitalaccountid" xorm:"DIGITALACCOUNTID" form:"digitalaccountid"` // 资金账户ID(userid + currencyid[3位,前面补0])
- CURRENCYID uint32 `json:"currencyid" xorm:"CURRENCYID"` // 货币ID - 枚举"digitalcurrency"
- USERID uint64 `json:"userid" xorm:"USERID" form:"userid" binding:"required"` // 用户ID
- CURRENTBALANCE float64 `json:"currentbalance" xorm:"CURRENTBALANCE"` // 期末余额
- USEDMARGIN float64 `json:"usedmargin" xorm:"USEDMARGIN"` // 占用保证金(交易) - 正 - 预留
- FREEZEMARGIN float64 `json:"freezemargin" xorm:"FREEZEMARGIN"` // 冻结保证金(交易) - 正
- FREEZETRADECHARGE float64 `json:"freezetradecharge" xorm:"FREEZETRADECHARGE"` // 交易手续费冻结 - 正
- FREEZETRANSFER float64 `json:"freezetransfer" xorm:"FREEZETRANSFER"` // 转入转出冻结 - 正
- FREEZEINOUT float64 `json:"freezeinout" xorm:"FREEZEINOUT"` // 充值提现冻结 - 正
- TOTALTRADEADD float64 `json:"totaltradeadd" xorm:"TOTALTRADEADD"` // 累计交易增加 - 正
- TOTALTRADEREDUCE float64 `json:"totaltradereduce" xorm:"TOTALTRADEREDUCE"` // 累计交易减少 - 负
- TOTALTRADECHARGE float64 `json:"totaltradecharge" xorm:"TOTALTRADECHARGE"` // 累计交易手续费 - 负
- TOTALTRANSFERIN float64 `json:"totaltransferin" xorm:"TOTALTRANSFERIN"` // 累计转入(合约与现货账户) - 正
- TOTALTRANSFEROUT float64 `json:"totaltransferout" xorm:"TOTALTRANSFEROUT"` // 累计转出(合约与现货账户) - 负
- TOTALTRANSFERINCHARGE float64 `json:"totaltransferincharge" xorm:"TOTALTRANSFERINCHARGE"` // 累计转入手续费 - 负 - 预留
- TOTALTRANSFEROUTCHARGE float64 `json:"totaltransferoutcharge" xorm:"TOTALTRANSFEROUTCHARGE"` // 累计转出手续费 - 负 - 预留
- TOTALIN float64 `json:"totalin" xorm:"TOTALIN"` // 累计充值(现货账户与外部钱包) - 正
- TOTALOUT float64 `json:"totalout" xorm:"TOTALOUT"` // 累计提现(现货账户与外部钱包) - 负
- TOTALININCHARGE float64 `json:"totalinincharge" xorm:"TOTALININCHARGE"` // 累计充值手续费 - 负
- TOTALINOUTCHARGE float64 `json:"totalinoutcharge" xorm:"TOTALINOUTCHARGE"` // 累计提现手续费 - 负
- CURRENCYCODE string `json:"currencycode" xorm:"CURRENCYCODE"` // 币种代码
- CURRENCYDECIMALPLACE uint32 `json:"currencydecimalplace" xorm:"CURRENCYDECIMALPLACE"` // 币种小数位(param1)
- CURRENCYDISPLAYUNIT string `json:"currencydisplayunit" xorm:"CURRENCYDISPLAYUNIT"` // 币种显示单位(param2)
- CURRENCYIDS string `json:"-" xorm:"-" form:"currencyids"` // 币种ID(多个逗号分隔)
- }
- func (r *Taaccountdigital) calc() {
- }
- func (r *Taaccountdigital) buildSql() string {
- var sqlId utils.SQLVal = `
- SELECT A.ENUMITEMVALUE CURRENCYCODE, A.PARAM1 CURRENCYDECIMALPLACE, A.PARAM2 CURRENCYDISPLAYUNIT,
- TO_CHAR(NVL(TA.DIGITALACCOUNTID, '')) DIGITALACCOUNTID,
- CASE
- WHEN TA.CURRENCYID IS NULL THEN A.ENUMITEMNAME
- ELSE TA.CURRENCYID
- END CURRENCYID,
- CASE
- WHEN TA.USERID IS NULL THEN %v
- ELSE TA.USERID
- END USERID,
- NVL(TA.CURRENTBALANCE, 0) CURRENTBALANCE,
- NVL(TA.USEDMARGIN, 0) USEDMARGIN,
- NVL(TA.FREEZEMARGIN, 0) FREEZEMARGIN,
- NVL(TA.FREEZETRADECHARGE, 0) FREEZETRADECHARGE,
- NVL(TA.FREEZETRANSFER, 0) FREEZETRANSFER,
- NVL(TA.FREEZEINOUT, 0) FREEZEINOUT,
- NVL(TA.TOTALTRADEADD, 0) TOTALTRADEADD,
- NVL(TA.TOTALTRADEREDUCE, 0) TOTALTRADEREDUCE,
- NVL(TA.TOTALTRADECHARGE, 0) TOTALTRADECHARGE,
- NVL(TA.TOTALTRANSFERIN, 0) TOTALTRANSFERIN,
- NVL(TA.TOTALTRANSFEROUT, 0) TOTALTRANSFEROUT,
- NVL(TA.TOTALTRANSFERINCHARGE, 0) TOTALTRANSFERINCHARGE,
- NVL(TA.TOTALTRANSFEROUTCHARGE, 0) TOTALTRANSFEROUTCHARGE,
- NVL(TA.TOTALIN, 0) TOTALIN,
- NVL(TA.TOTALOUT, 0) TOTALOUT,
- NVL(TA.TOTALININCHARGE, 0) TOTALININCHARGE,
- NVL(TA.TOTALINOUTCHARGE, 0) TOTALINOUTCHARGE
- FROM (SELECT E.* FROM ENUMDICITEM E WHERE E.ENUMDICCODE = 'digitalcurrency') A
- LEFT JOIN (SELECT T.* FROM TAACCOUNTDIGITAL T WHERE T.USERID = %v) TA ON A.ENUMITEMNAME = TA.CURRENCYID
- where 1=1
- `
- if len(strings.TrimSpace(r.CURRENCYIDS)) > 0 {
- sqlId.Join(fmt.Sprintf(" AND A.ENUMITEMNAME IN (%v)", strings.TrimSpace(r.CURRENCYIDS)))
- }
- sqlId.AndEx("TA.DIGITALACCOUNTID", strings.TrimSpace(r.DIGITALACCOUNTID), strings.TrimSpace(r.DIGITALACCOUNTID) != "")
- sqlId.FormatParam(r.USERID, r.USERID)
- sqlId.Join(" ORDER BY NVL(TA.CURRENTBALANCE, 0) DESC, A.ENUMITEMNAME")
- return sqlId.String()
- }
- // GetDataEx 从数据库中查询数据
- func (r *Taaccountdigital) GetDataEx() (interface{}, error) {
- sData := make([]Taaccountdigital, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // Taaccountdigitalchangeapply 数字账户变更申请表
- type Taaccountdigitalchangeapply struct {
- APPLYID string `json:"applyid" xorm:"APPLYID"` // 申请ID(403+Unix秒时间戳(10位)+xxxxxx)
- USERID uint64 `json:"userid" xorm:"USERID"` // 用户ID
- CURRENCYID uint32 `json:"currencyid" xorm:"CURRENCYID"` // 货币ID - 枚举"digitalcurrency"
- DIGITALACCOUNTID string `json:"digitalaccountid" xorm:"DIGITALACCOUNTID" form:"digitalaccountid" binding:"required"` // 数字账号ID
- ACCOUNTID uint64 `json:"accountid" xorm:"ACCOUNTID"` // 资金账号ID (转入\转出)
- DIGITALTRANSFERTYPE uint32 `json:"digitaltransfertype" xorm:"DIGITALTRANSFERTYPE"` // 划转类型 - 枚举"digitaltransfertype"(1:充值 2:提现 3:转入 4:转出)
- APPLYAMOUNT float64 `json:"applyamount" xorm:"APPLYAMOUNT"` // 申请金额
- CHARGE float64 `json:"charge" xorm:"CHARGE"` // 手续费
- ACTUALAMOUNT float64 `json:"actualamount" xorm:"ACTUALAMOUNT"` // 实际金额(申请金额 - 手续费)
- APPLYSTATUS uint32 `json:"applystatus" xorm:"APPLYSTATUS"` // 申请状态 - 枚举"bankapplystatus"(1:待审核 2:审核中 3:审核通过 4:审核拒绝 5:审核失败 6:审核超时 7:已撤销)
- HANDLESTATUS uint64 `json:"handlestatus" xorm:"HANDLESTATUS"` // 处理状态 - 枚举"digitalhandlestatus"(1:账户服务处理开始 2:账户服务处理失败 3:账户服务处理成功 4:数字账户服务处理开始 5:数字账户服务处理失败 6:数字账户服务处理成功)
- APPLYTIME time.Time `json:"applytime" xorm:"APPLYTIME"` // 申请时间
- REVOKESRC uint32 `json:"revokesrc" xorm:"REVOKESRC"` // 撤销来源 - 枚举"operatesrc"(1:管理端 2:客户端)
- REVOKERID uint64 `json:"revokerid" xorm:"REVOKERID"` // 撤销人
- REVOKETIME time.Time `json:"revoketime" xorm:"REVOKETIME"` // 撤销时间
- AUDITORID uint64 `json:"auditorid" xorm:"AUDITORID"` // 审核人
- AUDITTIME time.Time `json:"audittime" xorm:"AUDITTIME"` // 审核时间
- AUDITTRADEDATE string `json:"audittradedate" xorm:"AUDITTRADEDATE"` // 审核交易日(yyyyMMdd)
- REMARK string `json:"remark" xorm:"REMARK"` // 备注
- RETCODE string `json:"retcode" xorm:"RETCODE"` // 错误代码
- APPLYDATE string `json:"-" xorm:"-" form:"applydate"` // 申请日期(yyyyMMdd)
- TRANSFERTYPES string `json:"-" xorm:"-" form:"transfertypes"` // 划转类型(多个逗号分隔) - 枚举"digitaltransfertype"(1:充值 2:提现 3:转入 4:转出)
- }
- func (r *Taaccountdigitalchangeapply) calc() {
- }
- func (r *Taaccountdigitalchangeapply) buildSql() string {
- var sqlId utils.SQLVal = `
- select t.* from taaccountdigitalchangeapply t
- where t.digitalaccountid = %v
- `
- sqlId.AndEx("to_char(t.applytime, 'yyyyMMdd')", r.APPLYDATE, strings.TrimSpace(r.APPLYDATE) != "")
- if len(strings.TrimSpace(r.TRANSFERTYPES)) > 0 {
- sqlId.Join(fmt.Sprintf(" AND t.digitaltransfertype IN (%v)", strings.TrimSpace(r.TRANSFERTYPES)))
- }
- sqlId.FormatParam(r.DIGITALACCOUNTID)
- sqlId.Join(" ORDER BY t.APPLYTIME DESC")
- return sqlId.String()
- }
- // GetDataEx 从数据库中查询数据
- func (r *Taaccountdigitalchangeapply) GetDataEx() (interface{}, error) {
- sData := make([]Taaccountdigitalchangeapply, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
- // Taaccountdigitallog 数字账户流水表
- type Taaccountdigitallog struct {
- LOGID string `json:"logid" xorm:"LOGID"` // 流水ID(402+Unix秒时间戳(10位)+xxxxxx)
- DIGITALACCOUNTID string `json:"digitalaccountid" xorm:"DIGITALACCOUNTID" form:"digitalaccountid" binding:"required"` // 数字账号ID
- USERID uint64 `json:"userid" xorm:"USERID"` // 用户ID
- CURRENCYID uint32 `json:"currencyid" xorm:"CURRENCYID"` // 货币ID - 枚举"digitalcurrency"
- CHANGEVALUE float64 `json:"changevalue" xorm:"CHANGEVALUE"` // 变更值
- BEFOREVALUE float64 `json:"beforevalue" xorm:"BEFOREVALUE"` // 变更前
- AFTERVALUE float64 `json:"aftervalue" xorm:"AFTERVALUE"` // 变更后
- DIGITALOPERATETYPE uint32 `json:"digitaloperatetype" xorm:"DIGITALOPERATETYPE"` // 操作类型 - 枚举"digitaloperatetype"(1.冻结 2:解冻 3:增加 4:减少 5:最大冻结)
- DIGITALBUSINESSCODE uint32 `json:"digitalbusinesscode" xorm:"DIGITALBUSINESSCODE"` // 业务编号 - 枚举"digitalbusinesscode"(1:充值 2:提现 3:转入 4:转出 5:现货交易 6:现货交易手续费 7:提现手续费...)
- MONEYTICKET string `json:"-" xorm:"MONEYTICKET"` // 资金流水号:银行端流水号
- RELATEORDERID string `json:"-" xorm:"RELATEORDERID"` // 关联单号
- CREATETIME time.Time `json:"createtime" xorm:"CREATETIME"` // 创建时间
- TRADEDATE string `json:"tradedate" xorm:"TRADEDATE" form:"tradedate"` // 创建交易日(yyyyMMdd)
- REMARK string `json:"remark" xorm:"REMARK"` // 备注
- BUSINESSCODES string `json:"-" xorm:"-" form:"businesscodes"` // 业务类型(多个逗号分隔) - 枚举digitalbusinesscode(1:充值 2:提现 3:转入 4:转出 5:现货交易 6:现货交易手续费 7:提现手续费...)
- }
- func (r *Taaccountdigitallog) calc() {
- }
- func (r *Taaccountdigitallog) buildSql() string {
- var sqlId utils.SQLVal = `
- select t.* from taaccountdigitallog t
- where t.digitalaccountid = %v
- `
- sqlId.AndEx("t.tradedate", r.TRADEDATE, strings.TrimSpace(r.TRADEDATE) != "")
- if len(strings.TrimSpace(r.BUSINESSCODES)) > 0 {
- sqlId.Join(fmt.Sprintf(" AND t.digitalbusinesscode IN (%v)", strings.TrimSpace(r.BUSINESSCODES)))
- }
- sqlId.FormatParam(r.DIGITALACCOUNTID)
- sqlId.Join(" ORDER BY t.CREATETIME DESC")
- return sqlId.String()
- }
- // GetDataEx 从数据库中查询数据
- func (r *Taaccountdigitallog) GetDataEx() (interface{}, error) {
- sData := make([]Taaccountdigitallog, 0)
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
- for i := range sData {
- sData[i].calc()
- }
- return sData, err
- }
|