move aiid2regcode/regcode2aiid to core.tool

This commit is contained in:
陆柯 2021-09-24 16:43:05 +08:00
parent a0a19ca83a
commit 67b38b6e7b

View File

@ -36,5 +36,55 @@ module.exports = {
.replace(/[tuv]/g, 8)
.replace(/[wxyz]/g, 9)
return parseInt(port)
},
/**
* 用户编号转邀请码
*
* @static
* @param {*} aiid
* @return {*}
* @memberof TICrypto
*/
aiid2regcode(aiid) {
const alphabet = 'e5fcdg3hqa4b1n0pij2rstuv67mwx89klyz'
const base = 16367
let num = (aiid + base) * (base - alphabet.length)
let code = ''
let mod
while (num > 0) {
mod = num % alphabet.length
num = (num - mod) / alphabet.length
code = code + alphabet[mod] // 倒序存放
}
return code
},
/**
* 邀请码转用户编号
*
* @static
* @param {*} code
* @return {*}
* @memberof TICrypto
*/
regcode2aiid(code) {
if (typeof code === 'string' && /^[a-zA-Z0-9]+$/.test(code)) {
const alphabet = 'e5fcdg3hqa4b1n0pij2rstuv67mwx89klyz'
const base = 16367
code = code.toLowerCase()
let len = code.length
let num = 0
for (let i = 0; i < len; i++) {
num += alphabet.indexOf(code[i]) * Math.pow(alphabet.length, i)
}
let aiid = num / (base - alphabet.length) - base
if (aiid >= 0 && Number.isInteger(aiid)) {
// 允许 aiid===0当第一个用户aiid==1登录时需要一个系统默认的邀请码。
return aiid
}
}
return null // null 代表一切非法的regcode
},
}