Browse Source

Merge branch 'dev-5.3.1' of Software/android-cloud-H5 into test

hutao 3 years ago
parent
commit
e76b6d0f89

+ 97 - 0
static/microserviceUserH5/static/css/trialActivities.css

@@ -0,0 +1,97 @@
+@media screen and (max-width: 750px) {
+    html {
+      font-size: calc(100vw / 7.5);
+    }
+  }
+  
+@media screen and (min-width: 750px)  {
+  html {
+    font-size: calc(450px / 7.5);
+  }
+}
+
+html, body, div, ul, li, p {
+    padding: 0;
+    margin: 0;
+}
+
+
+ul, li {
+    list-style: none;
+}
+
+.containers{
+    width: 7.5rem;
+    margin: auto;
+    background-image: url('../img/yunActivity/bgc0.png'); 
+    background-size: 100% 100%; 
+}
+
+.banner-wrap{
+    width: 7.5rem;
+    height: 25.67rem;
+    position: relative;
+}
+
+.banner-img {
+    position: fixed;
+    width: 7.5rem;
+    height: 1.28rem;
+    top: 0;
+    z-index: 1;
+}
+
+.downlond-img {
+    position: fixed;
+    top: 0.3rem;
+    right: 0.3rem;
+    width: 2.2rem;
+    height: 0.7rem;
+    z-index: 1;
+}
+
+.downlond-midimg {
+    position: absolute;
+    top: 10.8rem;
+    left: 50%;
+    margin-left: -2.15rem;
+    width: 4.3rem;
+    height: 1.12rem;
+}
+
+
+#toast-container>.toast-error {
+    background-image: none !important;
+    border-radius: 0.2rem;
+  }
+  
+  .toast-error {
+    background-color: rgba(0, 0, 0, 0.8);
+    border-radius: 0.2rem;
+  }
+  
+  #toast-container>div {
+    font-size: 14px;
+    min-width: 80px !important;
+    padding: 12px !important;
+    box-shadow: none;
+    border-radius: 0.2rem;
+  }
+  
+  .toast-center-center {
+    position: fixed;
+    min-width: 220px;
+    top: 50%;
+    left: 50%;
+    text-align: center;
+    transform: translateX(-50%);
+    color: #FFFFFF;
+    border-radius: 0.2rem;
+  }
+  
+  @media (max-width: 480px) and (min-width: 241px) {
+    #toast-container>div {
+      min-width: 80px !important;
+      width: auto;
+    }
+  }

BIN
static/microserviceUserH5/static/img/yunActivity/bgc0.png


BIN
static/microserviceUserH5/static/img/yunActivity/btn-1.png


BIN
static/microserviceUserH5/static/img/yunActivity/btn-2.png


BIN
static/microserviceUserH5/static/img/yunActivity/header.png


