package udunhelper

type VerifyRequest struct {
	MerchantId   string `json:"merchantId"`
	MainCoinType string `json:"mainCoinType"`
	Address      string `json:"address"`
}

type CallbackRequest struct {
	MerchantId   string `json:"merchantId"`   //商户号
	MainCoinType int    `json:"mainCoinType"` //主幣種編號,使用獲取商戶幣種信息接口
	CallUrl      string `json:"callUrl"`      //回調地址，通過該接口創建的地址，以後關於該地址的充幣信息會通過您指定的回調地址通知您
	WalletId     string `json:"walletId"`     //錢包編號,默認根據主錢包生成地址,可不填写
	Alias        string `json:"alias"`        //地址別名,可不填写
}

type WithdrawRequest struct {
	/**
	{
	        "address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s",
	        "amount":"0.11",
	        "merchantId":"100109",
	        "mainCoinType":"144",
	        "coinType":"144",
	        "callUrl":"http://localhost:8080/mch/callBack",
	        "businessId":"15",
	        "memo":"10112"
	    }
	*/

	Address      string `json:"address"`      //提币地址
	Amount       string `json:"amount"`       //提币数量
	MerchantId   string `json:"merchantId"`   //商户号
	MainCoinType string `json:"mainCoinType"` //主幣種編號,使用獲取商戶幣種信息接口
	CoinType     string `json:"coinType"`     //子幣種編號,使用獲取商戶幣種信息接口
	CallUrl      string `json:"callUrl"`      //回調地址，通過該callUrl告知您該筆提幣交易的狀態
	BusinessId   string `json:"businessId"`   //業務編號，必須保證該字段在系統內唯一，如果重復，則該筆提幣錢包將不會進行接收
	WalletId     string `json:"-"`
	Memo         string `json:"memo"` //備註,XRP和EOS，這兩種幣的提幣申請該字段可選，其他類型幣種不填
}
type BaseRequest struct {
	Timestamp int64 `json:"timestamp"`
	Nonce     int   `json:"nonce"`
}

type HttpRequest struct {
	Timestamp int64  `json:"timestamp"` //时间戳
	Nonce     int    `json:"nonce"`     //随机数
	Sign      string `json:"sign"`      //签名
	Body      string `json:"body"`      //请求body
}

type BaseRes struct {
	Code    int    `json:"code"`    //200才是返回成功调用
	Message string `json:"message"` //
}

type BaseCoinsMerchant struct {
	Code    int             `json:"code"`    //200才是返回成功调用
	Message string          `json:"message"` //
	Data    []CoinsMerchant `json:"data"`    //
}

//CoinsMerchant 商家持仓的币种信息
type CoinsMerchant struct {
	MainCoinType string `json:"mainCoinType"` //主幣種類型
	CoinType     string `json:"coinType"`     // 幣種類型
	Symbol       string `json:"symbol"`       //BTC
	Name         string `json:"name"`         //幣種別名,BTC
	Logo         string `json:"logo"`         //幣種log地址
	CoinName     string `json:"coinName"`     //幣種全稱,Bitcoin
	MainSymbol   string `json:"mainSymbol"`   //主幣種單位
	Decimals     string `json:"decimals"`     //幣種精度,8
	TokenStatus  int    `json:"tokenStatus"`  //0： 主幣 1：代幣
	Balance      int64  `json:"balance"`      //幣種余額
}

type BaseCoinAddress struct {
	Code    int         `json:"code"`    //200才是返回成功调用
	Message string      `json:"message"` //
	Data    CoinAddress `json:"data"`    //
}

//CoinAddress 地址返回
type CoinAddress struct {
	CoinType int    `json:"coinType"` // 幣種類型
	Address  string `json:"address"`  //地址
}

type CallBackBase struct {
	TimeStamp int64       `json:"timestamp"`
	Nonce     int         `json:"nonce"`
	Sign      string      `json:"sign"`
	Body      CallBackRes `json:"body"` //
}

//CallBackRes 回调结构体
type CallBackRes struct {
	Address      string `json:"address"`      //地址
	Amount       string `json:"amount"`       //交易數量，根據幣種精度獲取實際金額，實際金額=amount/pow(10,decimals)，即實際金額等於amount除以10的decimals次方
	Fee          string `json:"fee"`          //礦工費，根據幣種精度獲取實際金額，實際金額獲取同上
	Decimals     string `json:"decimals"`     //幣種精度
	CoinType     string `json:"coinType"`     //子幣種編號,使用獲取商戶幣種信息接口
	MainCoinType string `json:"mainCoinType"` //主幣種類型
	BusinessId   string `json:"businessId"`   //業務編號，提幣回調時為提幣請求時傳入的，充幣回調無值
	BlockHigh    string `json:"blockHigh"`    //區塊高度
	TradeId      string `json:"tradeId"`      //業務流水號
	TxId         string `json:"txid"`         //區塊鏈交易哈希
	Memo         string `json:"memo"`         //備註，XRP和EOS，使用獲取商戶幣種信息接口，這2種類型幣的充提幣可能有值
	Status       int    `json:"status"`       //狀態,0待審核,1審核成功,2審核駁回,3交易成功,4交易失敗
	TradeType    int    `json:"tradeType"`    //交易類型,1充幣回調,2提幣回調
}

func getWithDrawMsg(code int) string {
	msg := ""
	switch code {
	case 200:
		msg = "提币成功"
	case 523:
		msg = "参数为空"
	case 581:
		msg = "无效的提币金额"
	case 4005:
		msg = "非法参数"
	case 4034:
		msg = "未找到该币种信息"
	case 4162:
		msg = "签名异常"
	case 4163:
		msg = "签名错误"
	case 4169:
		msg = "商户已被禁用"
	case 4183:
		msg = "到账地址异常"
	case 4193:
		msg = "EOS金额小数点后超过4位长度"
	case 4214:
		msg = "暂无可用的币种"
	case 4226:
		msg = "商户普通账户被禁用"
	case 4261:
		msg = "商户管理员账户被禁用"
	case 4284:
		msg = "商户不存在"
	case 4288:
		msg = "业务编号重复，请勿重复申请"
	case 4598:
		msg = "传入body中的list对象中的所有merchantId必须保持一致"
	case 4001:
		msg = "商户不存在"
	}
	return msg
}
