EP-WachatApp/eaterplanet_ecommerce/utils/util.js

707 lines
19 KiB
JavaScript
Raw Normal View History

2023-03-24 11:24:28 +08:00
function getdomain() {
var app = getApp();
var new_domain = app.siteInfo.uniacid + '_' + app.siteInfo.siteroot;
var api = new_domain;
return api;
}
function api() {
var api = 'https://www.eaterplanet.com/api/';
return api;
}
function check_login() {
let token = wx.getStorageSync('token');
let member_id = wx.getStorageSync('member_id');
if (token && member_id != undefined && member_id.length > 0) {
return true;
} else {
return false;
}
}
/**
* 检查登录状态
* return promise [Boolean]
*/
function check_login_new() {
let token = wx.getStorageSync('token');
let member_id = wx.getStorageSync('member_id');
return new Promise(function (resolve, reject) {
wx.checkSession({
success() {
console.log('checkSession 未过期');
if (token && member_id != undefined && member_id.length > 0) {
resolve(true)
} else {
resolve(false)
}
},
fail() {
console.log('checkSession 过期');
resolve(false)
}
})
})
}
/**
* 检查跳转权限控制
* return [Boolean]
*/
function checkRedirectTo(url, needAuth) {
let status = false;
if (needAuth) {
const needAuthUrl = [
"/eaterplanet_ecommerce/moduleA/groupCenter/apply",
"/eaterplanet_ecommerce/pages/supply/apply",
"/eaterplanet_ecommerce/pages/user/charge",
"/eaterplanet_ecommerce/pages/order/index",
"/eaterplanet_ecommerce/moduleA/solitaire/index",
"/eaterplanet_ecommerce/moduleA/vip/upgrade",
"eaterplanet_ecommerce/moduleA/coupon/getCoupon"
];
let idx = needAuthUrl.indexOf(url);
if (idx !== -1) status = true;
}
return status;
}
/**
* s_link: 回调链接
* type跳转方式 0 redirectTo 1 switchTab
*/
function login(s_link, type = 0) {
var app = getApp();
var share_id = wx.getStorageSync('share_id');
if (share_id == undefined) {
share_id = '0';
}
wx.login({
success: function (res) {
if (res.code) {
console.log(res.code);
app.util.request({
'url': 'entry/wxapp/user',
'data': {
controller: 'user.applogin',
'code': res.code
},
dataType: 'json',
success: function (res) {
console.log(res);
wx.setStorage({
key: "token",
data: res.data.token
})
wx.getUserInfo({
success: function (msg) {
var userInfo = msg.userInfo
wx.setStorage({
key: "userInfo",
data: userInfo
})
console.log(msg.userInfo);
app.util.request({
'url': 'entry/wxapp/user',
'data': {
controller: 'user.applogin_do',
'token': res.data.token,
share_id: share_id,
nickName: msg.userInfo.nickName,
avatarUrl: msg.userInfo.avatarUrl,
encrypteddata: msg.encryptedData,
iv: msg.iv
},
method: 'post',
dataType: 'json',
success: function (res) {
wx.setStorage({
key: "member_id",
data: res.data.member_id
})
wx.showToast({
title: '资料已更新',
icon: 'success',
duration: 2000,
success: function () {
//s_link
if (s_link && s_link.length > 0) {
if (type == 1) {
wx.switchTab({
url: s_link,
})
} else {
wx.redirectTo({
url: s_link
})
}
}
}
})
}
})
},
fail: function (msg) {
// console.log(msg);
}
})
}
});
} else {
//console.log('获取用户登录态失败!' + res.errMsg)
}
}
})
}
function login_prosime(needPosition = true, userInfo = {}) {
return new Promise(function (resolve, reject) {
getCode().then(token => {
wxGetUserInfo(needPosition, token, userInfo).then(res => {
resolve(res)
}).catch(res => {
console.log(res);
reject(res)
});
})
})
}
function login_promise(needPosition = true, userInfo = {}) {
return new Promise(function (resolve, reject) {
getCode().then(token => {
let member_info = wx.getStorageSync('member_info')
console.log(typeof (member_info))
let wxGetUserInfoFunc = member_info !== null ? wxGetMemberInfo : wxGetUserInfo;
function handleResponse(res) {
resolve(res)
}
function handleError(res) {
reject(res)
}
wxGetUserInfoFunc(needPosition, token, userInfo, member_info).then(handleResponse).catch(handleError);
})
})
}
function getCode() {
return new Promise(function (resolve, reject) {
var app = getApp();
wx.login({
success: function (res) {
if (res.code) {
console.log(res.code);
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'user.applogin',
code: res.code
},
dataType: 'json',
success: function (res) {
resolve(res.data.token);
wx.setStorage({
key: "token",
data: res.data.token
})
wx.setStorage({
key: "member_info",
data: res.data.member_info
})
console.log(res.data)
}
});
} else {
reject(res.errMsg)
}
}
})
})
}
function wxGetMemberInfo(needPosition, token, userInfo, member_info) {
return new Promise(function (resolve, reject) {
var app = getApp();
var share_id = wx.getStorageSync('share_id');
var member_info = wx.getStorageSync('member_info');
if (share_id == undefined) {
share_id = '0';
}
var community = wx.getStorageSync('community');
var community_id = community && (community.communityId || 0);
community && wx.setStorageSync('lastCommunity', community);
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'user.applogin_do',
token,
member_info,
share_id: share_id,
nickName: member_info.username,
avatarUrl: member_info.avatar,
community_id
},
method: 'post',
dataType: 'json',
success: function (res) {
let isblack = res.data.isblack || 0;
let isparse_formdata = res.data.isparse_formdata || 0;
if (isblack == 1) {
app.globalData.isblack = 1;
wx.removeStorageSync('token');
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index',
})
} else if (isparse_formdata == 1) {
wx.setStorageSync('isparse_formdata', 1);
wx.setStorage({
key: "member_id",
data: res.data.member_id
})
wx.reLaunch({
url: '/eaterplanet_ecommerce/pages/index/index',
})
} else {
wx.setStorage({
key: "member_id",
data: res.data.member_id
})
console.log('needPosition', needPosition)
needPosition && getCommunityInfo();
}
resolve(res);
},
fail: (err) => {
console.log("9applogin_do")
reject(err);
}
})
})
}
function wxGetUserInfo(needPosition, token, userInfo) {
return new Promise(function (resolve, reject) {
var app = getApp();
var share_id = wx.getStorageSync('share_id');
if (share_id == undefined) {
share_id = '0';
}
var community = wx.getStorageSync('community');
var community_id = community && (community.communityId || 0);
community && wx.setStorageSync('lastCommunity', community);
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'user.applogin_do',
token,
share_id: share_id,
nickName: userInfo.nickName,
avatarUrl: userInfo.avatarUrl,
community_id
},
method: 'post',
dataType: 'json',
success: function (res) {
let isblack = res.data.isblack || 0;
let isparse_formdata = res.data.isparse_formdata || 0;
if (isblack == 1) {
app.globalData.isblack = 1;
wx.removeStorageSync('token');
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index',
})
} else if (isparse_formdata == 1) {
wx.setStorageSync('isparse_formdata', 1);
wx.setStorage({
key: "member_id",
data: res.data.member_id
})
wx.reLaunch({
url: '/eaterplanet_ecommerce/pages/index/index',
})
} else {
wx.setStorage({
key: "member_id",
data: res.data.member_id
})
console.log('needPosition', needPosition)
needPosition && getCommunityInfo();
}
resolve(res);
},
fail: (err) => {
reject(err);
}
})
})
}
function stringToJson(data) {
return JSON.parse(data);
}
function jsonToString(data) {
return JSON.stringify(data);
}
function imageUtil(e) {
var imageSize = {};
var originalWidth = e.detail.width; //图片原始宽
var originalHeight = e.detail.height; //图片原始高
var originalScale = originalHeight / originalWidth; //图片高宽比
//获取屏幕宽高
wx.getSystemInfo({
success: function (res) {
var windowWidth = res.windowWidth;
var windowHeight = res.windowHeight;
var windowscale = windowHeight / windowWidth; //屏幕高宽比
//console.log('windowWidth: ' + windowWidth)
//console.log('windowHeight: ' + windowHeight)
if (originalScale < windowscale) { //图片高宽比小于屏幕高宽比
//图片缩放后的宽为屏幕宽
imageSize.imageWidth = windowWidth;
imageSize.imageHeight = (windowWidth * originalHeight) / originalWidth;
} else { //图片高宽比大于屏幕高宽比
//图片缩放后的高为屏幕高
imageSize.imageHeight = windowHeight;
imageSize.imageWidth = (windowHeight * originalWidth) / originalHeight;
}
}
})
//console.log('缩放后的宽: ' + imageSize.imageWidth)
//console.log('缩放后的高: ' + imageSize.imageHeight)
return imageSize;
}
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
//获取社区存本地
const getCommunityInfo = function (param = {}) {
// let community = wx.getStorageSync('community');
let app = getApp();
// let that = this;
var token = wx.getStorageSync('token');
return new Promise(function (resolve, reject) {
// if (!community){
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'index.load_history_community',
token: token
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) {
let history_communities = res.data.list;
if (Object.keys(history_communities).length > 0 || history_communities.communityId != 0) {
wx.setStorageSync('community', history_communities);
app.globalData.community = history_communities;
resolve(history_communities);
} else {
resolve('');
}
} else if (res.data.code == 1) {
console.log(param)
if (check_login() && param.communityId === void 0) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/position/community',
})
resolve('');
} else {
resolve(param);
}
} else {
// 未登录
resolve('');
}
}
})
// } else {
// resolve('')
// }
})
}
/**
* 通过社区id获取社区信息
* 单社区控制
* data该id社区信息
* open_danhead_model是否开启单社区
* default_head_info 自定义单社区信息
*/
const getCommunityById = function (community_id) {
return new Promise(function (resolve, reject) {
getApp().util.request({
url: 'entry/wxapp/index',
data: {
controller: 'index.get_community_info',
community_id
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) resolve(res.data);
}
})
})
}
/**
* 历史社区
*/
const addhistory = function (community, isNew = false) {
var community_id = community.communityId;
console.log('addhistory');
var token = wx.getStorageSync('token');
getApp().util.request({
url: 'entry/wxapp/index',
data: {
controller: 'index.addhistory_community',
community_id,
token: token
},
dataType: 'json',
success: function (res) {
if (isNew) {
console.log('新人 社区')
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'index.get_community_info',
community_id: community_id
},
dataType: 'json',
success: function (result) {
if (result.data.code == 0) {
let community = result.data.data;
app.globalData.community = community;
app.globalData.changedCommunity = true;
wx.setStorage({
key: "community",
data: community
})
}
}
})
}
}
})
}
/**
* 获取wx的版本号
*/
const getWxVersion = function () {
return wx.getSystemInfoSync().SDKVersion
}
/**
* 微信版本比较 v1 大于 v2返回1否则返回 0
* @param {Object} v1
* @param {Object} v2
*/
const wxCompareVersion = function (v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i])
const num2 = parseInt(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
const addCart = function (option) {
return new Promise((resolve, reject) => {
let token = wx.getStorageSync('token');
getApp().util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.add',
token,
...option
},
dataType: 'json',
method: 'POST',
success: function (res) {
if (res.data.code == 7) {
let {
has_image,
pop_vipmember_buyimage
} = res.data;
if (has_image == 1 && pop_vipmember_buyimage) {
res.showVipModal = 1;
res.data.pop_vipmember_buyimage = pop_vipmember_buyimage;
resolve(res)
} else {
resolve(res)
}
} else {
resolve(res)
}
},
fail: function (res) {
reject(res)
}
})
})
}
const filterTel = function (shipping_tel) {
if (shipping_tel) {
var pat = /(\d{7})\d*(\d{0})/;
return shipping_tel.replace(pat, '$1****$2');
}
return shipping_tel;
}
/*函数节流*/
function throttle(fn, interval) {
var enterTime = 0; //触发的时间
var gapTime = interval || 300; //间隔时间如果interval不传则默认300ms
return function () {
var context = this;
var backTime = new Date(); //第一次函数return即触发的时间
if (backTime - enterTime > gapTime) {
fn.call(context, arguments);
enterTime = backTime; //赋值给第一次触发的时间,这样就保存了第二次触发的时间
}
};
}
/*函数防抖*/
function debounce(fn, interval) {
var timer;
var gapTime = interval || 1000; //间隔时间如果interval不传则默认1000ms
return function () {
clearTimeout(timer);
var context = this;
var args = arguments; //保存此处的arguments因为setTimeout是全局的arguments不是防抖函数需要的。
timer = setTimeout(function () {
fn.call(context, args);
}, gapTime);
};
}
const fileSystem = wx.getFileSystemManager()
/**
* 缓存图片
*/
const getStorageImage = (web_image) => {
return new Promise((resolve, reject) => {
let webImages = wx.getStorageSync('webImages') || []
let webImage = webImages.find(y => y.web_path === web_image)
if (webImage) {
try {
fileSystem.accessSync(webImage.local_path)
resolve(webImage.local_path)
return webImage.local_path
} catch (e) {
// let webImageIdx = webImages.findIndex(y => y.web_path === web_image)
// webImages.splice(webImageIdx, 1)
wx.setStorageSync('webImages', webImages)
}
resolve(web_image)
} else {
wx.downloadFile({
url: web_image,
success(res) {
if (res.statusCode === 200) {
let filePath = res.tempFilePath
// let webImageStorage = wx.getStorageSync('webImages') || []
let webImageStorage = []
wx.getImageInfo({
src: filePath,
success(ret) {
let windowWidth = getApp().globalData.systemInfo.windowWidth || 375;
let h = ret.height;
let w = ret.width;
let height = h * windowWidth / w;
let storage = {
web_path: web_image,
local_path: filePath,
height,
last_time: Date.parse(new Date()),
}
webImageStorage.push(storage)
wx.setStorageSync('webImages', webImageStorage)
resolve(web_image)
},
fail(err) {
console.log(err)
reject()
}
})
} else {
reject()
}
},
fail() {
reject()
}
})
}
// return web_image
})
}
module.exports = {
formatTime: formatTime,
login: login,
check_login: check_login,
api: api,
getdomain: getdomain,
imageUtil: imageUtil,
jsonToString: jsonToString,
stringToJson: stringToJson,
login_prosime,
login_promise,
wxGetMemberInfo,
getCommunityInfo,
check_login_new,
checkRedirectTo,
getCommunityById,
addhistory,
wxGetUserInfo,
getWxVersion,
wxCompareVersion,
addCart,
filterTel,
throttle,
debounce,
getStorageImage
}