+ 130 - 0
static/microserviceUserH5/vcloud/trialActivities.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+	<meta charset="UTF-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
+	<title>双子星云手机</title>
+	<link rel="icon" href="../static/img/favicon2.ico" type="img/x-ico">
+	<link rel="stylesheet" href="../static/js/vender/bootstrap/css/bootstrap.min.css">
+	<link rel="stylesheet" href="../static/js/vender/toastr/toastr.min.css">
+	<link rel="stylesheet" href="../static/css/trialActivities.css">
+	<script src="../static/js/vender/jquery-3.4.1.min.js"></script>
+	<script src="../static/js/vender/toastr/toastr.min.js"></script>
+	<script src="../static/js/vender/config.js"></script>
+	<script src="../static/js/vender/crypto-js.js"></script>
+	<script src="../static/js/vender/ase.js"></script>
+</head>
+
+<body>
+	<div class="containers">
+			<div class="banner-wrap">
+				<div class="img-title">
+					<img class="banner-img" src="../static/img/yunActivity/header.png">
+				</div>
+                <div class="img-downlond">
+                    <img class="downlond-img" src="../static/img/yunActivity/btn-1.png">
+                </div>
+                <div class="midimg-downlond">
+                    <img class="downlond-midimg" src="../static/img/yunActivity/btn-2.png">  
+                </div>
+			</div>
+	</div>
+	<script>
+		toastr.options.positionClass = 'toast-center-center';
+		toastr.options.timeOut = '3000';
+	</script>
+	<script type="text/javascript">
+		// var baseUrl = 'http://14.18.190.141:1280'
+		let timer, flag = true;
+		var url = window.location.href;
+		url = url.split('/')
+		var loc = window.location.search,
+			n1 = loc.length,//地址的总长度
+			n2 = loc.indexOf("="),//取得=号的位置
+			id = loc.substr(n2 + 1, n1 - n2),//从=号后面的内容
+			u = navigator.userAgent,
+			ua = navigator.userAgent.toLowerCase(),
+			isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
+			isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
+        $('.downlond-img')[0].addEventListener('click',()=>{
+                if(isAndroid){
+		 	     const pointName = '0元试用h5落地页安卓点击' + id
+		         operate(pointName,'click');
+				 download()
+		        }else if(isIOS){
+		        	const pointName = '0元试用h5落地页IOS点击' + id
+		        	operate(pointName);
+				 download()
+		        }
+                 // download()
+        },false)   
+        
+        $('.downlond-midimg')[0].addEventListener('click',()=>{
+                if(isAndroid){
+		 	     const pointName = '0元试用h5落地页安卓点击' + id
+		         operate(pointName,'click');
+				download()
+		        }else if(isIOS){
+		        	const pointName = '0元试用h5落地页IOS点击' + id
+		        	operate(pointName);
+				download()
+		        }
+                // download()
+        },false)   
+		function download() {
+            if (isAndroid) {
+				window.location.href = window.location.protocol === 'https:' ? `https://file.phone.androidscloud.com:8121/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_19066905949412147255/shuangzixing.apk` : 
+				`http://110.53.221.195:8210/document/newFile/download/1/edv834e74a9c43eaac02/LowLevelMultipartUpload_19066905949412147255/shuangzixing.apk`;
+				stopManyClick(() =>{
+					toastr.error('下载成功')
+				})
+            } else if (isIOS) {
+                document.location.href = 'https://www.pgyer.com/gemini6?timestamp=' + Math.random();
+                // toastr.error('下载成功')
+            } 
+        }
+		// 埋点下载
+		function operate(pointName) {
+			$.ajax({
+				url: baseUrl + '/api/public/v1/systemBuriedPoint/stat',
+				type: 'post',
+				data: JSON.stringify({
+					pointName: pointName
+				}),
+				contentType: "application/json",
+				dataType: 'json',
+				cache: false,
+				success: function (res) {},
+			})
+		}
+		// 埋点页面访问
+		// var newpage = window.location.search.substring(6);
+		$(function() {
+			pushHistory();
+			function pushHistory() {
+				var warids = {
+					"pointName": `0元试用h5落地页打开${id}`  
+				}
+				$.ajax({
+					url: baseUrl + "/api/public/v1/systemBuriedPoint/stat",
+					data: JSON.stringify(warids),
+					type: 'post',
+					dataType: 'json',
+					contentType: "application/json;charset=UTF-8",
+					cache: false,
+					success: function(data) {}
+				})
+			}
+		});
+		function stopManyClick(fn) {
+			if (flag) {
+				fn();
+			}
+			flag = false;
+			if (timer) { clearTimeout(timer); }
+			timer = setTimeout(() => { flag = true }, 1500);
+		}
+	</script>
+</body>
+
+</html>

+ 190 - 56
static/screenAndroid/WXtrialInterface.html

@@ -189,7 +189,6 @@
       src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"
     ></script>
     <script src="https://cdn.bootcss.com/jquery-weui/1.2.1/js/jquery-weui.min.js"></script>
-    <script type="text/javascript" src="WXdraw.js"></script>
     <script type="text/javascript" src="jmuxer.js"></script>
     <script type="text/javascript" src="spsParser.js"></script>
     <script
