123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464 |
- /**
- * tabBar页面路径列表 (用于链接跳转时判断)
- * tabBarLinks为常量, 无需修改
- */
- const tabBarLinks = [
- 'pages/index/index',
- 'pages/category/index',
- 'pages/flow/index',
- 'pages/user/index'
- ];
- // 站点配置文件
- import siteinfo from './siteinfo.js';
- // 工具类
- import util from './utils/util.js';
- App({
- /**
- * 全局变量
- */
- globalData: {
- user_id: null,
- },
- // api地址
- api_root: siteinfo.siteroot + 'index.php?s=/api/',
- /**
- * 生命周期函数--监听小程序初始化
- */
- onLaunch(e) {
- let _this = this;
- // 小程序主动更新
- _this.updateManager();
- // 小程序启动场景
- _this.onStartupScene(e.query);
- },
- /**
- * 小程序启动场景
- */
- onStartupScene(query) {
- // 获取场景值
- let scene = this.getSceneData(query);
- // 记录推荐人id
- let refereeId = query.referee_id ? query.referee_id : scene.uid;
- refereeId > 0 && (this.saveRefereeId(refereeId));
- },
- /**
- * 获取商城ID
- */
- getWxappId() {
- return siteinfo.uniacid || 10001;
- },
- /**
- * 记录推荐人id
- */
- saveRefereeId(refereeId) {
- let App = this;
- refereeId = parseInt(refereeId);
- if (refereeId <= 0 || refereeId == App.getUserId()) {
- return false;
- }
- if (wx.getStorageSync('referee_id')) {
- return false;
- }
- wx.setStorageSync('referee_id', refereeId);
- return true;
- },
- /**
- * 获取场景值(scene)
- */
- getSceneData(query) {
- return query.scene ? util.scene_decode(query.scene) : {};
- },
- /**
- * 当小程序启动,或从后台进入前台显示,会触发 onShow
- */
- onShow(options) {
- let App = this;
- try {
- const livePlayer = requirePlugin('live-player-plugin');
- if (options.scene == 1007 || options.scene == 1008 || options.scene == 1044) {
- livePlayer.getShareParams()
- .then(res => {
- // 直播页面的自定义参数
- let customParams = res.custom_params;
- console.log('get custom params', customParams);
- // 记录推荐人ID
- if (customParams.hasOwnProperty('referee_id')) {
- App.saveRefereeId(customParams['referee_id']);
- }
- }).catch(err => {
- console.log('get share params', err)
- });
- }
- } catch (error) {
- }
- },
- /**
- * 执行用户登录
- */
- doLogin(delta) {
- // 保存当前页面
- let pages = getCurrentPages();
- if (pages.length) {
- let currentPage = pages[pages.length - 1];
- "pages/login/login" != currentPage.route &&
- wx.setStorageSync("currentPage", currentPage);
- }
- // 跳转授权页面
- wx.navigateTo({
- url: "/pages/login/login?delta=" + (delta || 1)
- });
- },
- /**
- * 当前用户id
- */
- getUserId() {
- return wx.getStorageSync('user_id');
- },
- /**
- * 显示成功提示框
- */
- showSuccess(msg, callback) {
- wx.showToast({
- title: msg,
- icon: 'success',
- mask: true,
- duration: 1500,
- success() {
- callback && (setTimeout(() => {
- callback();
- }, 1500));
- }
- });
- },
- /**
- * 显示失败提示框
- */
- showError(msg, callback) {
- wx.showModal({
- title: '友情提示',
- content: msg,
- showCancel: false,
- success(res) {
- // callback && (setTimeout(() => {
- // callback();
- // }, 1500));
- callback && callback();
- }
- });
- },
- /**
- * get请求
- */
- _get(url, data, success, fail, complete, check_login) {
- wx.showNavigationBarLoading();
- let _this = this;
- // 构造请求参数
- data = data || {};
- data.wxapp_id = _this.getWxappId();
- // if (typeof check_login === 'undefined')
- // check_login = true;
- // 构造get请求
- let request = () => {
- data.token = wx.getStorageSync('token');
- wx.request({
- url: _this.api_root + url,
- header: {
- 'content-type': 'application/json'
- },
- data: data,
- success(res) {
- if (res.statusCode !== 200 || typeof res.data !== 'object') {
- console.log(res);
- _this.showError('网络请求出错');
- return false;
- }
- if (res.data.code === -1) {
- // 登录态失效, 重新登录
- wx.hideNavigationBarLoading();
- _this.doLogin(2);
- } else if (res.data.code === 0) {
- _this.showError(res.data.msg, () => {
- fail && fail(res);
- });
- return false;
- } else {
- success && success(res.data);
- }
- },
- fail(res) {
- _this.showError(res.errMsg, () => {
- fail && fail(res);
- });
- },
- complete(res) {
- wx.hideNavigationBarLoading();
- complete && complete(res);
- },
- });
- };
- // 判断是否需要验证登录
- check_login ? _this.doLogin(request) : request();
- },
- /**
- * post提交
- */
- _post_form(url, data, success, fail, complete, isShowNavBarLoading) {
- let _this = this;
- isShowNavBarLoading || true;
- data.wxapp_id = _this.getWxappId();
- data.token = wx.getStorageSync('token');
- // 在当前页面显示导航条加载动画
- if (isShowNavBarLoading == true) {
- wx.showNavigationBarLoading();
- }
- wx.request({
- url: _this.api_root + url,
- header: {
- 'content-type': 'application/x-www-form-urlencoded',
- },
- method: 'POST',
- data: data,
- success(res) {
- if (res.statusCode !== 200 || typeof res.data !== 'object') {
- _this.showError('网络请求出错');
- return false;
- }
- if (res.data.code === -1) {
- // 登录态失效, 重新登录
- wx.hideNavigationBarLoading();
- _this.doLogin(1);
- return false;
- } else if (res.data.code === 0) {
- _this.showError(res.data.msg, () => {
- fail && fail(res);
- });
- return false;
- }
- success && success(res.data);
- },
- fail(res) {
- // console.log(res);
- _this.showError(res.errMsg, () => {
- fail && fail(res);
- });
- },
- complete(res) {
- wx.hideNavigationBarLoading();
- // wx.hideLoading();
- complete && complete(res);
- }
- });
- },
- /**
- * 验证是否存在user_info
- */
- validateUserInfo() {
- let user_info = wx.getStorageSync('user_info');
- return !!wx.getStorageSync('user_info');
- },
- /**
- * 小程序主动更新
- */
- updateManager() {
- if (!wx.canIUse('getUpdateManager')) {
- return false;
- }
- const updateManager = wx.getUpdateManager();
- updateManager.onCheckForUpdate(res => {
- // 请求完新版本信息的回调
- // console.log(res.hasUpdate)
- });
- updateManager.onUpdateReady(() => {
- wx.showModal({
- title: '更新提示',
- content: '新版本已经准备好,即将重启应用',
- showCancel: false,
- success(res) {
- if (res.confirm) {
- // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
- updateManager.applyUpdate()
- }
- }
- });
- });
- updateManager.onUpdateFailed(() => {
- // 新的版本下载失败
- wx.showModal({
- title: '更新提示',
- content: '新版本下载失败',
- showCancel: false
- })
- });
- },
- /**
- * 获取tabBar页面路径列表
- */
- getTabBarLinks() {
- return tabBarLinks;
- },
- /**
- * 跳转到指定页面
- * 支持tabBar页面
- */
- navigationTo(url) {
- if (!url || url.length == 0) {
- return false;
- }
- let tabBarLinks = this.getTabBarLinks();
- // tabBar页面
- if (tabBarLinks.indexOf(url) > -1) {
- wx.switchTab({
- url: '/' + url
- });
- } else {
- // 普通页面
- wx.navigateTo({
- url: '/' + url
- });
- }
- },
- /**
- * 记录formId
- * (因微信模板消息已下线,所以formId取消不再收集)
- */
- saveFormId(formId) {
- return true;
- // let _this = this;
- // console.log('saveFormId');
- // if (formId === 'the formId is a mock one') {
- // return false;
- // }
- // _this._post_form('wxapp.formId/save', {
- // formId: formId
- // }, null, null, null, false);
- },
- /**
- * 生成转发的url参数
- */
- getShareUrlParams(params) {
- let _this = this;
- return util.urlEncode(Object.assign({
- referee_id: _this.getUserId()
- }, params));
- },
- /**
- * 发起微信支付
- */
- wxPayment(option) {
- let options = Object.assign({
- payment: {},
- success: () => {},
- fail: () => {},
- complete: () => {},
- }, option);
- wx.requestPayment({
- timeStamp: options.payment.timeStamp,
- nonceStr: options.payment.nonceStr,
- package: 'prepay_id=' + options.payment.prepay_id,
- signType: 'MD5',
- paySign: options.payment.paySign,
- success(res) {
- options.success(res);
- },
- fail(res) {
- options.fail(res);
- },
- complete(res) {
- options.complete(res);
- }
- });
- },
- /**
- * 验证登录
- */
- checkIsLogin() {
- return wx.getStorageSync('token') != '' && wx.getStorageSync('user_id') != '';
- },
- /**
- * 授权登录
- */
- getUserInfo(userInfo, callback) {
- let App = this;
- wx.showLoading({
- title: "正在登录",
- mask: true
- });
- // 执行微信登录
- wx.login({
- success(res) {
- // 发送用户信息
- App._post_form('user/login', {
- code: res.code,
- user_info: JSON.stringify(userInfo),
- referee_id: wx.getStorageSync('referee_id')
- }, result => {
- // 记录token user_id
- wx.setStorageSync('token', result.data.token);
- wx.setStorageSync('user_id', result.data.user_id);
- // 执行回调函数
- callback && callback();
- }, false, () => {
- wx.hideLoading();
- });
- }
- });
- },
- /**
- * 记录购物车商品总数量
- * @param {*} value
- */
- setCartTotalNum(value) {
- wx.setStorageSync('cartTotalNum', Number(value))
- },
- /**
- * 设置购物车tabbar的角标
- */
- setCartTabBadge() {
- const number = wx.getStorageSync('cartTotalNum')
- if (number > 0) {
- wx.setTabBarBadge({
- index: 2,
- text: `${number}`
- })
- } else {
- wx.removeTabBarBadge({
- index: 2
- })
- }
- return
- }
- });
|