web.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. import * as SocketHandle from '../../utils/socket-handle'
  2. import { getQueryString } from './../../utils/tools'
  3. import ImSend from './../../utils/imSend'
  4. import ImApi from './../../apis/im'
  5. import CompanyApi from './../../apis/company'
  6. // pages/web/web.js
  7. const app = getApp()
  8. function randomString(e) {
  9. for (var t = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = 0; n < e; n++)
  10. t += i.charAt(Math.floor(Math.random() * i.length));
  11. return t
  12. }
  13. Page({
  14. /**
  15. * 页面的初始数据
  16. */
  17. data: {
  18. url: "",
  19. pullUrl: [],
  20. pushUrl: '',
  21. live_base_url: "rtmp://120.24.85.77:1935/hls",
  22. socketOpts: {},
  23. room_id: '',
  24. hasBeLogin: false,
  25. vr_link: '',
  26. showWebView: true
  27. },
  28. /**
  29. * 生命周期函数--监听页面加载
  30. */
  31. onLoad: async function (options) {
  32. let { vr_link } = options
  33. console.log(options)
  34. vr_link = decodeURIComponent(vr_link)
  35. this.vrLink = vr_link
  36. this.isGuide = false
  37. this.scene = getQueryString(vr_link, 'm')
  38. this.role = 'customer'
  39. if (this.scene) {
  40. await this.getHouseDetail(this.scene)
  41. this.role = this.companyDetail.guideId === (getApp().globalData.userinfo ? getApp().globalData.userinfo.viewerId : null) ? 'agent' : 'customer'
  42. }
  43. let opts = {
  44. roomId: options.room_id || getQueryString(vr_link, 'room_id') || randomString(18),
  45. userId: getApp().globalData.userinfo.viewerId,
  46. role: this.role,
  47. scene_num: getQueryString(vr_link, 'm')
  48. }
  49. this.originUrl = `${vr_link}&room_id=${opts.roomId}${options.is_auto? `&vr=1` : ''}`
  50. this.setData({
  51. socketOpts: opts,
  52. url: this.originUrl,
  53. room_id: opts.roomId,
  54. house_id: options.house_id || '',
  55. vr_link: vr_link
  56. })
  57. this.socket = SocketHandle.initSocket(this, opts)
  58. if (app.globalData.token && !getQueryString(this.data.url, 'user_id') && this.role) {
  59. this.setData({
  60. url: `${this.originUrl}&role=${this.role}&user_id=${app.globalData.userinfo.viewerId}${this.data.hasBeLogin ? `&vr=1` : ''}`
  61. })
  62. }
  63. },
  64. onShow() {
  65. if (app.globalData.token && !getQueryString(this.data.url, 'user_id') && this.role) {
  66. this.setData({
  67. url: `${this.originUrl}&role=${this.role}&user_id=${app.globalData.userinfo.viewerId}${this.data.hasBeLogin ? `&vr=1` : ''}`
  68. })
  69. }
  70. },
  71. onUnload () {
  72. this.socket.disconnect()
  73. },
  74. countLiveUrl(user_id) {
  75. return `${this.data.live_base_url}/${this.data.room_id}_${user_id}`
  76. },
  77. startPlay(data) {
  78. if (!app.globalData.token) {
  79. wx.showToast({
  80. title: '未登录',
  81. })
  82. this.setData({
  83. hasBeLogin: true,
  84. showLogin: true
  85. })
  86. return
  87. }
  88. if (!this.hasSend) {
  89. // this.scene = data.user.scene_num
  90. this.sendVrCard()
  91. this.hasSend = true
  92. }
  93. this.setData({
  94. pushUrl: this.countLiveUrl(getApp().globalData.userinfo.viewerId)
  95. })
  96. },
  97. createLivePull({persons, roomId}) {
  98. let arr = []
  99. persons.forEach(item => {
  100. if (item.userId !== getApp().globalData.userinfo.viewerId) {
  101. arr.push(this.countLiveUrl(item.userId))
  102. }
  103. })
  104. this.setData({
  105. pullUrl: arr
  106. })
  107. },
  108. someoneLeave() {
  109. this.setData({
  110. pullUrl: [],
  111. pushUrl: ''
  112. })
  113. },
  114. sendVrCard () {
  115. if (this.companyDetail.guideId === getApp().globalData.userinfo.viewerId) {
  116. return
  117. }
  118. ImApi.addFriend(this.companyDetail.guideId).finally(() => {
  119. ImSend.sendVrMsg({title: `${this.companyDetail.companyName}`, detail_images: [this.companyDetail.vrImg], vrLink: encodeURIComponent(this.vrLink)}, this.data.room_id, this.companyDetail.guideId, true)
  120. })
  121. },
  122. getHouseDetail (scene) {
  123. return CompanyApi.getCompanyDetailByScene(scene).then(res => {
  124. console.log(JSON.parse(res.data.introduceImage), 'JSON.parse(res.data.introduceImage)[')
  125. res.data.vrImg = JSON.parse(res.data.introduceImage)[0].img
  126. this.companyDetail = res.data
  127. console.log(this.companyDetail)
  128. // house.detail_images = JSON.parse(house.detail_images)
  129. // this.setData({
  130. // house
  131. // })
  132. // return res
  133. })
  134. },
  135. onShareAppMessage: function (res) {
  136. var path =`/pages/web/web?vr_link=${encodeURIComponent(this.data.vr_link)}`;
  137. var imageurl = this.companyDetail.vrImg;
  138. return {
  139. title: this.companyDetail.companyName,
  140. path: path,
  141. imageUrl: imageurl, // 分享的封面图
  142. success: () => {
  143. // 转发成功
  144. },
  145. fail: function(err) {
  146. console.log(err)
  147. app.ShowModel('网络错误', '转发失败~');
  148. // 转发失败
  149. }
  150. }
  151. },
  152. bindmessage (e) {
  153. const img_url = e.detail.data[0]
  154. getApp().globalData.shared_img = img_url
  155. },
  156. loginSuccess () {
  157. this.onShow()
  158. this.hideLogin()
  159. },
  160. hideLogin () {
  161. this.setData({
  162. showLogin: false
  163. })
  164. },
  165. })