216 lines
4.1 KiB
JavaScript
216 lines
4.1 KiB
JavaScript
const fs = require('fs');
|
|
const events = require('events');
|
|
const axios = require('axios').default;
|
|
const C = require('./C');
|
|
|
|
const serverEnv = process.env['SERVER_ENV'];
|
|
|
|
const event = new events.EventEmitter();
|
|
|
|
function rspErr(rsp, errCode, errMsg) {
|
|
rsp.send(jsonEncode({
|
|
'errcode': errCode,
|
|
'errmsg': errMsg
|
|
}));
|
|
}
|
|
|
|
function rspOk(rsp) {
|
|
rsp.send(jsonEncode({
|
|
'errcode': 0,
|
|
'errmsg': ''
|
|
}));
|
|
}
|
|
|
|
function rspData(rsp, data) {
|
|
data['errcode'] = 0;
|
|
data['errmsg'] = '';
|
|
rsp.send(jsonEncode(data));
|
|
}
|
|
|
|
function readJsonFromFile(url) {
|
|
const jsondata = fs.readFileSync(url, "utf8");
|
|
const json = JSON.parse(jsondata);
|
|
return json;
|
|
}
|
|
|
|
async function sleep(timeout) {
|
|
return new Promise(function (resolve, reject) {
|
|
setTimeout(function () {
|
|
resolve();
|
|
}, timeout);
|
|
});
|
|
}
|
|
|
|
function emptyReplace(val, newVal) {
|
|
return !val ? newVal : val;
|
|
}
|
|
|
|
function throwError(msg) {
|
|
console.log(msg);
|
|
throw msg;
|
|
}
|
|
|
|
function isOnlineEnv() {
|
|
return !serverEnv;
|
|
}
|
|
|
|
function isTestEnv() {
|
|
return serverEnv == 'TEST';
|
|
}
|
|
|
|
function getUtcTime() {
|
|
return Math.floor((new Date()).getTime() / 1000);
|
|
}
|
|
|
|
function formatDate(date) {
|
|
const year = date.getFullYear();
|
|
const month = date.getMonth() + 1;//月份是从0开始的
|
|
const day = date.getDate();
|
|
const hour = date.getHours();
|
|
const min = date.getMinutes();
|
|
const sec = date.getSeconds();
|
|
return year + '-' +
|
|
(month < 10 ? '0' + month : month) + '-' +
|
|
(day < 10 ? '0' + day : day) + ' ' +
|
|
(hour < 10 ? '0' + hour : hour) + ':' +
|
|
(min < 10 ? '0' + min : min) + ':' +
|
|
(sec < 10 ? '0' + sec : sec);
|
|
}
|
|
|
|
function pad(num, n) {
|
|
let result = num.toString();
|
|
let len = result.length;
|
|
while (len < n) {
|
|
result = '0' + result;
|
|
len++;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function registerEventHandler(eventName, handler) {
|
|
event.on(eventName, handler);
|
|
}
|
|
|
|
function emitEvent(eventName, ...args) {
|
|
event.emit(eventName, ...args);
|
|
}
|
|
|
|
function randRange(min, max) {
|
|
if (min >= max) {
|
|
return min;
|
|
}
|
|
return min + Math.floor(Math.random() * (max - min));
|
|
}
|
|
|
|
function jsonEncode(obj) {
|
|
return JSON.stringify(obj);
|
|
}
|
|
|
|
function jsonDecode(jsonStr) {
|
|
try {
|
|
return JSON.parse(jsonStr);
|
|
} catch (err) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function httpGet(url, params) {
|
|
return new Promise((resolve) => {
|
|
const ret = {
|
|
err: null,
|
|
data: null,
|
|
};
|
|
axios({
|
|
method: 'get',
|
|
url: url,
|
|
timeout: 1000 * 10,
|
|
params: params,
|
|
responseType: 'text'
|
|
}).then((response) => {
|
|
ret.data = response;
|
|
resolve(ret);
|
|
}).catch((error) => {
|
|
ret.err = error;
|
|
resolve(ret);
|
|
});
|
|
});
|
|
}
|
|
|
|
function isSameAccount(a, b) {
|
|
return a.toLowerCase() == b.toLowerCase();
|
|
}
|
|
|
|
function getMintInstance(tokenType) {
|
|
switch (tokenType) {
|
|
case C.TOKEN_TYPE_HERO:
|
|
case C.TOKEN_TYPE_EQUIP:
|
|
case C.TOKEN_TYPE_CHIP:
|
|
{
|
|
return 'factoryInstance';
|
|
}
|
|
break;
|
|
case C.BLIND_BOX_TYPE_CHIP:
|
|
{
|
|
return 'boxproxyInstance';
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
return '';
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function getMintMethod(tokenType) {
|
|
switch (tokenType) {
|
|
case C.TOKEN_TYPE_HERO:
|
|
{
|
|
return 'mintHeroTo';
|
|
}
|
|
break;
|
|
case C.TOKEN_TYPE_EQUIP:
|
|
{
|
|
return 'mintEquipTo';
|
|
}
|
|
break;
|
|
case C.TOKEN_TYPE_CHIP:
|
|
{
|
|
return 'mintChipTo';
|
|
}
|
|
break;
|
|
case C.BLIND_BOX_TYPE_CHIP:
|
|
{
|
|
return 'mintBoxTo';
|
|
}
|
|
break;
|
|
default:
|
|
{
|
|
return '';
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
exports.rspErr = rspErr;
|
|
exports.rspOk = rspOk;
|
|
exports.rspData = rspData;
|
|
exports.readJsonFromFile = readJsonFromFile;
|
|
exports.sleep = sleep;
|
|
exports.emptyReplace = emptyReplace;
|
|
exports.throwError = throwError;
|
|
exports.isOnlineEnv = isOnlineEnv;
|
|
exports.isTestEnv = isTestEnv;
|
|
exports.getUtcTime = getUtcTime;
|
|
exports.formatDate = formatDate;
|
|
exports.pad = pad;
|
|
exports.registerEventHandler = registerEventHandler;
|
|
exports.emitEvent = emitEvent;
|
|
exports.randRange = randRange;
|
|
exports.jsonEncode = jsonEncode;
|
|
exports.jsonDecode = jsonDecode;
|
|
exports.httpGet = httpGet;
|
|
exports.isSameAccount = isSameAccount;
|
|
exports.getMintInstance = getMintInstance;
|
|
exports.getMintMethod = getMintMethod;
|