Service implement api or sdk of 3rd party.
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.
 

52 lines
1.3 KiB

'use strict';
const { appendFile } = require('node:fs/promises');
const md5 = require('md5');
class Common {
static sortDict(obj) { //dict按key排序
return Object.keys(obj).sort().reduce(function(result, key) {
result[key] = obj[key];
return result;
}, {});
}
static sign(params, token) { //对参数做MD5签名
return md5( JSON.stringify(Common.sortDict(params)) + token );
}
static isPhoneNumber(number) {
return /^1[3-9][0-9]{9}$/i.test(number);
}
static isVerifyCode(code) {
return /^[0-9]{4}$/i.test(code);
}
static getTimestampInSeconds() {
return Math.floor(Date.now() / 1000);
}
//复制参数对象
static copyBodyParams(dict, ignoreKeys) {
let params = {};
for (const key in dict) {
if (typeof(ignoreKeys) == 'undefined' || ignoreKeys.find((item) => item == key) == false) {
params[key] = dict[key];
}
}
return params;
}
static saveLog(filePath, content) {
try {
const promise = appendFile(filePath, content);
} catch (err) {
console.error(`log save to %s failed, exception: %s`, filePath, JSON.stringify(err));
}
}
}
exports.default = Common;