【发布时间】:2022-09-27 11:01:56
【问题描述】:
我正在尝试从 storeId 和 transactionId 生成编码的案卷编号。编码的案卷编号必须是唯一的,长度应 <=9 并且用户也易于阅读/复制。
storeId 的最大长度为 3,transactionId 的最大长度为 5。
如何改进我的代码,使我的案卷号码牢不可破?
这是我的代码:
let myTransKey = 19651;
let myStoreKey = 186;
function generateShortCode(storeId, transactionId) {
//reverse the ids and then add the respective key
var SID = storeId.toString().split(\"\").reverse().join(\"\");
SID = parseInt(SID) + myStoreKey;
var TID = transactionId.toString().split(\"\").reverse().join(\"\");
TID = parseInt(TID) + myTransKey;
var docketNum = `${SID}-${TID}`;
return docketNum;
}
function decodeShortCode(shortCode) {
shortCode = shortCode.split(\"-\");
var storeID = shortCode[0];
var transactionID = shortCode[1];
//subtract the same key and then reverse the ids again
storeID = parseInt(storeID.toString()) - myStoreKey;
storeID = storeID.toString().split(\"\").reverse().join(\"\");
transactionID = parseInt(transactionID.toString()) - myTransKey;
transactionID = transactionID.toString().split(\"\").reverse().join(\"\");
return {
storeId: parseInt(storeID), // store id goes here,
shopDate: new Date(), // the date the customer shopped,
transactionId: parseInt(transactionID) // transaction id goes here
};
}
有没有更好的方法来做到这一点?我需要将案卷编号编码为任何第三人都很难解码的案卷编号。 非常感谢您的帮助。
-
您想使用加密,而不是您使用的任何方法。
标签: javascript decode encode uniqueidentifier generate