wallet.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package models
  2. import (
  3. "mtp2_if/db"
  4. "mtp2_if/utils"
  5. "time"
  6. )
  7. type DigitalWalletAddress struct {
  8. ID int64 `json:"id" xorm:"ID"` // 地址ID
  9. DIGITALACCOUNTID int64 `json:"digitalaccountid" xorm:"DIGITALACCOUNTID" form:"digitalaccountid" binding:"required"` // 数字账户ID
  10. CHANNEL_CODE string `json:"channel_code" xorm:"CHANNEL_CODE"` // 渠道代码
  11. ADDR_TYPE int32 `json:"addr_type" xorm:"ADDR_TYPE"` // 地址类型:1-充值;2-提现
  12. CHAIN_ID string `json:"chain_id" xorm:"CHAIN_ID"` // 链代码(如BTC,ETH)
  13. ADDRESS string `json:"address" xorm:"ADDRESS"` // 区块链地址
  14. MEMO string `json:"memo" xorm:"MEMO"` // 地址备注(某些链需要)
  15. STATUS int32 `json:"status" xorm:"STATUS"` // 状态:0-禁用;1-启用
  16. CREATE_TIME time.Time `json:"create_time" xorm:"CREATE_TIME"` // 创建时间
  17. UPDATE_TIME time.Time `json:"update_time" xorm:"UPDATE_TIME"` // 修改时间
  18. TOKEN_ID string `json:"token_id" xorm:"TOKEN_ID"` // 代币ID(充值类型必填)
  19. }
  20. func (r *DigitalWalletAddress) calc() {
  21. }
  22. func (r *DigitalWalletAddress) buildSql() string {
  23. var sqlId utils.SQLVal = `
  24. SELECT
  25. t.ID ,
  26. t.DIGITALACCOUNTID,
  27. t.CHANNEL_CODE ,
  28. t.ADDR_TYPE ,
  29. t.CHAIN_ID ,
  30. t.ADDRESS ,
  31. t.MEMO ,
  32. t.STATUS ,
  33. t.CREATE_TIME ,
  34. t.UPDATE_TIME ,
  35. t.TOKEN_ID
  36. FROM WALLET_ADDRESS t
  37. WHERE t.DIGITALACCOUNTID = %v
  38. `
  39. sqlId.FormatParam(r.DIGITALACCOUNTID)
  40. return sqlId.String()
  41. }
  42. // GetDataEx 从数据库中查询数据
  43. func (r *DigitalWalletAddress) GetDataEx() (interface{}, error) {
  44. sData := make([]DigitalWalletAddress, 0)
  45. err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
  46. for i := range sData {
  47. sData[i].calc()
  48. }
  49. return sData, err
  50. }
  51. type WalletChainRsp struct {
  52. Walletchains
  53. Tokens []Wallettokens `json:"tokens"` // 链支持的代币列表
  54. }
  55. func GetWalletChains(channelCode string) ([]WalletChainRsp, error) {
  56. rsp := make([]WalletChainRsp, 0)
  57. datas := make([]Walletchains, 0)
  58. err := db.GetEngine().Where("CHANNEL_CODE = ?", channelCode).Find(&datas)
  59. if err != nil {
  60. return nil, err
  61. }
  62. for i := range datas {
  63. tokens := make([]Wallettokens, 0)
  64. err = db.GetEngine().Where("CHANNEL_CODE = ? AND CHAIN_ID = ?", channelCode, datas[i].CHAIN_ID).Find(&tokens)
  65. if err != nil {
  66. return nil, err
  67. }
  68. rsp = append(rsp, WalletChainRsp{
  69. Walletchains: datas[i],
  70. Tokens: tokens,
  71. })
  72. }
  73. return rsp, nil
  74. }