wallet.go 2.4 KB

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