You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
473 lines
12 KiB
473 lines
12 KiB
/** |
|
* @NAME YH |
|
* @DATE 2019年2月24日10:41:28 |
|
* @INFO 钱包接口JS |
|
*/ |
|
define(['mui', 'app', 'ajaxUtil', 'jsencrypt'], function(mui, app, ajaxUtil, jsencrypt) { |
|
var ethUrl = app.ethBaseUrl; // ETH模块请求连接 |
|
var btcUrl = app.btcBaseUrl; // BTC模块请求连接 |
|
var eosUrl = app.eosBaseUrl; // EOS模块请求连接 |
|
var userUrl = app.walletBaseUrl; // 用户模块 |
|
// 请求方式 |
|
var type = { |
|
GET: "GET", |
|
POST: "POST" |
|
} |
|
// 钱包类型 |
|
var walletType = { |
|
CCT: "CCT", |
|
C2C: "C2C" |
|
} |
|
// 钱包公用API |
|
var baseApi = { |
|
// 获取公钥请求信息 |
|
AJAX_PULICKEY: { |
|
getUrl: ethUrl + "wallet/getPublicKey", |
|
getType: type.GET |
|
}, |
|
// 修改钱包资金密码接口 |
|
AJAX_SAVEPASS: { |
|
getUrl: ethUrl + "wallet/saveWalletPass", |
|
getType: type.POST |
|
}, |
|
// 查询是否绑定资金密码 |
|
AJAX_WALLETPASS: { |
|
getUrl: ethUrl + "wallet/existsPass", |
|
getType: type.GET |
|
}, |
|
// 获取修改资金密码的验证码 |
|
AJAX_SENDCODE: { |
|
getUrl: userUrl + "user/sendMoneyPasswordSmsg", |
|
getType: type.GET |
|
} |
|
} |
|
// 钱包API |
|
var walletApi = { |
|
eth: { |
|
//请求充值金額 |
|
WALLET_RECHARGE: { |
|
getUrl: ethUrl + "wallet/resetWallet", |
|
getType: type.POST |
|
}, |
|
//请求所有钱包信息 |
|
WALLET_INFOS: { |
|
getUrl: ethUrl + "wallet/getWallets", |
|
getType: type.GET |
|
}, |
|
//请求某种钱包币种信息 |
|
WALLET_INFO: { |
|
getUrl: ethUrl + "wallet/getWallet", |
|
getType: type.GET |
|
}, |
|
// 获取币种财务记录记录 |
|
WALLET_RECORD: { |
|
getUrl: ethUrl + "walletTransfer/getTransfer", |
|
getType: type.GET |
|
}, |
|
// 提现申请 |
|
WALLET_WITHDRAWDEPOSIT: { |
|
getUrl: ethUrl + "wallet/withdrawDeposit", |
|
getType: type.POST |
|
}, |
|
// 划转 |
|
WALLET_HANDLETRANSFER: { |
|
getUrl: ethUrl + "wallet/transfer", |
|
getType: type.POST |
|
}, |
|
// 提现申请手续费信息 |
|
WALLET_WITHDRAW_GAS: { |
|
getUrl: ethUrl + "walletParam/getGasConfig", |
|
getType: type.GET |
|
}, |
|
|
|
}, |
|
btc: { |
|
//请求充值金額 |
|
WALLET_RECHARGE: { |
|
getUrl: btcUrl + "wallet/resetWallet", |
|
getType: type.POST |
|
}, |
|
//请求所有钱包信息 |
|
WALLET_INFOS: { |
|
getUrl: btcUrl + "wallet/getWallets", |
|
getType: type.GET |
|
}, |
|
//请求某种钱包币种信息 |
|
WALLET_INFO: { |
|
getUrl: btcUrl + "wallet/getWallet", |
|
getType: type.GET |
|
}, |
|
// 获取币种财务记录记录 |
|
WALLET_RECORD: { |
|
getUrl: btcUrl + "walletTransfer/getTransfer", |
|
getType: type.GET |
|
}, |
|
// 提现申请 |
|
WALLET_WITHDRAWDEPOSIT: { |
|
getUrl: btcUrl + "walletTransfer/withdraw", |
|
getType: type.POST |
|
}, |
|
// 划转 |
|
WALLET_HANDLETRANSFER: { |
|
getUrl: btcUrl + "wallet/transfer", |
|
getType: type.POST |
|
}, |
|
// 提现申请手续费信息 |
|
WALLET_WITHDRAW_GAS: { |
|
getUrl: btcUrl + "walletParam/getGasConfig", |
|
getType: type.GET |
|
}, |
|
|
|
}, |
|
eos: { |
|
//请求充值金額 |
|
WALLET_RECHARGE: { |
|
getUrl: eosUrl + "wallet/resetWallet", |
|
getType: type.POST |
|
}, |
|
//请求所有钱包信息 |
|
WALLET_INFOS: { |
|
getUrl: eosUrl + "wallet/selectWalletByWalletType", |
|
getType: type.GET |
|
}, |
|
//请求某种钱包币种信息 |
|
WALLET_INFO: { |
|
getUrl: eosUrl + "wallet/selectWalletByTokenName", |
|
getType: type.GET |
|
}, |
|
// 获取币种财务记录记录 |
|
WALLET_RECORD: { |
|
getUrl: eosUrl + "walletTransfer/getTransfer", |
|
getType: type.GET |
|
}, |
|
// 获取EOS充值账号 |
|
WALLET_IN_USERNAME: { |
|
getUrl: eosUrl + "walletIn/listWalletInAccount", |
|
getType: type.POST |
|
}, |
|
// 提现申请 |
|
WALLET_WITHDRAWDEPOSIT: { |
|
getUrl: eosUrl + "wallet/withdrawDeposit", |
|
getType: type.POST |
|
}, |
|
// 划转 |
|
WALLET_HANDLETRANSFER: { |
|
getUrl: eosUrl + "wallet/transfer", |
|
getType: type.POST |
|
}, |
|
// 提现申请手续费信息 |
|
WALLET_WITHDRAW_GAS: { |
|
getUrl: eosUrl + "configWalletParam/selectConfigWalletParam", |
|
getType: type.GET |
|
}, |
|
}, |
|
} |
|
/** |
|
* 设置多个币种属于什么模块 |
|
* @param {Object} type |
|
* @param {Object} coins |
|
*/ |
|
function moduleTypes(type, coins) { |
|
coins || (coins = []); |
|
for(var i = 0; i < coins.length; i++) { |
|
moduleType(type, coins[i]); |
|
} |
|
return coins; |
|
} |
|
/** |
|
* 设置币种属于什么模块 |
|
* @param {Object} type |
|
* @param {Object} coins |
|
*/ |
|
function moduleType(type, coin) { |
|
console.log(JSON.stringify(coin)); |
|
coin.moduleType = type; |
|
coin.balance = app.formatValue(coin.balance); |
|
coin.freeBalance = app.formatValue(coin.freeBalance); |
|
coin.freezeBalance = app.formatValue(coin.freezeBalance); |
|
coin.src = '../img/coin/' + coin.tokenSymbol + '.png'; |
|
if('tokenId' in coin) { |
|
coin.tokenAddr = coin.tokenId; |
|
} |
|
if('tokenName' in coin) { |
|
coin.tokenAddr = coin.tokenName; |
|
} |
|
if(!('addr' in coin)) { |
|
coin.addr = ''; |
|
} |
|
return coin; |
|
} |
|
|
|
function baseGetWallet(type, fun) { |
|
// #请求数据 |
|
var obj = { |
|
btc: [], |
|
eth: [], |
|
eos: [] |
|
}; |
|
var count = 0; |
|
ajaxUtil.send(walletApi.eth.WALLET_INFOS, { |
|
walletType: type |
|
}).then(function(data) { |
|
obj.eth = moduleTypes('eth', data.data); |
|
count++; |
|
}, function() { |
|
count++; |
|
}); |
|
ajaxUtil.send(walletApi.btc.WALLET_INFOS, { |
|
walletType: type |
|
}).then(function(data) { |
|
obj.btc = moduleTypes('btc', data.data); |
|
count++; |
|
}, function() { |
|
count++; |
|
}); |
|
// EOS币种信息查询 |
|
ajaxUtil.send(walletApi.eos.WALLET_INFOS, { |
|
walletType: type |
|
}).then(function(data) { |
|
obj.eos = moduleTypes('eos', data.data); |
|
count++; |
|
}, function() { |
|
count++; |
|
}); |
|
// #数据同步处理,放进缓存 |
|
var time = 1000; |
|
setTimeout(function() { |
|
if(count >= Object.keys(obj).length) { |
|
var coins = obj.btc.concat(obj.eth).concat(obj.eos); |
|
for(var j = 0; j < coins.length; j++) { |
|
coins[j].coinIndex = j; |
|
} |
|
if(Object.is(type, walletType.CCT)) { |
|
app.setCoinWalletInfoLocalStorage(coins); |
|
} |
|
if(Object.is(type, walletType.C2C)) { |
|
app.setC2CCoinWalletInfoLocalStorage(coins); |
|
} |
|
fun(coins); |
|
} else { |
|
setTimeout(arguments.callee, time) |
|
} |
|
}, time); |
|
} |
|
return { |
|
SUCCESS_CODE: 200, |
|
walletType: walletType, |
|
/** |
|
* 获取CCT所有币种信息 |
|
* @param {Function} fun 回调方法 |
|
*/ |
|
getCCTWallets: function(fun) { |
|
baseGetWallet(walletType.CCT, fun) |
|
}, |
|
/** |
|
* 获取C2C所有币种信息 |
|
* @param {Function} fun 回调方法 |
|
*/ |
|
getC2CWallets: function(fun) { |
|
baseGetWallet(walletType.C2C, fun) |
|
}, |
|
/** |
|
* 获取CCT某种币种信息 |
|
* @param {Object} (moduleType 所属模块,tokenAddr 币种地址) |
|
* @param {Function} 回调方法 |
|
*/ |
|
getWallet: function(obj, fun) { |
|
console.log(JSON.stringify(obj)); |
|
var params = { |
|
eth: { |
|
tokenAddr: obj.tokenAddr |
|
}, |
|
eos: { |
|
tokenName: obj.tokenAddr |
|
}, |
|
btc: { |
|
tokenId: obj.tokenAddr |
|
} |
|
}; |
|
params[obj.moduleType].walletType = obj.walletType; |
|
ajaxUtil.send(walletApi[obj.moduleType].WALLET_INFO, params[obj.moduleType]).then(function(data) { |
|
console.log(JSON.stringify(data)); |
|
fun(moduleType(obj.moduleType, data.data)); |
|
}); |
|
}, |
|
|
|
//充值重置 |
|
getRecharge: function(obj, fun) { |
|
console.log(JSON.stringify(obj)); |
|
var params = { |
|
eth: { |
|
addr: obj.addr, |
|
walletType:obj.walletType, |
|
tokenId:obj.tokenId |
|
}, |
|
eos: { |
|
addr: obj.addr, |
|
walletType:obj.walletType, |
|
tokenId:obj.tokenId |
|
}, |
|
btc: { |
|
addr: obj.addr, |
|
walletType:obj.walletType, |
|
tokenId:obj.tokenId |
|
} |
|
}; |
|
ajaxUtil.send(walletApi[obj.moduleType].WALLET_RECHARGE, params[obj.moduleType]).then(function(data) { |
|
console.log(JSON.stringify(data)); |
|
fun(data); |
|
}); |
|
}, |
|
/** |
|
* 获取CCT某种币种的财务记录 |
|
* @param {Object} obj |
|
* @param {Object} fun |
|
*/ |
|
getWalletRecord: function(obj, fun) { |
|
var params = { |
|
eth: { |
|
tokenAddr: obj.tokenAddr |
|
}, |
|
eos: { |
|
tokenName: obj.tokenAddr |
|
}, |
|
btc: { |
|
tokenId: obj.tokenAddr |
|
} |
|
}; |
|
params[obj.moduleType].walletType = obj.walletType; |
|
params[obj.moduleType].pageNum = obj.pageNum; |
|
params[obj.moduleType].pageSize = obj.pageSize; |
|
ajaxUtil.send(walletApi[obj.moduleType].WALLET_RECORD, params[obj.moduleType]).then(function(data) { |
|
fun(data.data); |
|
}); |
|
}, |
|
|
|
/** |
|
* 获取CCT,EOS |
|
* @param {String} tokenName eos币种名称 |
|
* @param {Function} fun |
|
*/ |
|
getCCTEosInUserName: function(obj, fun) { |
|
ajaxUtil.send(walletApi.eos.WALLET_IN_USERNAME, obj).then(function(data) { |
|
fun(data.data); |
|
}); |
|
}, |
|
/** |
|
* CCT应用钱包的提现申请 |
|
* @param {Object} obj |
|
*/ |
|
withdrawDeposit: function(obj) { |
|
var params = { |
|
eth: { |
|
tokenAddr: obj.tokenAddr |
|
}, |
|
eos: { |
|
tokenName: obj.tokenAddr |
|
}, |
|
btc: { |
|
tokenId: obj.tokenAddr |
|
} |
|
}; |
|
params[obj.moduleType].walletType = obj.walletType; |
|
params[obj.moduleType].amount = obj.amount; // 提现余额 |
|
params[obj.moduleType].toAddr = obj.toAddr; // 接收地址 |
|
params[obj.moduleType].password = obj.password; // 密码 |
|
return ajaxUtil.send(walletApi[obj.moduleType].WALLET_WITHDRAWDEPOSIT, params[obj.moduleType]); |
|
}, |
|
|
|
/** |
|
* CCT提现手续费详情 |
|
* @param {String} tokenSymbol 名称 |
|
* @param {Function} fun |
|
*/ |
|
getCoinGasInfo: function(obj, fun) { |
|
ajaxUtil.send(walletApi[obj.moduleType].WALLET_WITHDRAW_GAS, { |
|
tokenSymbol: obj.tokenSymbol |
|
}).then(function(data) { |
|
fun(data.data); |
|
}); |
|
}, |
|
/** |
|
* 加密密码 |
|
* @param {String} pass 密码 |
|
* @param {Function} fun 回调方法 |
|
*/ |
|
getPublicKey: function(pass, fun) { |
|
ajaxUtil.send(baseApi.AJAX_PULICKEY).then(function(data) { |
|
var pulicData = data.data; |
|
var crypt = new JSEncrypt({ |
|
default_key_size: 1024 |
|
}); |
|
crypt.setPublicKey(pulicData); |
|
fun(crypt.encrypt(pass)); |
|
}); |
|
}, |
|
/** |
|
* 更新钱包密码 |
|
* @param {Object} obj |
|
* @param {Object} fun |
|
*/ |
|
saveWalletPass: function(obj, fun) { |
|
var curObj = this; |
|
//加密钱包密码 |
|
curObj.getPublicKey(obj.password, function(pass) { |
|
obj.password = pass; |
|
ajaxUtil.send(baseApi.AJAX_SAVEPASS, obj).then(function(data) { |
|
if(curObj.SUCCESS_CODE == data.code) { |
|
app.setIsWalletPassLocalStorage(true); |
|
} |
|
fun(data); |
|
}); |
|
}) |
|
}, |
|
/** |
|
* 查询是否设置资金密码 |
|
* |
|
*/ |
|
voidServieWalletPass: function(fun) { |
|
var curObj = this; |
|
ajaxUtil.send(baseApi.AJAX_WALLETPASS).then(function(data) { |
|
if(curObj.SUCCESS_CODE == data.code) { |
|
app.setIsWalletPassLocalStorage(data.data); |
|
if(fun != null) { |
|
fun(); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 发送资金密码的验证码 |
|
*/ |
|
getSendCode: function() { |
|
ajaxUtil.send(baseApi.AJAX_SENDCODE).then(function(data) { |
|
console.log(JSON.stringify(data)); |
|
}); |
|
}, |
|
/** |
|
* 划转 |
|
* @param {Object} data |
|
*/ |
|
handleTransfer: function(data, fun) { |
|
|
|
ajaxUtil.send(walletApi[data.moduleType].WALLET_HANDLETRANSFER, data).then(function(data) { |
|
fun(data); |
|
}); |
|
}, |
|
/** |
|
* 格式化 |
|
*/ |
|
formatValue: function(value, d) { |
|
if(value == "") return ""; |
|
if(parseFloat(value) == 0) return value; |
|
if(/^\.\.+/.test(value) || !/^\d.*/.test(value)) { |
|
return ""; |
|
} |
|
value = value.replace(/[^\d\.]/g, ""); //清除“数字”和“.”以外的字符 |
|
if(/\d+\.\d+/.test(value)) { |
|
return parseInt(parseFloat(value) * Math.pow(10, d)) / Math.pow(10, d); |
|
} |
|
return value; |
|
} |
|
} |
|
}) |