service.js 8.91 KB
export default {
  getUnionId,
  // checkSession,
  getBadWords,
  checkBadWords,
  checkEmptyInput,
  confirmInputCheck,
  correctTime,
  formatDate,
  filter,
  Input,
  UploadBug
}

const emojiFilterReg = new RegExp(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/gi)

function getUnionId(rootAvatar,rootUrl) {
  return new Promise((resolve, reject) => {
    //汉阳司法参数
    const appid = 'wx7464eebd59834865'
    const secret = '6d22e93d7c24a73e046da9f7f3be1934'
    //2019-09-24 美新瑞杰 参数
    // const appid = 'wxf3facb3d77b07b8b'
    // const secret = 'e8d6cd96dcb9d2b2b697e52e17cd50da'
    wxLogin(rootUrl,appid, secret).then(e => {
      console.log(e)
      if (e.openid) {
        wx.setStorageSync('openid', e.openid)
        getSetting().then(e => {
          console.log(e)
          if (e == 'deny') wx.redirectTo({ url: '../welcome/main' })
          else {
            wx.getUserInfo({
              success: res => {
                wx.setStorageSync('wxInfo', res.userInfo)
                setUserInfo(
                    rootUrl,
                    appid,
                    wx.getStorageSync('openid'),
                    res.userInfo.nickName
                  )
                  .then(e => {
                    if(e.lawyerstate == 0 ) {
                      wx.showModal({title:'',content:'当前账号已被禁用,请切换账号登录',showCancel:false})
                      wx.redirectTo({ url: '../verify/main' })
                    } else if (e.status == '200') {
                      console.log('200')
                      wx.setStorageSync('isLogin', true)
                      wx.setStorageSync('isVerify', true)
                      wx.setStorageSync('sessionID', e.sessionID)
                      const userInfo = {
                        avatarUrl: rootAvatar + e.avatar,
                        nickName: e.uname
                      }
                      wx.request({
                        url: rootUrl + '/law/myinfo',
                        data: { sessionID: e.sessionID },
                        success: res => {
                          const userInfo_New = Object.assign(
                            userInfo,
                            res.data[0]
                          )
                          wx.setStorageSync('userInfo', userInfo_New)
                          resolve('verified')
                        }
                      })
                    } else if (e.status == '300') {
                      console.log('300')
                      wx.setStorageSync('isLogin', true)
                      wx.setStorageSync('isVerify', false)
                      wx.setStorageSync('sessionID', e.sessionID)
                      wx.removeStorageSync('userInfo')
                      resolve('unverified')
                    }
                  })
              }
            })
          }
        })
      } else {
        // that.getUnionId()
      }
    })
  })
}
function checkSession(rootAvatar, rootUrl){
  return new Promise (resolve => {
    wx.checkSession({
      success: () => resolve(true),
      fail: () => getUnionId(rootAvatar, rootUrl).then(() => resolve(true))
    })
  })
}
function getBadWords(rootUrl) {
  wx.request({
    url: rootUrl + '/keyword/all',
    success: res => {
      const arr = res.data.map(v => v.key_Word)
      wx.setStorageSync('badwords', arr)
    }
  })
}
function checkBadWords(textArr, warningArr) {
  const badwords = wx.getStorageSync('badwords')
  for (let i = 0; i < badwords.length; i++) {
    const value = badwords[i]
    for (let j = 0; j < textArr.length; j++) {
      if (textArr[j].indexOf(value) != -1) {
        const warning = `请检查您的${warningArr.join('和')},避免出现不文明用语`
        confirmInputCheck(warning)
        return false
      }
    }
  }
  return true
}
function checkEmptyInput(textArr, warningArr){
  for (let i = 0; i < textArr.length; i++) {
    if (textArr[i] == '') {
      confirmInputCheck(`${warningArr[i]}不能为空`)
      return false
    }
  }
  return true
}
function confirmInputCheck(content,title='提交失败'){
  wx.showModal({
    title,
    content,
    showCancel: false
  })
}
function correctTime(timeStr, format='date'){ //修正从服务器获得的time
  const tArr = timeStr.split(/\D+/).map(Number)
  switch(tArr.length){
    case 5: tArr.push(0);break;
    case 4: tArr.push(0,0);break;
    case 3: tArr.push(-8,0,0);break;
    case 2: tArr.push(1,-8,0,0);break;
    case 1: tArr.push(1,1,-8,0,0);break;
    default: break;
  }
  const myDate = new Date(tArr[0],tArr[1]-1,tArr[2],tArr[3]+8,tArr[4],tArr[5])
  const fullFormatTime = `${myDate.getFullYear()}-${twoNum(myDate.getMonth()+1)}-${twoNum(myDate.getDate())} ${twoNum(myDate.getHours())}:${twoNum(myDate.getMinutes())}`
  switch(format){
    case 'date': return fullFormatTime.slice(0,10)
    case 'full': return fullFormatTime
    case 'DateObj': return myDate
    case 'all': return {
      short: fullFormatTime.slice(0,10),
      full: fullFormatTime,
      semantic: semanticTime(myDate) || fullFormatTime.slice(0,10)
    }
  }
}
function semanticTime(DateObj){
  const now = new Date()
  const seconds = (now.getTime() - DateObj.getTime()) / 1000
  if(seconds < 10) return '刚刚'
  if(seconds < 60) return `${parseInt(seconds)}秒前`
  if(seconds < 60 * 60) return `${parseInt(seconds/60)}分钟前`
  if(seconds < 60 * 60 * 11) return `${parseInt(seconds/60/60)}小时前`

  const days = now.getDate() - DateObj.getDate()
  const hour_minute = `${twoNum(DateObj.getHours())}:${twoNum(DateObj.getMinutes())}`
  if(days === 0) return '今天' + hour_minute
  if(days === 1) return '昨天' + hour_minute
  if(days === 2) return '前天' + hour_minute

  return false
}
function twoNum(num){
  return ('0'+num).slice(-2)
}
function formatDate(DateObj){ //Date类型转换成字符串
  return `${DateObj.getFullYear()}-${twoNum(DateObj.getMonth()+1)}-${twoNum(DateObj.getDate())}`
}
function filter(obj){//去除emoji和首尾空格
  for(let key in obj){
    const oldData = obj[key]
    obj[key] = obj[key].replace(emojiFilterReg,'')
    if(oldData!==obj[key]){
      confirmInputCheck('不支持使用emoji表情和特殊符号,请删除后再提交')
      return {allowed: false}
    }
    obj[key] = obj[key].replace(/(^\s*)|(\s*$)/g,'')
  }
  return {allowed: true, obj}
}
function Input(e){
  return e.mp.detail.value
}
function wxLogin(rootUrl,appid,secret){
  var that = this;
  return new Promise(function (resolve, reject){
    wx.login({
      success: res => {
        wx.request({
          url: rootUrl + "/Login/getOpenid",
          data:{
            code:res.code,
            app_id:appid,
            secret:secret
          },
          method:"POST",
          header: {
            'X-Requested-With': 'XMLHttpRequest',
            "Content-Type": "application/x-www-form-urlencoded"
          },
          success:function(e){
            resolve(e.data);
          },
          fail:function(err){
            resolve(err);
          }
        })
      },
      fail: res=>{
        resolve(res)
      }
    });
  });
}
function getSetting(){
  return new Promise(function (resolve, reject){
    wx.getSetting({
    success: function(res){
        if (res.authSetting['scope.userInfo']) {
          wx.getUserInfo({
            success: function(res) {
              resolve("ok");
            }
          })
        }else{
          resolve("deny");
        }
    }
    })
  })
}
function setUserInfo(rootUrl,appid,openid,wx_name){
  return new Promise(function (resolve, reject){
    wx_name = wx_name.replace(emojiFilterReg,'')
    if(wx_name == ''){
      wx_name = '[emoji]'
    }
    wx.request({
        url: rootUrl + "/Login/wxLogin",
        method:"POST",
        data: {
          appid,
          openid,
          wx_name,
        },
        header: {
          'X-Requested-With': 'XMLHttpRequest',
          "Content-Type": "application/x-www-form-urlencoded"
        },
        success:function(e){
          if(!e)
            reject(false)
          else
            resolve(e.data);
        },
        fail:function(e){
          if(!e)
            reject(false)
          else
            resolve(e);
        }
    })
  })
}
function UploadBug(
  rootUrl,
  function_detail,
  errMsg,
  openid=0,
  isSessionID=0,
  isLogin=0,
  isVerify=0,
  wxInfo=0,
  userInfo=0
) {
  const SysInfo = wx.getSystemInfoSync()
  wx.request({
    url: rootUrl + '/bug/add',
    method: 'POST',
    header: {'content-type': 'application/x-www-form-urlencoded'},
    data:{
      model: SysInfo.model,
      sdk_version: SysInfo.SDKVersion,
      client_version: SysInfo.version,
      system_version: SysInfo.system,
      function_detail,
      errMsg,
      openid,
      isSessionID,
      isLogin,
      isVerify,
      wxInfo,
      userInfo
    },
    success: res => {
      console.log(res)
    }
  })
}