@@ -202,9 +201,9 @@
       var baseUrl = url[0] + '//' + url[2];
 
       var parameters = GetRequest();
-      var form = {};
-      form.token = parameters['token'];
-      form.userCardId = parameters['userCardId'];
+      var token = parameters['token'];
+      var userCardId = parameters['userCardId'];
+      var mealType = parameters['mealType'];
       var videoTimer = null,
         videoTime = 0,
         adType = 0,
@@ -232,6 +231,92 @@
         $('.loading_sceen_pic').attr('src', '../static/img/home_bg_PRO.png');
       }
       initAD();
+      let dbName = parameters['username'],
+        version = 1,
+        storeName = 'usercard';
+      let indexedDB = window.indexedDB;
+      let db, socketURL, cUrl, cardToken, resolvingPower;
+      const request = indexedDB.open(dbName, version);
+      request.onsuccess = function (event) {
+        db = event.target.result; // 数据库对象
+        console.log('数据库打开成功');
+      };
+
+      request.onerror = function (event) {
+        console.log('数据库打开报错');
+      };
+
+      request.onupgradeneeded = function (event) {
+        // 数据库创建或升级的时候会触发
+        console.log('onupgradeneeded');
+        db = event.target.result; // 数据库对象
+        let objectStore;
+        if (!db.objectStoreNames.contains(storeName)) {
+          objectStore = db.createObjectStore(storeName, { keyPath: 'id' }); // 创建表
+        }
+      };
+      // 添加数据
+      function addData(db, storeName, data) {
+        let request = db
+          .transaction([storeName], 'readwrite') // 事务对象 指定表格名称和操作模式("只读"或"读写")
+          .objectStore(storeName) // 仓库对象
+          .add(data);
+
+        request.onsuccess = function (event) {
+          console.log('数据写入成功');
+        };
+
+        request.onerror = function (event) {
+          console.log('数据写入失败');
+          throw new Error(event.target.error);
+        };
+      }
+
+      // 根据id获取数据
+      function getDataByKey(db, storeName, key) {
+        let transaction = db.transaction([storeName]); // 事务
+        let objectStore = transaction.objectStore(storeName); // 仓库对象
+        let request = objectStore.get(key);
+
+        request.onerror = function (event) {
+          connect('add');
+        };
+
+        request.onsuccess = function (event) {
+          console.log('主键查询结果: ', request.result);
+          if (request.result) {
+            socketURL = request.result.socketURL;
+            cUrl = request.result.cUrl;
+            cardToken = request.result.cardToken;
+            resolvingPower = request.result.resolvingPower;
+            doConnectBusiness();
+            doConnectDirectives();
+          } else {
+            connect('add');
+          }
+        };
+      }
+
+      // 根据id修改数
+      function updateDB(db, storeName, data) {
+        let request = db
+          .transaction([storeName], 'readwrite') // 事务对象
+          .objectStore(storeName) // 仓库对象
+          .put(data);
+
+        request.onsuccess = function () {
+          console.log('数据更新成功');
+        };
+
+        request.onerror = function () {
+          console.log('数据更新失败');
+        };
+      }
+
+      // 由于打开indexDB是异步的加个定时器避免 db对象还没获取到值导致 报错
+      setTimeout(() => {
+        getDataByKey(db, storeName, userCardId);
+      }, 1000);
       var isAudioPlay = false;
       if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
         var video = document.getElementById('playerVideo');
@@ -291,21 +376,72 @@
       Module.onRuntimeInitialized = function () {
         isFinish = true;
       };
