EP-WachatApp/eaterplanet_ecommerce/utils/util.js

707 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}