const io = require('./socket.io-mp')
var user = require('./services/user.js');
const api = require('/config/api.js');
const util = require('/utils/util.js');
const UNLOGIN = 'NO_LOGIN'
const btoa = require('./utils/btoa')

const manyCount = 30

import remote from './config.js'
var app = getApp();
var isIos = false
wx.getSystemInfo({
  success: function (res) {
    isIos = res.platform == "ios"
  }
})


let urlToJson = (url = window.location.href) => { // 箭头函数默认传值为当前页面url

  let obj = {},
    index = url.indexOf('?'), // 看url有没有参数
    params = url.substr(index + 1); // 截取url参数部分 id = 1 & type = 2

  if (index != -1) { // 有参数时
    let parr = params.split('&'); // 将参数分割成数组 ["id = 1 ", " type = 2"]
    for (let i of parr) { // 遍历数组
      let arr = i.split('='); // 1） i id = 1   arr = [id, 1]  2）i type = 2  arr = [type, 2]
      obj[arr[0]] = arr[1]; // obj[arr[0]] = id, obj.id = 1   obj[arr[0]] = type, obj.type = 2
    }
  }

  return obj;
}


export default {
  joinUrl() {
    let options = {
      API_BASE_URL: api.API_BASE_URL,
      "url": this.data.url,
      // "url": 'http://192.168.0.112:8080',
      "reload": this.data.reload,
      "token": wx.getStorageSync('token'),
      "code": this.mcode,
      "brandId": this.options.id,
      "open": this.data.showCommodity,
      "pauseVideo": this.pauseVideo,
      "bottom": this.data.bottom || 0,
      socket: {
        socketHost: remote.socketHost,
        path: '/fsl-node',
        options: {
          ...this.data.socketOptions,
          // nickname: encodeURI(encodeURI(this.data.socketOptions.nickname))
          nickname: encodeURIComponent(encodeURIComponent(this.data.socketOptions.nickname))
        }
      }
    }
    // let base = 'http://127.0.0.1:5500/index.html'
    // let base = remote.viewHost + '/shop-container/shop.html'
    let sponsor = !!this.data.canShow
    if (this.data.join && !this.options.join) {
      sponsor = false
    }

    let base = remote.viewHost + '/shop-container/fashilong.html?env='+remote.env+'&sponsor=' + sponsor + '&many=' + this.data.many
    // let base = remote.viewHost + '/shop.html'

    this.data.reload = false
    this.data.showCommodity = false
    if (!this.data.webviewUrl) {
      this.setData({
        'webviewUrl': base + '#' + JSON.stringify(options)
      })
    } else {
      this.socketSendMessage('clientSyncAction', {
        sender: 'h5',
        type: 'hashChange',
        data: options
      })
    }

    console.log(this.data.webviewUrl)
  },

  onShow() {
    this.setData({
      isIos,
      showComtypesAllTab: false
    })
    

    if (this.socketSendMessage) {
      this.pauseVideo = false
      this.joinUrl()
      this.socketSendMessage('changeOnlineStatus', { status: true  })
    }
  },

  changeShowComtypesAllTab(ev) {
    this.setData({
      showCommodity: false
    })

    setTimeout(() => {
      this.setData({
        showComtypesAllTab: ev.currentTarget.dataset.show,
        showCommodity: true
      })
    }, 100)
  },

  async authorizeRecord() {
    let isAuth = await new Promise((r, j) => {
      wx.authorize({
        scope: 'scope.record',
        success: () => r(true),
        fail: () => r(false)
      })
    })

    if (isAuth) return true

    let res = await new Promise(r => {
      wx.showModal({
        title: '提示',
        content: '您未授权录音，说话功能将无法使用',
        showCancel: true,
        confirmText: "授权",
        confirmColor: "#52a2d8",
        success: res => r(res),
        fail: () => r(false)
      })
    })

    if (!res || res.cancel) return;

    isAuth = await new Promise((r) => {
      wx.openSetting({
        success: res => r(res.authSetting['scope.record']),
        fail: () => r(false)
      })
    })

    return isAuth
  },

  async agetUserInfo() {
    const res = await util.request(api.UserInfo)

    if (res.errno === 401) {
      return {
        userId: UNLOGIN,
        avatar: ''
      }
    } else {
      const data = res.data
      data.region = data.city ? data.city.split('，') : []
      data.birthday = data.birthday || '1990-01-01'
      return data
    }
  },

  async getUserInfo() {
    let userInfo = wx.getStorageSync('userInfo');
    let token = wx.getStorageSync('token');
    if (userInfo && userInfo.userId && token) {
      let info = await this.agetUserInfo()
      return {
        ...userInfo,
        ...info,
        avatarUrl: info.avatar
      };
    } else {
      return {
        userId: UNLOGIN,
        avatar: ''
      }
    }

    // let detail
    // let isAuth = await new Promise((r, j) => {
    //   wx.authorize({
    //     scope: 'scope.userInfo',
    //     success: () => r(true),
    //     fail: () => r(false)
    //   })
    // })


    // if (!isAuth) {
    //   this.setData({userAuth: true})
    //   detail = await new Promise(r => {
    //     this.bindGetUserInfo = (e) => {
    //       if (e.detail.userInfo) {
    //         this.setData({userAuth: false})
    //         console.log('gei', e.detail)
    //         r(e.detail)
    //       }
    //     }
    //   })
    // } else {
    //   detail = await new Promise(r => {
    //     wx.getUserInfo({
    //       success: res => r(res),
    //       fail: () => r(false)
    //     })
    //   })
    // }

    // try {
    //   let res = await user.loginByWeixin(detail)
    //   app.globalData.userInfo = res.data.userInfo;
    //   app.globalData.token = res.data.token;
    //   return res.data.userInfo
    // } catch(e) {
    //   return false
    // }
  },

  login() {
    getApp().setLoginProps(false)
  },

  async getSocketOptions(sceneId, roomId) {
    let room = roomId || (Number(Date.now().toString().slice(4)) + parseInt((Math.random() * 1000)))
    // let room = '147852'
    let userInfo = await this.getUserInfo()

    // console.log('---', userInfo)
    // this.setData({
    //   userInfoa: userInfo.nickname.split('').join(' ')
    // })


    
    this.role !== 'leader'
    let roomType
    if ((!this.data.canShow && !this.data.join) || (this.data.join && !this.options.join)) {
        roomType = '1v1'
    }
    return {
      role: this.role || 'leader',
      userId: userInfo.userId,
      roomType,
      avatar: userInfo.avatarUrl,
      nickname:  userInfo.nickname,
      voiceStatus: getApp().globalData.voiceProps.noMute ? 0 : 2,
      enableTalk: this.role === 'leader' ? true : undefined,
      roomId: room,
      sceneNumber: sceneId,
      onlineStatus: true,
      userLimitNum: this.data.peopleCount
    }
  },

  async socketStart({
    sceneId,
    roomId,
    options
  }) {
    if (!options) {
      options = await this.getSocketOptions(sceneId, roomId)
    }

    console.log('小程序参数', options)
    let socket = io(remote.socketHost, {
      path: '/fsl-node',
      query: {
        ...options,
        isClient: true
      }
    })

    console.error('新建socket Room', options.roomId)
    this.setData({
      socketStatus: 0
    })

    socket.on('connect', () => this.setData({
      socketStatus: 1
    }))
    socket.on('connect_error', () => this.setData({
      socketStatus: -1
    }))
    socket.on('connect_timeout', () => this.setData({
      socketStatus: -1
    }))
    socket.on('disconnect', () => this.setData({
      socketStatus: -1
    }))
    socket.on('reconnect', () => {
      this.setData({
        socketStatus: 0
      })

      let noMute = getApp().globalData.voiceProps.noMute
      this.socketSendMessage('changeVoiceStatus', {
        status: noMute ? 0 : 2
      })
      this.socketSendMessage('changeOnlineStatus', { status: true  })
    })
    socket.on('reconnect_failed', () => this.setData({
      socketStatus: -1
    }))
    socket.on('error', () => this.setData({
      socketStatus: -1
    }))
    socket.on('roomIn', config => {
      let enableTalk = config.roomsConfig.enableTalk !== false
      let noMute = getApp().globalData.voiceProps.noMute
      getApp().globalData.voiceProps.force = enableTalk
      if (!enableTalk && !noMute) {
        this.mic()
      }
    })

    this.socketSendMessage = (event, obj) => {
      console.error('发送 socket Room', options.roomId, event, obj)
      socket.emit(event, obj)
    }

    socket.on('clientSyncAction', (data) => {
      console.log('调用', data.type, '方法', data)
      if (this[data.type]) {
        this[data.type](data)
      } else {
        console.error('没有', data.type, '方法')
      }
    })

    socket.on('action', (data) => {
      if (data.type === 'navigateToGoods') {
        this.navigateToGoodsAction(data.data)
      }
    })

    socket.on('changeRoomEnableTalk', config => {
      if (this.role !== 'leader') {
        this.changeRoomEnableTalk(config)
      }
    })

    socket.on('startCall', this.startCall.bind(this))
    socket.on('stopCall', (data) => {
      console.log('on stopCall')
      this.stopCall(data)
    })
    socket.on('someOneInRoom', this.startCall.bind(this))
    socket.on('someOneLeaveRoom', (user, data) => {
      this.handleSomeOneLeave(user)
    })
    socket.on('roomClose', (data) => {
      console.log('on roomClose')
      this.stopCall(data)
    })

    this.socketStop = () => {
      socket.close()
      console.error('断开 并滞空 socket Room', options.roomId)
      this.setData({
        socketStatus: 2
      })
      socket = null
    }



    return options
  },

  changeRoomEnableTalk(data) {
    console.log(data)
    let noMute = getApp().globalData.voiceProps.noMute
    getApp().globalData.voiceProps.force = data.enableTalk
    // noMute true 静音
    // enableTalk false 静音
    if (!!data.enableTalk === !!noMute) {
      this.mic()
    }
  },

  navigateToGoods({
    data
  }) {
    // wx.showToast({
    //   title: JSON.stringify(data).substr(40)
    // })
    this.navigateToGoodsAction(data)
  },

  navigateToGoodsAction(id) {
    wx.navigateTo({
      url: '/pages/goods/goods?id=' + id,
    })
  },

  getUrl(url, socketOptions, isJoin) {
    url += '&room_id=' + socketOptions.roomId + '&user_id=' + socketOptions.userId 
    

    if (isJoin) {
      url += '&role=' + this.role + '&shopping'
    } else {
      url += '&role=' + this.role
    }

    console.error(url)
      console.log(isJoin)
    return url
  },

  navigateToMiniProgram(data) {
    wx.showModal({
      title: '温馨提示',
      content: '即将跳到其他小程序，是否继续？',
      showCancel: true, //是否显示取消按钮
      cancelText: "取消", //默认是“取消”
      confirmText: "确定", //默认是“确定”
      success: function (res) {
        if (res.cancel) {
          //点击取消，wx.navigateBack
        } else {
          wx.navigateToMiniProgram(data.data)
        }
      },
      fail: function (res) {
        //接口调用失败的回调函数，wx.navigateBack
      },
      complete: function (res) {
        //接口调用结束的回调函数（调用成功、失败都会执行）
      },
    })
  },

  async startCall(data) {
    if (!data) return;

    this.setData({
      surplus: this.data.peopleCount -  data.roomsPerson.length
    })
    if (!this.isAuthorizeRecord) {
      const voiceStatus = Number(await this.authorizeRecord())
      this.isAuthorizeRecord = true

      // getApp().setVoiceProps({
      //   noMute: !voiceStatus
      // })

      // console.log(getApp().globalData.voiceProps.noMute)
      // this.socketSendMessage('changeVoiceStatus', {
      //   status: getApp().globalData.voiceProps.noMute ? 0 : 2
      // })
      // this.data.socketOptions.voiceStatus = 1
      // this.socketSendMessage('changeVoiceStatus', {status: noMute ? 0 : 2})
    }

    const socketOptions = this.data.socketOptions
    getApp().globalData.roomId = socketOptions.roomId
    const user = data.roomsPerson.find(user => user.userId == socketOptions.userId)
    if (!user) {
      return
    }
    if (data.roomsPerson.length <= 1) {
      return
    }
    user.noMute = getApp().globalData.voiceProps.noMute
    getApp().setVoiceProps({
      ...user,
      action: 'startCall'
    })
    // this.socketSendMessage('changeVoiceStatus', {
    //   status: getApp().globalData.voiceProps.noMute ? 0 : 2
    // })
  },

  stopCall() {
    console.error('stopCall')
    getApp().setVoiceProps({
      noMute: false,
      action: 'stopCall'
    })
    if (this.runManager) {
      // this.recorderManager.stop()
      this.runManager = false
    }
  },

  handleSomeOneLeave(data) {
    if (data.roomsPerson.length <= 1) {
      // this.stopCall()
    }
  },
  async newRoom(data) {
    if (data.roomId) return;
    this.stopCall()
    getApp().globalData.rtcParams = []
    getApp().globalData.pusher = ''

    if (this.data.join && !this.options.join) {
      wx.switchTab({
        url: '/pages/index/index',
      })
      return;
    }
    
    this.role = this.data.canShow ? 'leader' : 'customer'
    let options = await this.getSocketOptions(this.mcode)

    this.socketSendMessage('clientSyncAction', {
      type: 'newRoom',
      data: options
    })

    setTimeout(async () => {
      this.wssSuccess = false
      this.socketStop && this.socketStop()
      this.data.many = !!this.data.canShow
      
      this.setData({
        peopleCount: this.data.many ? manyCount : 5
      })

      let base = this.base
      let socketOptions = await this.socketStart({
        options
      })
      let url = this.getUrl(base, socketOptions, false) + (this.urlPj || '')
      this.base = base

      this.setData({
        url,
        socketOptions,
      })
      this.joinUrl()
      

      this.setData({ socketOptions })
      this.loadConponSuccess = true
      this.readySendCouponCtrl()
    }, 300)
  },
  async exit() {
    this.stopCall()
    getApp().globalData.rtcParams = []
    getApp().globalData.pusher = ''
    this.socketStop && this.socketStop()
    this.role = 'leader'

    let base = this.base
    let socketOptions = await this.socketStart({
      sceneId: this.mcode
    })
    let url = this.getUrl(base, socketOptions, false) + (this.urlPj || '')
    this.base = base


    wx.nextTick(() => {
      setTimeout(() => {
        this.setData({
          url,
          loadUrl: true,
          socketOptions,
          showCommodityCtrl: false,
          hideWebView: false,
          reload: true
        })
        this.joinUrl()
      }, 500)
    })
  },

  clearDebuger() {
    this.setData({
      debugerInfo: ''
    })
  },

  async mic() {
    let noMute = getApp().globalData.voiceProps.noMute
    
    
    // noMute true 静音
    // enableTalk false 静音
    // if (!!getApp().globalData.voiceProps.force === !!noMute) 
    //   return
    // if (!getApp().globalData.voiceProps.force && (!this.data.socketOptions.voiceStatus || noMute)) return;

    if (!this.data.socketOptions.voiceStatus) {
      let voiceStatus = await this.authorizeRecord()
      if (voiceStatus) {
        this.data.socketOptions.voiceStatus = 1
        noMute = false
      } else {
        noMute = true
      }
    } else {
      noMute = !noMute
    }

    getApp().globalData.voiceProps.noMute = noMute
    this.socketSendMessage('changeVoiceStatus', {
      status: noMute ? 0 : 2
    })
    getApp().setVoiceProps({
      noMute
    })

    wx.showToast({
      title: `已${noMute ? '关闭' : '开启'}麦克风`,
    })
  },

  callPhone() {
    wx.makePhoneCall({
      phoneNumber: this.data.contractPhone,
    })
    this.setData({
      showContact: false
    })
  },


  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function (res) {
    let {
      id,
      newPicUrl
    } = this.data


    if (res.from === 'button') {
      this.setData({
        sendShare: false
      })
      
      return {
        title: '【好友推荐】一起来云逛吧',
        imageUrl: newPicUrl,
        path: `/pages/webview/index?id=${id}&join=true&roomId=${this.data.socketOptions.roomId}&many=${!!this.data.many}`,
      }
    } else {
      return {
        imageUrl: newPicUrl,
        path: `/pages/webview/index?id=${id}&join=false`,
      }
    }
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    console.log('on onUnload')
    this.socketSendMessage('stopCall', {})
    this.stopCall()
    this.socketStop()
    getApp().globalData.pusher = ''
  },

  cart(data) {
    this.setData({
      showCommodityCtrl: data.data
    })
  },


  share() {
    const companyName = `杭州天门科技有限公司`
    const vrLink = `/pages/webview/index`
    const img_url = this.data.newPicUrl || 'http://video.cgaii.com/new4dage/images/images/home_2_a.jpg'
    const shareImg = img_url

    this.count = this.count || 0

    console.log(`/pages/shared/shared?img_url=${btoa(img_url)}&shareImg=${btoa(shareImg)}&companyName=${companyName}&vrLink=${btoa(vrLink)}&id=${this.data.id}`);

  wx.navigateTo({
    url: `/pages/shared/shared?img_url=${btoa(img_url)}&shareImg=${btoa(shareImg)}&companyName=${companyName}&vrLink=${btoa(vrLink)}&id=${this.data.id}`,
  })
  },




  back(data) {
    if (data.sender !== 'h5') return;
    wx.switchTab({
      url: '/pages/index/index'
    })
    this.setData({
      showCommodityCtrl: false
    })
  },

  service() {
    this.setData({
      showContact: true,
      showCommodity: false,
      showCoupon: false
    })
  },

  invite(data) {
    if (data.sender !== 'h5') return;

    this.setData({
      sendShare: true,
      count: ++this.data.count
    })
  },

  coupon(data) {
    if (data.sender !== 'h5') return;
    this.setData({
      showContact: false,
      showCommodity: false,
      showCoupon: true
    })
  },

  liveGotoGood(ev) {
    let id = ev.currentTarget.dataset.item.goodsId
    wx.navigateTo({
      url: '/pages/goods/goods?id=' + id,
    })
  },
  gotoGoodsDOM(event) {
    this.gotoGoods(event.currentTarget.dataset.item.hotIdList[0])
  },
  gotoGoodsSocket(data) {
    this.gotoGoods(data.data)
  },
  gotoGoods(id) {
    console.log('---', id)
    this.socketSendMessage('clientSyncAction', {
      type: 'openTag',
      data: id
    })
    this.setData({
      showCommodity: false
    })
    this.joinUrl()
  },

  addCard(event) {
    wx.navigateTo({
      url: '/pages/goods/goods?id=' + event.currentTarget.dataset.id + '&oper=addCard',
    })
  },

  buyGoods(event) {
    wx.navigateTo({
      url: '/pages/goods/goods?id=' + event.currentTarget.dataset.id + '&oper=buyGoods',
    })
  },


  showCommodityFn() {
    this.setData({
      showCommodity: true,
      showContact: false,
      showCoupon: false
    })

    this.joinUrl()
  },

  hideComodity() {
    this.setData({
      showCommodity: false
    })
    this.joinUrl()
  },

  hideCoupon() {
    this.setData({
      showCoupon: !this.data.showCoupon
    })
  },

  async receive(ev) {
    let item = ev.target.dataset.item
    try {
      // wx.showToast({
      //   title: '领取优惠卷',
      // })
      // return;
      if (item.hasReceived || item.number <= item.receiveNumber) return;

      let res = await util.request(api.CouponExchange, {
        couponId: item.id
      })
      if (res.code === 0) {
        wx.showToast({
          title: '已成功领取',
          success: () => {
            this.setData({
              showCoupon: false
            })
            wx.nextTick(() => {
              this.setData({
                coupons: this.data.coupons.map(citem => {
                  return {
                    ...citem,
                    hasReceived: citem.id === item.id ? true : citem.hasReceived
                  }
                }),
                showCoupon: true
              })
            })
          }
        })
      } else if (res.errno === 401) {
        getApp().setLoginProps(false)
      } else {
        wx.showToast({
          title: res.msg,
        })
      }
    } catch (e) {
      console.error(e)
      wx.showToast({
        icon: 'none',
        title: '领取失败',
      })
    }
  },

  async getCouponList(id) {
    const success = (res) => {
      this.setData({
        coupons: res.data.list.map(item => {
          item.typeMoney = item.typeMoney.toString()
          item.fontSize = item.typeMoney.length === 3 ? '90rpx' :
            item.typeMoney.length === 4 ? '70rpx' : '130rpx'
          return item
        })
      })

      this.loadConponSuccess = true
      this.readySendCouponCtrl()
    }

    let res = await util.request(api.BrandCouponList, {
      brandId: id,
      pageNum: 1,
      pageSize: 10000
    }, 'GET')

    console.log(res)
    if (res.code === 0) {
      success(res)
    } else {
      let res = await util.request(api.UNBrandCouponList, {
        brandId: id,
        pageNum: 1,
        pageSize: 10000
      }, 'GET')
      success(res)
    }

  },
  ready() {
    this.wssSuccess = true
    this.readySendCouponCtrl()
  },
  readySendCouponCtrl() {
    

    if (this.wssSuccess && this.loadConponSuccess) {
      this.loadConponSuccess = false
      
      this.socketSendMessage('clientSyncAction', {
        type: 'showCoupon',
        data: this.data.coupons.length > 0
      })
    }
  },
  getBrand: function (id, code) {
    this.getGoodsCount(code, id)
    return;
    let that = this;
    util.request(api.SueneCategory, {
      sceneNum: code
    }, 'GET').then(function (res) {
      if (res.code === 0) {
        const comtypes = res.list.map(item => {
          item.width = (item.name.length + (item.num.toString().length / 2) + 2) * 16
          return {
            ...item
          }
        })

        that.setData({
          comWidth: comtypes.reduce((a, b) => a + b.width + 10, 0),
          comtypes,
          thumComtypes: (!isIos && comtypes.length > 3) ? comtypes.slice(0, 3) : null,
          currTypeId: comtypes.length > 0 && comtypes[0].category_id
        });

        wx.showToast({
          title: 'currTypeId' + that.data.currTypeId.length,
        })
        that.data.currTypeId && that.getGoodsList(id, that.data.currTypeId);
      }
    });

  },

  getGoodsCount(code, id) {
    util.request(api.GoodsNumCount, {
        isDelete: 0,
        isOnSale: 1,
        brandId: id
      }, 'GET')
      .then(res => {
        if (res.code === 0) {
          this.setData({
            goodsCount: res.data
          })
        }

        this.getCouponList(id)
      })
  },

  getGoodsList(id, category_id) {
    var that = this;

    if (!(this.data.navList && this.data.navList.length)) {
      that.navDatas = {}
      let navDatas = this.data.navList = this.data.comtypes

      // util.request(api.GoodsCategory, { id: category_id })
      //   .then(function (res) {
      //     if (res.errno == 0) {
      //       let navDatas = res.data.brotherCategory
      //       that.setData({
      //         navList: navDatas,
      //         currTypeId: category_id
      //       });
      that.navDatas = {}
      navDatas.forEach(item => {
        util.request(api.GoodsList, {
            brandId: id,
            categoryId: item.category_id,
            page: that.data.page,
            size: that.data.size
          })
          .then(res => {
            if (res.errno === 0) {
              that.navDatas[item.category_id] = res.data.goodsList
            }
          })
      })
      //   }
      // })
    }

    if (that.navDatas[category_id]) {
      if (!isIos) {
        let showCommodity = that.data.showCommodity
        that.setData({
          showCommodity: false
        })
        setTimeout(() => {
          wx.nextTick(() => {
            that.setData({
              goodsList: that.navDatas[category_id],
              currTypeId: category_id,
              showCommodity: showCommodity
            });
          })
        }, 500)
      } else {
        that.setData({
          goodsList: that.navDatas[category_id],
          currTypeId: category_id,
        });
      }
    } else {
      console.error('诱惑去啦')
      util.request(api.GoodsList, {
          brandId: id,
          categoryId: category_id,
          page: that.data.page,
          size: that.data.size
        })
        .then(function (res) {
          if (res.errno === 0) {
            that.setData({
              goodsList: res.data.goodsList,
              currTypeId: category_id
            });
            // this.data.navList
          }
        });
    }
  },

  getBrandDetail: function (id, cb) {
    util.request(api.BrandDetail, {
      id: id
    }).then((res) => {
      let base = res.data.brand.sceneUrl
      // let base = 'http://192.168.0.112:8080/shop.html?m=t-7Uqj9Fq&origin=fashilong'
      if (res.errno === 0) {
        let url = base + "&sid=" + id
        this.setData({
          id: id,
          newPicUrl: res.data.brand.appListPicUrl,
          sceneNum: res.data.brand.sceneNum,
          canShow: res.data.brand.canShow,
          contractPhone: res.data.brand.contractPhone
          
        })
        if (this.data.many === void 0) {
          this.data.many = !!res.data.brand.canShow
        }
        this.setData({
          peopleCount: this.data.many ? manyCount : 5,
        })
      
        if (!res.data.brand.canShow) {
          this.role = 'customer'
        } else if (!this.options.join){
          this.role = 'leader'
        }
        cb(url, urlToJson(url).m, )
      }
    });
  },

  selectType(ev) {
    this.getGoodsList(this.options.id, ev.target.dataset.item.category_id)
  },

  hideCS() {
    this.setData({
      showCommodity: false,
      showCoupon: false,
      showContact: false
    })
  },

  hideContact() {
    this.setData({
      showContact: false
    })
  },

  calcShare() {
    // this.exit()
    this.setData({
      sendShare: false
    })
  },
  contactKf() {
    let keys = Object.keys(this.navDatas)
    let goodsId = this.navDatas[keys[0]][0].id
    let user = wx.getStorageSync('userinfoDetail')
    util.request(api.AddTalkCount, {
      goodsId,
      viewId: user && user.userId || '',
      sceneNum: this.data.sceneNum
    }, 'get')
    this.hideAlert && this.hideAlert()
    this.hideContact && this.hideContact()
  },

  onHide() {
    this.socketSendMessage('changeOnlineStatus', { status: false  })
    
    this.pauseVideo = true
    this.joinUrl()
  }
}