小程序app.js

本文详细介绍了小程序中用户登录流程及用户信息更新的方法。包括登录接口调用、用户信息获取与存储、用户权限刷新及手机号获取等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//app.js
var webim = require('utils/webim_wx.js');
var webimhandler = require('utils/webim_handler.js');
const finalUrl = 'http://localhost:8387/wizardlisa';
App({
  onLaunch: function (opion) {
    var that = this
    // //设置下方tabbar
    // wx.setTabBarItem({
    //   index: 1,
    //   text: that.globalData.companyProfile,
    // })
    //用户初始化进来方式
    that.globalData.source = opion.scene
  },
  //用户登陆================================================================================================================
  userLogin: function () {
    //公共链接
    var that = this;
    return new Promise(function (resolve, reject) {
      // 调用登录接口
      wx.login({
        success: function (res) {
          that.globalData.hasLogin = true//判断是否登录
          if (res.code) {
            //获取用户信息
            wx.request({
              url: finalUrl + '/mpLogin/decodeUser',
              data: {
                code: res.code,
                source: that.globalData.source,
                sourceChannelFlag: that.globalData.sourceChannelFlag,
                wxCompanyId: that.globalData.wxCompanyId,
                wxCompanySalesId: that.globalData.wxCompanySalesId,
              },
              method: 'POST',
              header: { 'content-Type': 'application/json' },
              success: function (res1) {
                wx.setStorageSync('openid', res1.data.validateMap.openid)//存放用户微信唯一字段
                wx.setStorageSync('api_key', res1.data.validateMap.apiKey)//存放用户微信唯一字段
                wx.setStorageSync('sys_source', res1.data.validateMap.sysSource)//存放用户微信唯一字段
                wx.setStorageSync('sessionkey', res1.data.validateMap.sessionkey)//存放用户微信唯一字段
                //判断当前用户是否为销售
                if (res1.data.validateMap.wxUserIdentityFlag == '2') {
                  that.globalData.wxUserIdentityFlag = true;
                  wx.setStorageSync('wxUserIdentityFlag', true);
                } else {
                  that.globalData.wxUserIdentityFlag = false;
                  wx.setStorageSync('wxUserIdentityFlag', false);
                }
                //销售身份赋值对应后台账户的用户等级
                if (res1.data.validateMap.splUserLevel && res1.data.validateMap.splUserLevel != 'null') {
                  that.globalData.splUserLevel = res1.data.validateMap.splUserLevel;
                }
                //判断当前小程序用户 是否绑定销售用户
                if (res1.data.validateMap.wxCompanySalesId && res1.data.validateMap.wxCompanySalesId != 'null') {
                  that.globalData.wxCompanySalesId = res1.data.validateMap.wxCompanySalesId
                } else {
                  that.globalData.wxCompanySalesId = "";
                }
                //当前小程序用户绑定的手机号
                if (res1.data.validateMap.phoneNum && res1.data.validateMap.phoneNum != "null") {
                  that.globalData.phoneNum = res1.data.validateMap.phoneNum;
                } else {
                  that.globalData.phoneNum = '';
                }
                //当前小程序公司 特殊箱子运价展示标识
                if (res1.data.validateMap.containerFclShowFlag && res1.data.validateMap.containerFclShowFlag!="null"){
                  that.globalData.containerFclShowFlag = res1.data.validateMap.containerFclShowFlag;
                }
                //当前小程序公司 是否公开使用小程序标识   1:内部使用   2:公开使用
                if (res1.data.validateMap.programJurisdictionFlag && res1.data.validateMap.programJurisdictionFlag != "null") {
                  that.globalData.programJurisdictionFlag = res1.data.validateMap.programJurisdictionFlag;
                }
                //当前用户的主键id 赋值
                that.globalData.userId = res1.data.validateMap.userId;
                //当前用户是否在 黑名单中 标识
                that.globalData.blacklistFlag = res1.data.validateMap.blacklistFlag;
                //腾讯云IM签名
                that.globalData.userSig = res1.data.validateMap.userSig;
                //腾讯云IMSDKID
                that.globalData.sdkappid = res1.data.validateMap.sdkappid;
                //腾讯云IM模式
                that.globalData.accountType = res1.data.validateMap.accountType;
                var res = { status: 200 }
                resolve(res);//登陆成功
              }
            })
          } else {
            var res = { status: 300 }
            reject(res);//登陆失败
          }
        }
      })
    });
  },


  //2018-07-12 新版本【同意授权】之后的更新用户信息通用方法 =============================================================================================
  newAuthorizeUpdateUserInfo: function (res) {
    var that = this;
    wx.setStorageSync('hasempower', false)
    that.globalData.userInfo = res.detail.userInfo
    that.globalData.hasUserInfo = true
    var data = {
      openid: wx.getStorageSync("openid"),
      nickname: res.detail.userInfo.nickName,
      headPic: res.detail.userInfo.avatarUrl,
      source: that.globalData.source,
      companyId: that.globalData.wxCompanyId,
    }
    //用户信息补录
    wx.request({
      url: finalUrl + '/mpLogin/updateUser',
      data: data,
      method: 'POST',
      header: {
        'content-Type': 'application/json',
        'Authorization': wx.getStorageSync('api_key'),
        'sys_source': wx.getStorageSync('sys_source'),
      },
      success: function (res2) {
        if (res2.data.code == 1) {
          wx.setStorageSync('api_key', res2.data.validateMap.apiKey)//存放用户微信唯一字段
          wx.setStorageSync('hasempower', false)//true的时候未获取头像  
        }
      }
    });
    //设置IM 用户用户昵称 头像
    webimhandler.setProfilePortrait({
      'ProfileItem': [{
        "Tag": "Tag_Profile_IM_Nick",
        "Value": res.detail.userInfo.nickName ? res.detail.userInfo.nickName : "游客"
      },
      {
        "Tag": "Tag_Profile_IM_Image",
        "Value": res.detail.userInfo.avatarUrl ? res.detail.userInfo.avatarUrl : ''
      }
      ]
    }, function () {
      console.log("==========小程序用户允许授权成功后,设置 IM 账户")
    })
  },

  //刷新用户权限  (vip权限 & 用户角色)  (目前同属新缓存 调用接口一样)
  refreshUserAuth: function () {
    //公共链接
    var that = this;
    return new Promise(function (resolve, reject) {
      wx.request({
        url: finalUrl + '/mpLogin/reFreshStorges',
        data: {},
        method: 'POST',
        header: {
          'content-Type': 'application/json',
          'Authorization': wx.getStorageSync('api_key'),
          'sys_source': wx.getStorageSync('sys_source'),
        },
        success: function (res) {
          if (res && res.data && res.data.apiKey) { //这里代表返回正常数据了
            //判断用户是否在黑名单中
            that.globalData.blacklistFlag = res.data.blacklistFlag ? res.data.blacklistFlag:2;
            //用户类型
            if (res.data.wxUserIdentityFlag == true) {//销售身份
              that.globalData.wxUserIdentityFlag = true;
              wx.setStorageSync('wxUserIdentityFlag', true);
            } else {
              that.globalData.wxUserIdentityFlag = false;
              wx.setStorageSync('wxUserIdentityFlag', false);
              wx.removeTabBarBadge({
                index: 3
              })
            }
            //销售身份赋值对应后台账户的用户等级
            if (res.data.splUserLevel && res.data.splUserLevel != 'null') {
              that.globalData.splUserLevel = res.data.splUserLevel;
            }
            //绑定的销售id
            that.globalData.wxCompanySalesId = res.data.wxCompanySalesId ? res.data.wxCompanySalesId:"";
            //修改缓存api_key
            wx.setStorageSync('api_key', res.data.apiKey) //存放用户微信唯一字段
            var res = { status: 200 }
            resolve(res);
          }else{
            var res = { status: 300 }
            reject(res);
          }
        }
      });
    });
  },
  //获取用户手机号  
  getbindphonenum: function (data) {
    //公共链接
    var that = this;
    return new Promise(function (resolve, reject) {
      wx.request({
        url: finalUrl + '/mpLogin/getBindPhoneNum',
        data: data,
        method: 'POST',
        header: {
          'content-Type': 'application/json',
          'Authorization': wx.getStorageSync('api_key'),
          'sys_source': wx.getStorageSync('sys_source'),
        },
        success: function (res) {
          console.log(res);
          console.log("=============================================111111111")
          if (res.data.phoneNum){//授权获取到手机号
            console.log("=============================================222222222")
            //当前用户是否在 黑名单中 标识
            that.globalData.blacklistFlag = res.data.blacklistFlag;
            console.log("=============================================333333333")
            //判断记录用户积分===========
            wx.request({
              url: finalUrl + '/mplogin/savepoints',
              data: {},
              method: 'POST',
              header: {
                'content-type': 'application/json',
                'Authorization': res.data.apiKey,
                'sys_source': wx.getStorageSync('sys_source'),
              },
            })
          }
          console.log("=============================================444444444")
          resolve(res);
          console.log("=============================================555555555")

        },
        fail: function (reserr){
          reject(reserr);
        }
      });
    });
  },


  globalData: {
    source: '',                //用户进入小程序方式(场景值)
    sourceChannelFlag:1,       //用户来源渠道 默认搜索小程序进入
    userId: '',                //当前登陆用户的后台主键Id
    userInfo: {},              //用户信息(这不是完整的用户信息,只是调微信接口赋值的用户信息)
    hasLogin: false,           //用户是否登陆标记
    hasUserInfo: false,        //是否有用户信息
    phoneNum: '',              //当前登陆用户绑定的手机号
    blacklistFlag:2,           //是否在黑名单中 1:是 2:否

    wxCompanySalesId: '',       //客户绑定公司的销售对应的id (这里主要针对 扫码,分享 中的salesId)
    wxUserIdentityFlag: false,  //当前微信用户身份标记 (是否为销售标记)
    splUserLevel: '-1',         //销售身份对应的后台账户用户等级    -1:小程序普通用户  0:BOSS 1:商务 2:销售

    wxCompanyId: 1,             //当前小程序所属公司
    containerFclShowFlag:0,     //当前小程序公司特殊箱子运价展示标识
    programJurisdictionFlag:2,  //1:内部使用 2:公开使用(默认值)

    startPortId: 2,             //全局默认的起始港
    startPortNameEn: 'QINGDAO', //全局默认的起始港英文名

    sdkappid: '',               // 填入创建腾讯云通讯应用获取到的 sdkappid
    accountType: '',            // 填入在帐号体系集成配置中获取到的 accountType
    userSig:"",                 //用户签名

                                // companyProfile: '一米阳光', //设置底层tabbar名称(公司简介)
    mpName: "一米阳光",           //小程序名称

  }
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值