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

const { extend, Toast } = require('../../vendors/zanui/index');

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

var app = getApp()

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

    isLogin: false,
    userInfo: {},
    hasUnionID: '',
    isShowPopup: false,
    registerTips: '欢迎加入Yoho!Family!',

    ticketData: [],
    onActivityList: [],//正在进行的活动
    offActivityList: [],//已结束的活动
  },
  onLoad: function(options) {
    new app.WeToast();
    //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
    })

    //订阅登录完成通知
    listen(function (succeed) {
      if (succeed) {
        this.showUserInfo();
      } 
    }.bind(this))

  },
  onReady: function() {
    //Do some when page ready.
  },
  onShow: function() {
    //Do some when page show.
    if (app.isLogin()) {
      this.setData({
        isLogin: true,
      })
      this.showUserInfo();
      this.fetchTicketInfo();
      this.fetchMyActivityList();
    }else{
      this.setData({
        isLogin: false,
      })
    }
  },

  fetchTicketInfo() {
    if (app.getUid()) {
      let that = this;
      let param = {
        method: "app.SpaceOrders.yohood.ticket.list",
        uid: app.getUid()
      }
      GET(API_HOST, param)
        .then((json) => {
          if (json && json.code && json.code == 200 && json.data) {
            let waitPayNum = json.data.waitPayNum;//待支付的订单个数
            let ticketData = json.data.ticketsQrs;//门票信息
            
            let cur_undoneTicket = this.data.undoneTicket[0];
            if (waitPayNum > 0) {
              cur_undoneTicket = this.data.undoneTicket[1];
            }
            that.setData({
              ticketData,
              cur_undoneTicket,
              waitPayNum
            })
          }
        })
        .catch(error => {

        })
    }
  },

  fetchMyActivityList() {
    if (app.getUid()) {
      let that = this;
      let param = {
        uid: app.getUid()
      }
      GET(YOHOOD_HOST + '/activity/userActivityLists', param)
        .then((json) => {
          if (json && json.code && json.code == 200) {
            let onActivityList = json.data['on'];
            let offActivityList = json.data['off'];

            that.setData({
              onActivityList,
              offActivityList
            })
          }
        })
        .catch(error => {

        })
    }
  },

  //点击我的二维码
  tapMyQRCode() {
    let url = '../webview/webview?url='+ YOHOBUY_HOST + '/home/user/qrcode' + '&hideShareMenu=true';
    wx.navigateTo({
      url,
    })
  },

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

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

  //按钮事件
  tapButton(e) {
    let actionType = e.detail;
    if (actionType == ACTION_TYPE.GOBUY) {//去购买
      //跳有货精选,yohood店铺,店铺id:1294
      jumpToMiniapp({ app: 'yohobuy', page: 'shopDetail', data: {shop_id: '1294'} })

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

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

  //调活动详情
  jumpActivityetail(e) {
    let articleId = e.detail.articleId || '';
    wx.navigateTo({
      url: '/pages/activity/activityDetail?id=' + articleId
    });
  },

  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,
              complete:function(){
                that.loginAndRegisterTapped()
              }.bind(that)
            });

        } else {
          if (result.is_register){
            let uid = app.globalData.userInfo.uid > 0 ? app.globalData.userInfo.uid : 0;
            that.setData({ 
              uid,
              isShowPopup: true,
            });
          } 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',
      })
    }
  },

  //注册后上传并获取用户信息
  registerToGetUserInfo(e) {
    let that = this;
    decodeUnionId(app.getWechatThirdSession(),e.detail, function (response){  
      if (response.isHaveUnionID){
        that.setData({
          hasUnionID: true,
          isLogin:true
        });
      } else {
        // console.log("没有获取到unionid");
      }
    });

    let userInfo = JSON.parse(e.detail.detail.rawData);
    let nickName = userInfo.nickName;
    if (nickName) {
      modifyNickName(nickName, function (response){
        if (response.succeed){
          that.showUserInfo();
        } else {

        }
      });
    }
  },

  loginAndRegisterTapped:function() {
    // console.log("loginAndRegisterTapped");
    let that = this;
    let app = getApp()
    if (wx.getSetting) {
      wx.getSetting({
        complete: (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.
    wx.stopPullDownRefresh();

    this.fetchTicketInfo();
    this.fetchMyActivityList();
  }
}))