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

/**
* @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;
}
}
})