微信小程序的api的一些封装

let api = require('../config/api.js');

// 时间戳格式化yyyy-MM-dd HH:mm:ss
 
function fmtDate(obj) {
    
    
  let date = new Date(obj);
  let y = date.getFullYear();
  let m = date.getMonth() + 1;
  m = m < 10 ? ('0' + m) : m;
  let d = date.getDate();
  d = d < 10 ? ('0' + d) : d;
  let h = date.getHours();
  h = h < 10 ? ('0' + h) : h;
  let minute = date.getMinutes();
  let second = date.getSeconds();
  minute = minute < 10 ? ('0' + minute) : minute;
  second = second < 10 ? ('0' + second) : second;
  return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
}

// 时间戳格式化yyyy-MM-dd

function fmtDateStr(obj) {
    
    
  let date = new Date(obj);
  let y = date.getFullYear();
  let m = date.getMonth() + 1;
  m = m < 10 ? ('0' + m) : m;
  let d = date.getDate();
  d = d < 10 ? ('0' + d) : d;
  return y + '-' + m + '-' + d;
}

function diffDate(startTime, endTime) {
    
    
  let start_date = new Date(startTime.replace(/-/g, "/"));
  let end_date   = new Date(endTime.replace(/-/g, "/"));
  let days = end_date.getTime() - start_date.getTime();
  let day  = parseInt(days / (1000 * 60 * 60 * 24));
  
  return day;
}

// ArrayBuffer转16进度字符串示例
function ab2hex(buffer) {
    
    
  let hexArr = Array.prototype.map.call(
    new Uint8Array(buffer),
    function (bit) {
    
    
      return ('00' + bit.toString(16)).slice(-2)
    }
  )
  return hexArr.join('');
}

function formatTime(date) {
    
    
  let year = date.getFullYear()
  let month = date.getMonth() + 1
  let day = date.getDate()

  let hour = date.getHours()
  let minute = date.getMinutes()
  let second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}


function hideLoadingMsg() {
    
    
  wx.hideLoading()
}

function formatNumber(n) {
    
    
  n = n.toString()
  return n[1] ? n : '0' + n
}

// 封装微信的的request

function request(url, data = {
    
    }, method = "GET") {
    
    
  return new Promise( (resolve, reject)=> {
    
    
    wx.request({
    
    
      url: url,
      data: data,
      method: method,
      header: {
    
    
        'Content-Type': 'application/json',
        'X-Nideshop-Token': wx.getStorageSync('token')
      },
      success:  res=>{
    
    
        if (res.statusCode == 200) {
    
    
          if (res.data.errno == 401) {
    
    
            // showWarnToast1("请先登录")
            resolve(res);
          }
          // console.log(res.data)
          resolve(res.data);
        }
      },
      fail: err => {
    
    
        reject(err)
      }
    })
  });
}
// 调用微信登录

function loginByWeixin() {
    
    
  let code = null;
  return new Promise( (resolve, reject)=> {
    
    
    return login().then(res => {
    
    
      code = res.code;
      return getUserInfo();
    }).then(userInfo => {
    
    
      // console.log(userInfo);
      //登录远程服务器
      request(api.AuthLoginByWeixin, {
    
     code: code, userInfo: userInfo }, 'POST')
      .then(res => {
    
    
        if (res.errno === 0) {
    
    
          //存储用户信息
          wx.setStorageSync('userInfo', userInfo);
          wx.setStorageSync('token', res.data.token);
          wx.setStorageSync('userId', res.data.userId);

          resolve(res);
        } else {
    
    
          reject(res);
        }
      }).catch(err => {
    
    
        reject(err);
      });
    }).catch(err => {
    
    
      reject(err);
    })
  });
}
/**
 * 检查微信会话是否过期
 */
function checkSession() {
    
    
  return new Promise( (resolve, reject)=> {
    
    
    wx.checkSession({
    
    
      success:  ()=> {
    
    
        resolve(true);
      },
      fail:  ()=> {
    
    
        reject(false);
      }
    })
  });
}

/**
 * 调用微信登录
 */
function login() {
    
    
  return new Promise((resolve, reject) => {
    
    
    wx.login({
    
    
      success: res =>{
    
    
        if (res.code) {
    
    
          //登录远程服务器
          console.log(res)
          resolve(res);
        } else {
    
    
          reject(res);
        }
      },
      fail: err=> {
    
    
        reject(err);
      }
    });
  });
}

function getUserInfo() {
    
    
  return new Promise( (resolve, reject)=> {
    
    
    wx.getUserInfo({
    
    
      withCredentials: true,
      success:  (res)=> {
    
    
        // console.log("4");
        resolve(res);
      },
      
      fail:  (err)=> {
    
    
        // console.log("5");
        reject(err);
        // wx.navigateTo({
    
    
        //   url: '/pages/auth/auth/authSet',
        // })
      }
      /*fail: function () {
        //获取用户信息失败后。请跳转授权页面
        wx.showModal({
          title: '警告',
          content: '尚未进行授权,请点击确定跳转到授权页面进行授权。',
          success: function (res) {
            if (res.confirm) {
              console.log('用户点击确定')
              wx.navigateTo({
                url: '../tologin/tologin',
              })
            }
          }
        })
      }*/
    })
  });
}

function redirect(url) {
    
    
  //判断页面是否需要登录
  if (false) {
    
     //??????这里有问题??
    wx.redirectTo({
    
    
      url: '/pages/auth/login/login'
    });
    return false;
  } else {
    
    
    wx.redirectTo({
    
    
      url: url
    });
  }
}

function toast(msg){
    
    
  wx.showToast({
    
    
    title: msg,
    icon: 'none',
  });
    
}

function showToasMsg(msg) {
    
    
  wx.showLoading({
    
    
    title: msg,
  })
}

//失败提示
function showErrorToast(msg) {
    
    
  wx.showToast({
    
    
    title: msg,
    image: '/images/icon_fail.png'
  })
}

//警告提示
function showWarnToast(msg) {
    
    
  wx.showToast({
    
    
    title: msg,
    image: '/images/icon_warn.png'
  })
}

// 页面跳转提示
function showWarnToast1(msg) {
    
    
  wx.showToast({
    
    
    title: msg,
    image: '/images/icon_warn.png',
    success:  ()=> {
    
    
      setTimeout( ()=> {
    
    
        wx.navigateTo({
    
    
          url: '/pages/login/login',
        })
      }, 2000);
    }
  })
  return false;
}


module.exports = {
    
    
  formatTime,
  request,
  redirect,
  showErrorToast,
  showWarnToast,
  checkSession,
  login,
  getUserInfo,
  toast,
  showToasMsg,
  hideLoadingMsg,
  fmtDate,
  loginByWeixin,
  ab2hex,
  diffDate,
  fmtDateStr,
  showWarnToast1
}

猜你喜欢

转载自blog.csdn.net/ZHXT__/article/details/106769416
今日推荐