aozhiwei 879964800b 1
2022-04-20 20:54:18 +08:00

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;