userCenter.js 8.36 KB
import {API_HOST, SERVICE_HOST} from '../../libs/config';
import {GET, POST} from '../../libs/request';
import jumpToMiniapp from '../../router/jump-to-miniapp';
import wx from '../../utils/wx';
import { decodePhoneNumber, wechatLoginAction, getUnionID, decodeUnionId, openAuthorizeSettings, listen} from '../../utils/login';

const ACTION_TYPE = {
  GOBUY: 0,         //去购买
  CHECKODER: 1,     //查看订单
  APPLYACTIVITY: 2  //去报名
};

var app = getApp()

Page({
  data: {
    undoneTicket: [{
        undoneTips: '您还没有购票哦',
        buttonTips: '去购买',
        actionType: ACTION_TYPE.GOBUY,
      },
       {
        undoneTips: '您还有未完成的门票订单',
        buttonTips: '查看订单',
        actionType: ACTION_TYPE.CHECKODER,
    }],
    cur_undoneTicket: {},
    notJionActivity: {
      undoneTips: '您还没有报名活动哦',
      buttonTips: '去报名',
      actionType: ACTION_TYPE.APPLYACTIVITY,
    },
    noTicket: true,
    noActivity: true,
    array: [ { 'applyed': false, 'activityId': '123' }, { 'applyed': false, 'activityId': '456' }],

    isLogin: false,
    userInfo: {},
    hasUnionID: '',

  },
  onLoad: function(options) {
    //Do some initialize when page load.
    let cur_undoneTicket = this.data.undoneTicket[0];
  
    this.setData({
      hasUnionID: app.globalData.WXUnion_ID !== null && app.globalData.WXUnion_ID !== '' && app.globalData.WXUnion_ID !== undefined ? true:false,
      cur_undoneTicket
    })
    if (app.isLogin()) {
      this.data.isLogin = true;
    }else{
      this.setData({
        isLogin:false,
      })
    }

    //订阅登录完成通知
    listen(function (succeed) {
      if (succeed) {
        this.showUserInfo();
        this.getInfoNum();
        this.fetchInviteInfo();
      } 
    }.bind(this))
  },
  onReady: function() {
    //Do some when page ready.
    
  },
  onShow: function() {
    //Do some when page show.
    
  },

  //点击我的二维码
  tapMyQRCode() {

  },

  //跳全部订单
  jumpAllOrders() {
    jumpToMiniapp({ app: 'yohobuy', page: 'myOrders', data: {index:0} })
  },

  jumpMoreActivity() {
    wx.switchTab({
      url: '/pages/schedule/schedule',
    })
  },

  //按钮事件
  tapButton(e) {
    let actionType = e.detail;
    if (actionType == ACTION_TYPE.GOBUY) {//去购买
      jumpToMiniapp({ app: 'yohobuy', page: 'productDetail', data: {productSkn:'51905732'} })

    } else if (actionType == ACTION_TYPE.CHECKODER) {//查看订单
      jumpToMiniapp({ app: 'yohobuy', page: 'myOrders', data: {index:1} })

    } else if (actionType == ACTION_TYPE.APPLYACTIVITY) {//去报名
      wx.switchTab({
        url: '/pages/schedule/schedule',
      })
    }
  },

  showUserInfo: function() {
    // console.log("uid:", app.getUid())
    if (app.getUid()) {
      let param = {
        method: "app.passport.profile",
        uid: app.getUid()
      }
      GET(API_HOST, param)
        .then((json) => {
          if (json && json.code && json.code == 200) {
            this.data.userInfo = app.globalData.userInfo;
            this.data.userInfo.nickName = json.data.nickname;
            this.data.userInfo.avatarUrl = (!json.data.head_ico ? "../../static/images/mine_default_head.png" : this.formatImgUrl(json.data.head_ico))
            this.setData({
              userInfo: this.data.userInfo,
              isLogin:true
            })
          }else{
            this.setData({
              isLogin:false
            })
          }
        })
        .catch(error => {
          // console.log(error);
          this.setData({
            isLogin: false
          })
        })
    }
    else {
      let userInfo = app.globalData.userInfo;
      this.setData({
        userInfo
      })
      this.setData({
        isLogin: false
      })
    }
  },

  getUserInfo: function (e) {
    var that = this;
    // console.log(e);
    if (e.detail.errMsg === 'getUserInfo:ok'){
      decodeUnionId(app.getWechatThirdSession(),e,function (response){
          if (response.isHaveUnionID){
            that.setData({
              hasUnionID: true,
            });
          } else {
            // console.log("没有获取到unionid");
          }
      });
    } else {
      openAuthorizeSettings(function (response) {
        if (response.isHaveUnionID) {
          that.setData({
            hasUnionID: true,
          })
        };
        if (response.succeed === true) {
          that.showUserInfo();
        } else {
          // console.log("根据unionid没有查询到uid,需要再次点击授权getPhoneNumber")
        }
      });
    }
  },

  getPhoneNumber: function (e) {
    var app = getApp()
    var that = this;
    // console.log('getPhoneNumber',e);
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      decodePhoneNumber(e.detail.iv, e.detail.encryptedData, '',function (result) {
        if (result.code != 200) {
          // console.log('result.code',result.code);
            that.wetoast.toast({
              title: result.message,
              titleClassName: 'wetoast-title',
              duration: 1000,
              success:function(){
                that.loginAndRegisterTapped()
              }.bind(that)
            });

        } else {
          if (result.is_register){
            that.showZanToast({ title: '欢迎加入Yoho!Family!新人礼包已发放到个人中心-优惠券,请注意查收',success:function(){
              let uid = app.globalData.userInfo.uid > 0 ? app.globalData.userInfo.uid : 0;
              app.updateUid(uid)
              that.setData({ uid });
              that.showUserInfo();
            }},1500);
          } else {
          let uid = app.globalData.userInfo.uid > 0 ? app.globalData.userInfo.uid : 0;
          app.updateUid(uid)
          that.setData({ uid });
          that.showUserInfo();
          }
        }
      })
    } else {
      wx.navigateTo({
        url: '../bindPhoneNumber/bindPhoneNumber',
      })
    }
  },

  loginAndRegisterTapped:function() {
    // console.log("loginAndRegisterTapped");
    let that = this;
    let app = getApp()
    if (wx.getSetting) {
      wx.getSetting({
        success: (res) => {
          // console.log("userInfo:", res.authSetting["scope.userInfo"])
          if (res.authSetting["scope.userInfo"] !== null && res.authSetting["scope.userInfo"] !== undefined && res.authSetting["scope.userInfo"] === false) {
            wx.showModal({
              title: '',
              content: '检测到您未打开微信用户信息授权,开启后即可进行登录',
              confirmText: "去开启",
              confirmColor: "#000000",
              success: function (res) {
                if (res.confirm) {
                  wx.openSetting({
                    success: (res) => {
                      // console.log(res.authSetting["scope.userInfo"])
                      if (res.authSetting["scope.userInfo"] !== null && res.authSetting["scope.userInfo"] !== undefined && res.authSetting["scope.userInfo"] === true) {
                        getUnionID(app.getWechatThirdSession(), function (response) {
                          if (response.succeed === true) {
                            that.showUserInfo();
                          }
                        })
                      }
                    }
                  })
                } else {
                  wx.navigateTo({
                    url: '../bindPhoneNumber/bindPhoneNumber',
                  })
                }
              }
            })
          } else {
            wx.navigateTo({
              url: '../bindPhoneNumber/bindPhoneNumber',
            })
          }
        }
      })
    } else {
      wx.showModal({
        title: '提示',
        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
      })
    }
  },
  updateUserInfo() {
    if (app.isLogin()) {
      // this.data.isLogin = true;
      this.setData({
        isLogin: true,
      })
      this.showUserInfo();
    } else {
      this.setData({
        isLogin: false,
      })
    }
  },

  formatImgUrl: function(url) {
    url = url.replace(new RegExp('{width}', 'gm'), '120').replace(new RegExp('{height}', 'gm'), '120').replace(new RegExp('{mode}', 'gm'), '1');
    return url;
  },
  onHide: function() {
    //Do some when page hide.
    
  },
  onUnload: function() {
    //Do some when page unload.
    
  },
  onPullDownRefresh: function() {
    //Do some when page pull down.
    
  }
})