-
-      var isWSS = true;
-      var ip = parameters['ip'];
-      var cardToken = parameters['cardToken'];
-      cardToken = cardToken && decodeURIComponent(cardToken);
-      var appletPushAddress = parameters['appletPushAddress'];
-      var socketURL = isWSS
-        ? 'wss://' +
-          appletPushAddress +
-          '?cardIp=' +
-          ip +
-          '&token=' +
-          cardToken +
-          '&type=business'
-        : 'ws://' + appletPushAddress + '?cardIp=' + ip + '&token=' + cardToken;
+      function connect() {
+        $.ajax({
+          url: baseUrl + '/api/resources/user/cloud/connect',
+          type: 'post',
+          data: JSON.stringify({
+            userCardId: Number(userCardId),
+          }),
+          headers: {
+            'content-Type': 'application/json',
+            Authorization: token,
+          },
+          dataType: 'json',
+          async: false,
+          success: function (res) {
+            if (res.status === 0) {
+              if (res.data.internetHttps) {
+                socketURL =
+                  'wss://' +
+                  res.data.internetHttps +
+                  '/plugflow?cardIp=' +
+                  res.data.localIp +
+                  '&token=' +
+                  res.data.cardToken +
+                  '&type=business';
+                cUrl =
+                  'wss://' +
+                  res.data.internetHttps +
+                  '/businessChannel?cardIp=' +
+                  res.data.localIp +
+                  '&token=' +
+                  res.data.cardToken +
+                  '&type=directives';
+                cardToken = res.data.cardToken;
+                resolvingPower = res.data.resolvingPower;
+                doConnectBusiness();
+                doConnectDirectives();
+                if (type === 'add') {
+                  addData(db, storeName, {
+                    id: userCardId,
+                    socketURL: socketURL,
+                    cUrl: cUrl,
+                    cardToken: res.data.cardToken,
+                    resolvingPower: res.data.resolvingPower,
+                  });
+                } else {
+                  updateDB(db, storeName, {
+                    id: userCardId,
+                    socketURL: socketURL,
+                    cUrl: cUrl,
+                    cardToken: res.data.cardToken,
+                    resolvingPower: res.data.resolvingPower,
+                  });
+                }
+              } else {
+                $.toast('网络异常,请稍后重试', 'text');
+              }
+            } else {
+              $.toast('画面异常,请重新进入', 'text');
+              clearInterval(intervaler);
+              quit();
+              ws.close();
+              wsss.close();
+            }
+          },
+        });
+      }
 
       var jmuxer = new JMuxer({
         node: 'playerVideo',
@@ -324,7 +460,7 @@
       };
       var ws,
         errorTime = 0;
-      doConnect();
+
       // 节流
       // 设置一个标志
       function throttle(fn, delay) {
@@ -340,7 +476,7 @@
         };
       }
       var intervaler;
