| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /**
- * 处理扫描的二维码链接
- * @param {string} qrUrl - 扫描到的二维码链接
- * @returns {Object} 解析后的二维码信息
- */
- function processQRCode(qrUrl) {
- // 解析URL参数
- const parseUrlParams = (url) => {
- try {
- const query = url.split('?')[1];
- if (!query) return {};
-
- return query.split('&').reduce((params, param) => {
- const [key, value] = param.split('=');
- if (key && value !== undefined) {
- params[key] = decodeURIComponent(value);
- }
- return params;
- }, {});
- } catch (e) {
- console.error('解析二维码链接失败:', e);
- return {};
- }
- };
- // 更新扫码次数(加1)
- const updateScanCount = (params) => {
- if (params.scanCount !== undefined) {
- params.scanCount = parseInt(params.scanCount || '0', 10) + 1;
- }
- return params;
- };
- // 确定来源类型和ID
- const determineSource = (params) => {
- if (params.employeeId) {
- return { type: 'employee', id: params.employeeId };
- } else if (params.ownerId) {
- return { type: 'owner', id: params.ownerId };
- } else if (params.partnerId) {
- return { type: 'partner', id: params.partnerId };
- }
- return { type: 'unknown', id: null };
- };
- // 主处理逻辑
- const params = parseUrlParams(qrUrl);
- if (!params.storeId) {
- throw new Error('无效的二维码:缺少店铺ID');
- }
- // 更新扫码次数
- const updatedParams = updateScanCount(params);
-
- // 确定来源
- const source = determineSource(updatedParams);
- return {
- storeId: updatedParams.storeId,
- sourceType: source.type,
- sourceId: source.id,
- scanCount: updatedParams.scanCount || 1,
- rawParams: updatedParams
- };
- }
- //加法
- function addNum(arg1, arg2) {
- arg1 = arg1 ? arg1 : 0
- arg2 = arg2 ? arg2 : 0
- let r1, r2, m, c;
- try {
- r1 = arg1.toString().split(".")[1].length;
- } catch (e) {
- r1 = 0;
- }
- try {
- r2 = arg2.toString().split(".")[1].length;
- } catch (e) {
- r2 = 0;
- }
- c = Math.abs(r1 - r2);
- m = Math.pow(10, Math.max(r1, r2));
- if (c > 0) {
- let cm = Math.pow(10, c);
- if (r1 > r2) {
- arg1 = Number(arg1.toString().replace(".", ""));
- arg2 = Number(arg2.toString().replace(".", "")) * cm;
- } else {
- arg1 = Number(arg1.toString().replace(".", "")) * cm;
- arg2 = Number(arg2.toString().replace(".", ""));
- }
- } else {
- arg1 = Number(arg1.toString().replace(".", ""));
- arg2 = Number(arg2.toString().replace(".", ""));
- }
- return (arg1 + arg2) / m;
- }
- //减法
- function subtraction(num1, num2) {
- var r1, r2, m, floatNum;
- try {
- r1 = num1.toString().split(".")[1].length;
- } catch (e) {
- r1 = 0;
- }
- try {
- r2 = num2.toString().split(".")[1].length;
- } catch (e) {
- r2 = 0;
- }
- m = Math.pow(10, Math.max(r1, r2));
- return (num1 * m - num2 * m) / m;
- }
- //相乘
- function multiply(arg1, arg2) {
- arg1 = arg1 ? arg1 : 0
- arg2 = arg2 ? arg2 : 0
- let r1, r2, m, c;
- try {
- r1 = arg1.toString().split(".")[1].length;
- } catch (e) {
- r1 = 0;
- }
- try {
- r2 = arg2.toString().split(".")[1].length;
- } catch (e) {
- r2 = 0;
- }
- c = Math.abs(r1 - r2);
- m = Math.pow(10, Math.max(r1, r2) * 2);
- if (c > 0) {
- let cm = Math.pow(10, c);
- if (r1 > r2) {
- arg1 = Number(arg1.toString().replace(".", ""));
- arg2 = Number(arg2.toString().replace(".", "")) * cm;
- } else {
- arg1 = Number(arg1.toString().replace(".", "")) * cm;
- arg2 = Number(arg2.toString().replace(".", ""));
- }
- } else {
- arg1 = Number(arg1.toString().replace(".", ""));
- arg2 = Number(arg2.toString().replace(".", ""));
- }
- return (arg1 * arg2) / m;
- }
- module.exports = {
- processQRCode,
- addNum,
- subtraction,
- multiply
- };
|