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.

104 lines
2.3 KiB

import request from "@/utils/request";
import md5 from "md5";
function sortParams(params) {
return Object.keys(params)
.filter((k) => params[k] !== "") // 过滤空参数
.sort() // 排序
.reduce((obj, key) => {
obj[key] = params[key];
return obj;
}, {});
}
function sort_ASCII(obj) {
var arr = new Array();
var num = 0;
for (let i in obj) {
arr[num] = i;
num++;
}
var sortArr = arr.sort();
var sortObj = {};
for (let i in sortArr) {
sortObj[sortArr[i]] = obj[sortArr[i]];
}
return sortObj;
}
/**
* 排序参数并生成签名
*/
function generateSign(params = {}) {
// 随机字符串
const nonce_str = Math.random().toString(36).substr(2);
// 排序参数并转 URL 键值对
const strTemp = sortParams(Object.assign(params, { nonce_str }));
console.log(strTemp);
let arr = sort_ASCII(strTemp);
let str = "";
for (let key in arr) {
if (arr[key] || arr[key] === 0) {
str = str + key + "=" + arr[key] + "&";
}
}
console.log(str + "appKey=1f26fe1a6a36daf7651d6437bb6a5fa6");
// 生成 MD5 签名
let sign = md5(str + "appKey=1f26fe1a6a36daf7651d6437bb6a5fa6").toUpperCase();
// const sign = md5(
// `${strTemp}&appKey=1f26fe1a6a36daf7651d6437bb6a5fa6`
// ).toUpperCase();
return {
...params,
nonce_str,
sign,
};
}
// 获取店铺满减
export function getStoreDecrement(data) {
return request({
url: "/getStoreDecrement",
method: "post",
data: generateSign(data),
});
}
// 获取店铺优惠券
export function getStoreCoupon(data) {
return request({
url: "/getStoreCoupon",
method: "post",
data: generateSign(data),
});
}
// 保存店铺优惠券
export function saveStoreCoupon(data) {
return request({
url: "/saveStoreCoupon",
method: "post",
data: generateSign(data),
});
}
// 删除店铺优惠券
export function delStoreCoupon(data) {
return request({
url: "/delStoreCoupon",
method: "post",
data: generateSign(data),
});
}
// 保存店铺满减
export function saveStoreDecrement(data) {
return request({
url: "/saveStoreDecrement",
method: "post",
data: generateSign(data),
});
}
// 删除店铺满减
export function delStoreDecrement(data) {
return request({
url: "/delStoreDecrement",
method: "post",
data: generateSign(data),
});
}