-      function doConnect() {
+      function doConnectBusiness() {
         ws = new WebSocket(socketURL);
         ws.binaryType = 'arraybuffer';
         intervaler = setInterval(() => {
@@ -363,7 +499,7 @@
         ws.addEventListener('error', function (event) {
           ws.close();
           clearInterval(intervaler);
-          throttle(doConnect, 100);
+          throttle(doConnectBusiness, 100);
           if (errorTime > 1000) {
             $.toast('画面异常,请重新进入', 'text');
             wsss.close();
@@ -547,11 +683,7 @@
               var checkBuffer = GetScreenState();
               ws.send(checkBuffer);
             } else {
-              $.toast('画面异常,请重新进入', 'text');
-              clearInterval(intervaler);
-              quit();
-              ws.close();
-              wsss.close();
+              connect('update');
             }
           }
           if (input[23] == 0x05) {
@@ -601,9 +733,6 @@
         return false;
       }
 
-      var form = {};
-      form.token = parameters['token'];
-      form.userCardId = parameters['userCardId'];
       function array_unique(arr) {
         return arr.filter(function (e, i) {
           return arr.indexOf(e) === i;
@@ -621,7 +750,7 @@
           $.ajax({
             url: baseUrl + '/api/public/v5/shear/content',
             headers: {
-              Authorization: form.token,
+              Authorization: token,
             },
             type: 'get',
             dataType: 'json',
@@ -684,7 +813,7 @@
           $.ajax({
             url: baseUrl + '/api/public/v5/shear/content?' + ids,
             headers: {
-              Authorization: form.token,
+              Authorization: token,
             },
             type: 'DELETE',
             dataType: 'json',
@@ -712,7 +841,7 @@
         $.ajax({
           url: baseUrl + '/api/public/v5/shear/content?ids=' + id,
           headers: {
-            Authorization: form.token,
+            Authorization: token,
           },
           type: 'DELETE',
           dataType: 'json',
@@ -983,16 +1112,15 @@
           $.ajax({
             url: baseUrl + '/api/pay/v5/trialCodeConfig/getConfigByPhoneType',
             headers: {
-              Authorization: form.token,
+              Authorization: token,
             },
             data: {
-              userCardId: form.userCardId,
-              phoneType: form.mealType,
+              userCardId: userCardId,
+              phoneType: mealType,
             },
             type: 'get',
             dataType: 'json',
             success: function (res) {
-              console.log(res);
               let obj = res.data;
               if (res.status === 0) {
                 resolve(obj);
@@ -1009,7 +1137,7 @@
           $.ajax({
             url: baseUrl + '/api/resources/v4/freetrial/setmeal/list',
             headers: {
-              Authorization: form.token,
+              Authorization: token,
             },
             type: 'get',
             dataType: 'json',
@@ -1043,7 +1171,7 @@
         return $.ajax({
           url: baseUrl + '/api/public/v5/advertising/getAdInfoByAdPlace',
           headers: {
-            Authorization: form.token,
+            Authorization: token,
           },
           data: JSON.stringify({
             adPlace: adType,
@@ -1254,10 +1382,10 @@
         $.ajax({
           url: baseUrl + '/api/resources/v1/trial/report',
           headers: {
-            Authorization: form.token,
+            Authorization: token,
           },
           data: JSON.stringify({
-            userCardId: form.userCardId,
+            userCardId: userCardId,
             reportType: type,
           }),
           type: 'POST',
@@ -1266,6 +1394,19 @@
           success: function (res) {},
         });
       }
+      // 观看广告次数上报
+      function reportFrequency() {
+        $.ajax({
+          url: baseUrl + '/api/resoures/v1/trial/reportFrequency/' + form.userCardId,
+          headers: {
+            Authorization: form.token
+          },
+          type: 'post',
+          contentType: 'application/json',
+          dataType: 'json',
+          success: function (res) {},
+        });
+      }
       //关闭广告
       $('.time-close-wrap')[0].addEventListener('click', () => {
         if(videoTime == 0) {
@@ -1323,7 +1464,12 @@
         } else {
           // 过期续费按钮进入
           wx.miniProgram.navigateTo({
-            url: `/packageA/order/renew/index?buyType=${sourceType == 1 ? '试用弹窗购买按钮进入-普通试用' : '试用弹窗购买按钮进入-激活码试用'}&record=` + form.userCardId,
+            url:
+              `/packageA/order/renew/index?buyType=${
+                sourceType == 1
+                  ? '试用弹窗购买按钮进入-普通试用'
+                  : '试用弹窗购买按钮进入-激活码试用'
+              }&record=` + userCardId,
           });
         }
       });
@@ -1350,7 +1496,7 @@
         $.ajax({
           url: baseUrl + '/api/public/v1/systemBuriedPoint/stat',
           headers: {
-            Authorization: form.token,
+            Authorization: token,
           },
           type: 'post',
           data: JSON.stringify({
@@ -1361,19 +1507,6 @@
           success: function (res) {},
         });
       }
-      // 观看广告次数上报
-      function reportFrequency() {
-        $.ajax({
-          url: baseUrl + '/api/resoures/v1/trial/reportFrequency/' + form.userCardId,
-          headers: {
-            Authorization: form.token
-          },
-          type: 'post',
-          contentType: 'application/json',
-          dataType: 'json',
-          success: function (res) {},
-        });
-      }
       function quit() {
         if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
           tt.miniProgram.switchTab({
@@ -1394,6 +1527,7 @@
         wsss.close();
       };
     </script>
+    <script type="text/javascript" src="WXdraw.js"></script>
     <script type="text/javascript" src="aac.js"></script>
   </body>
 </html>