Przeglądaj źródła

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

heyang 3 lat temu
rodzic
commit
61d96d998c

+ 1 - 1
androidscloudH5/gzhDownload.html

@@ -86,7 +86,7 @@
 
   function clickDown() {
     if (isAndroid) {
-      window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/13d0arghebcc4cm49cf04/LowLevelMultipartUpload_17835766588148940877' : 'http://110.53.221.195:8210/document/newFile/download/1/13d0arghebcc4cm49cf04/LowLevelMultipartUpload_17835766588148940877'
+      window.location.href = window.location.protocol === 'https:' ? 'https://file.phone.androidscloud.com:8121/document/newFile/download/1/${uploadKey}/LowLevelMultipartUpload_17835766588148940877' : 'http://110.53.221.195:8210/document/newFile/download/1/${uploadKey}/LowLevelMultipartUpload_17835766588148940877'
     }
     if (isiOS) {
       window.location.href = window.location.href = 'https://www.pgyer.com/gemini6'

+ 98 - 3
microserviceUserH5/static/css/anniversaryCelebrate.css

@@ -433,7 +433,7 @@ ul, li {
   border-bottom: 0.01rem solid rgba(91, 180, 255, 1);
 }
 
-.rule-mask,.award-result-mask,.no-start-mask {
+.law-mask,.rule-mask,.award-result-mask,.no-start-mask {
   width: 100%;
   height: 100vh;
   position: fixed;
@@ -456,6 +456,30 @@ ul, li {
   transform: translateX(-50%);
 }
 
+.law-result-dialog{
+  width: 5.52rem;
+  height: 7.16rem;
+  background: url(../../static/img/anniversaryCelebrate/law-bg.png) no-repeat;
+  background-size: 100% 100%;
+  border-radius: 0.2rem;
+  position: absolute;
+  left: 50%;
+  top: -10.86rem;
+  transform: translateX(-50%);
+}
+
+.rule-result-dialog{
+  width: 5.52rem;
+  height: 8.93rem;
+  background: url(../../static/img/anniversaryCelebrate/rule-bg.png) no-repeat;
+  background-size: 100% 100%;
+  border-radius: 0.2rem;
+  position: absolute;
+  left: 50%;
+  top: -10.86rem;
+  transform: translateX(-50%);
+}
+
 .award-result-one-dialog{
   width: 5.52rem;
   height: 8.11rem;
@@ -468,8 +492,17 @@ ul, li {
   transform: translateX(-50%);
 }
 
+.award-success{
+  width: 5.8rem;
+  height: 3.44rem;
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: none;
+}
+
 .award-result-wrap{
-  width: 5.6rem;
+  margin-left: 0.2rem;
 }
 
 .award-result-tip{
@@ -513,6 +546,34 @@ ul, li {
   margin-left: 1rem;
 }
 
+.many-card-item:nth-child(6n) {
+  padding-top: 0.35rem;
+  margin-left: 1rem;
+}
+
+.many-card-item:nth-child(7n) {
+  padding-top: 0.35rem;
+}
+
+.many-one-card{
+  padding-top: 0.35rem;
+  margin-left: 1rem;
+}
+
+.many-two-card{
+  padding-top: 0.35rem;
+}
+
+.line{
+  position: absolute;
+  bottom: 3.2rem;
+  left: 0.6rem;
+  width: 4.35rem;
+  height: 0.01rem;
+  background: #F1F3FE;
+  opacity: 0.5;
+}
+
 .many-card-item{
   display: none;
 }
@@ -558,10 +619,16 @@ ul, li {
 }
 
 .one-result{
+  display: flex;
+  flex-wrap: wrap;
   margin-bottom: 1.2rem;
 }
 
-.award-result-close{
+.one-card-item{
+  width: 5.52rem;
+}
+
+.rule-close,.law-close,.award-result-close{
   width: 0.68rem;
   height: 0.68rem;
   position: absolute;
@@ -570,6 +637,34 @@ ul, li {
   transform: translateX(-50%);
 }
 
+.rule-content{
+  width: 5.52rem;
+  height: 6.6rem;
+  padding: 0.2rem 0;
+  border-radius: 0.1rem;
+  overflow-y: scroll;
+  position: absolute;
+  top: 1.8rem;
+}
+
+.law-content{
+  top: 0;
+}
+
+.light-show{
+  position: absolute;
+  top: -0.8rem;
+  left: 1.2rem;
+  animation: mymove 0.8s;
+  display: none;
+}
+
+.rule-point{
+  margin: 0 0.2rem;
+  font-size: 0.24rem;
+  line-height: 0.48rem;
+}
+
 #toast-container>.toast-error {
   background-image: none !important;
 }

BIN
microserviceUserH5/static/img/anniversaryCelebrate/award-result.png


BIN
microserviceUserH5/static/img/anniversaryCelebrate/award-success.png


BIN
microserviceUserH5/static/img/anniversaryCelebrate/first.png


BIN
microserviceUserH5/static/img/anniversaryCelebrate/get-award-show.png


BIN
microserviceUserH5/static/img/anniversaryCelebrate/law-bg.png


BIN
microserviceUserH5/static/img/anniversaryCelebrate/rule-bg.png


BIN
microserviceUserH5/static/img/anniversaryCelebrate/second.png


+ 1 - 1
microserviceUserH5/static/js/vender/config.js

@@ -1,7 +1,7 @@
 var url = window.location.href;
 url = url.split('/');
 var baseUrl = url[0] + '//' + url[2];
-// var baseUrl = 'http://14.18.190.141:24380'
+var baseUrl = 'http://14.18.190.141:1280'
 // var baseUrl = 'http://prese.phone.androidscloud.com'
 // var baseUrl = 'http://vclusters.imwork.net:2221'
 

+ 8 - 0
microserviceUserH5/static/js/vender/vue/config.js

@@ -13,6 +13,14 @@ var base_url = baseUrl; //测试服务器
 
 
 const fileCenterApi = 'https://file.phone.androidscloud.com:8121';
+let uploadKey = ''
+if (window.location.origin.includes('client.phone.androidscloud.com')) {
+  uploadKey = 'edv834e74a9c43eaac02'
+} else if (window.location.origin.includes('prese.phone.androidscloud')) {
+  uploadKey = '347905r86eb745a1sc38'
+} else {
+  uploadKey = '13d0arghebcc4cm49cf04'
+}
 //const fileCenterApi = 'https://prese.phone.androidscloud.com/'
 // https://prese.phone.androidscloud.com/
 // https://prese.phone.androidscloud.com/

+ 278 - 60
microserviceUserH5/vcloud/anniversaryCelebrate.html

@@ -26,6 +26,8 @@
 		</div>
 		<div class="star-wrap">
 			<img class="star" src="../static/img/anniversaryCelebrate/star.png" />
+			<img class="light-show" src="../static/img/anniversaryCelebrate/light-show.gif" />
+			<img class="award-success" src="../static/img/anniversaryCelebrate/award-success.png" />
 			<div class="point-wrap"></div>
 		</div>
 		<div class="station-wrap">
@@ -63,7 +65,7 @@
 				<div class="change-wrap">
 					<div class="get-award-wrap">
 						<img class="award-img" src="../static/img/anniversaryCelebrate/left-bg.png" />
-						<img class="get-award-img" src="../static/img/anniversaryCelebrate/get-award-hidden.png" />
+						<img class="get-award-img" src="../static/img/anniversaryCelebrate/get-award-show.png" />
 						<div class="get-award-text">领取</div>
 					</div>
 					<div class="get-award-wrap">
@@ -92,6 +94,7 @@
 			<div class="award-result-dialog-sure">
 				<div class="have-times-wrap">
 					<div class="award-result-tip"></div>
+					<div class="line"></div>
 					<div class="card-wrap award-result-wrap"></div>
 					<div class="btn-row">
 						<img class="award-btn continue-lighten" src="../static/img/anniversaryCelebrate/continue-lighten.png" />
@@ -102,6 +105,83 @@
 				<img class="award-result-close" src="../static/img/anniversaryCelebrate/close.png" />
 			</div>
 		</div>
+		<div class="rule-mask">
+			<div class="rule-result-dialog">
+				<div class="rule-content">
+					<div class="rule-point">1、本次活动参与活动的套餐是星曜月卡、年卡套餐,其他套餐不参与活动,现金购买及续费皆可参与活动</div>
+					<div class="rule-point">2、激活码、优惠券、星币购买的订单不参与本次活动</div>
+					<div class="rule-point">3、本次活动购买限时折扣次数不限,获得赠送天数,可分配在购买套餐的云机账户上,单账号购买新增云机总数上限为200台</div>
+					<div class="rule-point">4、本次活动赠送星曜机型,单次点亮赠送天数1~30天随机,外环全部点亮额外获得88天,内环全部点亮额外赠送188天,10次可全部点亮</div>
+					<div class="rule-point">5、已点亮位置单次不会重复点亮,活动奖励即时领取,单次活动全部点亮后重置点亮进度,可再次进行点亮活动。</div>
+					<div class="rule-point">6、运营平台有权对用户购买数据进行审核,如发现活动订单中存在异常情况(包括任何形式的用户作弊行为),有权取消优惠,退款处理。</div>
+				</div>
+				<img class="rule-close" src="../static/img/anniversaryCelebrate/close.png" />
+			</div>
+		</div>
+		<div class="law-mask">
+			<div class="law-result-dialog">
+				<div class="rule-content law-content">
+					<div class="rule-point">
+						法律声明:
+					</div>
+					<div class="rule-point">
+						1.同一用户是指使用同一帐号、同一手机号、同一设备或同一提现账户的用户。上述与用户身
+						份相关的信息,其中任意一项或数项相同,或通过特定标记形成关联,或活动平台有合理理由认
+						为存在关联的,都视为同一个用户。部分参与方式中,对用户帐号有限制,同一个设备最多可使
+						用一个帐号参与活动,同一帐号最多可以使用一台设备参与活动;用户使用多个帐号在同一个设
+						备上登录的,视为同一用户,仅有一个帐号可参与本活动。
+					</div>
+					<div class="rule-point">
+						2.用户不得采取任何不正当或作弊的违规手段参与本活动,一经发现,活动平台有权限制或取
+						消用户参与活动的资格,有权取消奖励、追讨用户已领取的奖励(或同等价值的现金)。活动平
+						台有权对违规用户采取限制登录、封禁帐号、限制提现的措施,并保留追究用户其他法律责任的
+						权利。违规手段包括但不仅限于:
+					</div>
+					<div class="rule-point">2.1通过不正当手段参与活动。例如使用模拟器、插件、软件外挂、物理外挂等违规工具参与活动,与其他用户串通采取不正当手段谋取活动奖励等;</div>
+					<div class="rule-point">2.2扰乱本活动秩序。例如使用多个帐号参与活动,修改个人位置信息,篡改设备数据,买卖用户帐号,买卖活动权益,买卖领奖资格等;</div>
+					<div class="rule-point">2.3干扰活动平台正常运营。例如批量注册用户帐号,违规使用用户帐号,采用技术手段对活动平台进行干扰、破坏、修改或施加其他影响;</div>
+					<div class="rule-point">2.4利用本活动进行违法犯罪。例如利用本活动洗钱、套现、诈骗,或开展其他违反国家法律法规的活动;</div>
+					<div class="rule-point">2.5其他违反法律法规,违背诚实信用原则,违反活动规则,或活动平台认为的不正当手段。</div>
+					<div class="rule-point">
+						3.如因以下原因导致活动不能正常举办、用户无法参与或参与失败、活动奖励发放错误等,活
+						动平台/本活动有权暂停或取消活动,且不承担任何法律责任或不利后果:
+					</div>
+					<div class="rule-point">3.1不可抗力,包括但不仅限于自然灾害,有权机关的政策要求,政府机关指令,重大疫情影响等不能预见、不可避免、不能克服的情况;</div>
+					<div class="rule-point">3.2活动平台发生技术故障,本活动受到不正当技术手段干扰、破坏、篡改或被施加其他影响,第三方平台限制活动平台或本活动,或其他导致本活动的正常秩序受到干扰的情况;</div>
+					<div class="rule-point">3.3用户所在地区网络故障、支付平台故障、电信运营商故障等非活动平台所能控制的情况。</div>
+					<div class="rule-point">
+						4.活动平台不支持用户通过众包或类似方式参与活动。如用户因此遭受经济损失的,活动平台
+						不承担任何赔偿或补偿责任。
+					</div>
+					<div class="rule-point">
+						5.商品展示的划线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或品牌供应商提供
+						的指导价、建议零售价或该商品在电商平台及/或其他渠道曾展示过的销售价,并非原价;由于
+						地区等差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与电商平台展示的不一致,
+						该价格仅供用户参考。
+					</div>
+					<div class="rule-point">
+						6.若由于用户自身原因(包括但不限于参与方式不符合活动规则、未按活动规则要求提供收件
+						地址、操作不当造成产品功能故障等)导致无法实际享有奖励的,视为用户自愿放弃奖励,活动
+						平台将不会也无义务给予任何形式的补偿。
+					</div>
+					<div class="rule-point">
+						7.任何第三方以活动平台名义从事欺诈行为造成用户损失的,活动平台无需为此承担法律责任。
+					</div>
+					<div class="rule-point">
+						8.活动平台和电商平台的《用户协议》《隐私政策》(以手机客户端对应名称为准)及其他规
+						范同样适用于本活动,本活动规则与活动平台和电商平台《用户协议》《隐私政策》及其他规范
+						相冲突的,以本活动规则为准。本活动规则未约定的内容,以活动平台和电商平台的《用户协议》
+						《隐私政策》及其他平台规范为准。
+					</div>
+					<div class="rule-point">
+						9.在法律法规允许的范围内,活动平台有权对本活动规则进行变动或调整,相关变动或调整将
+						公布在活动规则页面上,并于公布时即时生效,用户继续参与活动则视为同意并接受变动或者调
+						整后的活动规则。如果用户拒绝活动规则的变更或者调整,请放弃参与变更后的活动。
+					</div>
+				</div>
+				<img class="law-close" src="../static/img/anniversaryCelebrate/close.png" />
+			</div>
+		</div>
 		<div class="no-start-mask">
 			<div class="no-start-dialog">
 				<div>活动暂未开启</div>
@@ -115,7 +195,7 @@
 	</script>
 	<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
 	<script type="text/javascript">
-        var baseUrl = 'http://192.168.31.198'
+        // var baseUrl = 'http://192.168.31.198'
 	    let timer,flag = true;
 		var url = window.location.href;
 		url = url.split('/')
@@ -136,8 +216,19 @@
 			receive = 0,
 			lighten = [],
 			notReceive = true,
+			phoneRemainQuantity = 0,
 			isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
 		// 初始化数据
+		window.onload = function(){
+			if (isAndroid && window.native) {
+				window.native.enableSharePage(
+					'您的好友送你一台免费云机',
+					'您的好友送你一台免费云机',
+					`${baseUrl}/h5/microserviceUserH5/vcloud/anniversaryCelebrate.html`,
+					'https://test.androidscloud.com/file-center/fileOperate/getImage?id=215553'
+				);
+			}
+		}
 		init();
 		function init() {
 			$.ajax({
@@ -152,7 +243,14 @@
 				success: function (res) {
 					if(res.status === 0){
 						residueDegree = res.data.residueDegree;
-						lighten = res.data.lighten.split(','), str = '';
+						result = res.data.lighten;
+						lighten = result.split(','), str = '';
+						$('.rest-number').eq(0).text(residueDegree);
+						$('.light-number').eq(0).text(res.data.allTotal);
+						if(result == ''){
+							return
+						}
+						//更新点亮星星
 						$('.point-wrap').eq(0).empty();
 						for (let i = 0; i < lighten.length; i++) {
 							if([1, 3, 5, 7, 12].includes(lighten[i])){
@@ -162,8 +260,6 @@
 							}
 						}
 						$('.point-wrap').eq(0).append(str);
-						$('.rest-number').eq(0).text(residueDegree);
-						$('.light-number').eq(0).text(res.data.allTotal);
 					}else{
 						stopManyClick(() =>{
 							toastr.error(res.msg)
@@ -177,33 +273,29 @@
 		//点击抽奖
 		$('.once-btn')[0].addEventListener('click',() => {
 			if(!animationFlag) return;
-			operate('sf_2022_h5_抽奖1次');
-			if(anniversarySwitch === 1){
-				stopManyClick(() =>{
-					toastr.error('该活动暂未开启,请稍安勿躁');
-				})
-			}else if(anniversarySwitch === 2 && receiveSwitch === 0){
-				stopManyClick(() =>{
-					toastr.error('活动已结束,期待下次的见面');
-				})
-			}else{
-				handleAward(1)
+			if(lighten.length == 9){
+				$('.point-wrap').eq(0).empty();
+				$('.light-show').show();
+				setTimeout(() => {
+					$('.light-show').hide();
+					$('.award-success').show();
+				},800)
 			}
+			handleAward(1);
+			operate('sf_2022_h5_抽奖1次');
 		},false);
 		$('.five-btn')[0].addEventListener('click',() => {
 			if(!animationFlag) return;
-			operate('znq_2022_h5_抽奖5次');
-			if(anniversarySwitch === 1){
-				stopManyClick(() =>{
-					toastr.error('该活动暂未开启,请稍安勿躁');
-				})
-			}else if(anniversarySwitch === 2 && receiveSwitch === 0){
-				stopManyClick(() =>{
-					toastr.error('活动已结束,期待下次的见面');
-				})
-			}else{
-				handleAward(5)
+			if(lighten.length + 5 >= 10){
+				$('.point-wrap').eq(0).empty();
+				$('.light-show').show();
+				setTimeout(() => {
+					$('.light-show').hide();
+					$('.award-success').show();
+				},800)
 			}
+			handleAward(5);
+			operate('znq_2022_h5_抽奖5次');
 		},false);
 		//点击再抽
 		$('.continue-lighten')[0].addEventListener('click',() => {
@@ -231,21 +323,54 @@
 					if(res.status === 0){
 						let imgNumber = 0,
 							str = '',
+							otherData = [],
 							list = res.data.anniversaryAwards;
+						// 188 88放在最后
+						list.map(item => {
+							if(item.awardType != 0){
+								otherData.push(item)
+							}
+						});
+						if(otherData.length > 0) {
+							$('.line').show();
+						} else {
+							$('.line').hide();
+						}
+						let currData = list.filter(item => item.awardType == 0);
+						list = [...currData, ...otherData];
 						if(type !== 'report'){
 							$('.award-result-dialog-sure').animate({top: '1.86rem'},"fast");
 							$('.award-result-mask').show();
 							document.documentElement.style.overflow='hidden';
 						}
+						if(lighten.length != 10){
+							$('.award-success').hide();
+						}
 						$('.award-result-wrap').eq(0).text('');
 						if(times === 1){
 							$('.award-result-dialog-sure')[0].className = 'award-result-dialog-sure award-result-one-dialog';
 							$('.award-result-tip').eq(0).text('换个姿势,再抽一次');
 							$('.award-result-wrap')[0].className = 'card-wrap award-result-wrap one-result';
-							str = `<div class="card-item">
-										<img class="one-card" src="../static/img/anniversaryCelebrate/day-card.png" />
-										<div class="card-text">星曜${list[0].awardDurations}天卡</div>
-									</div> `
+							for (let i = 0; i < list.length; i++) {
+								if(list[i].awardType == 0){
+									str += `<div class="card-item one-card-item">
+												<img class="one-card" src="../static/img/anniversaryCelebrate/day-card.png" />
+												<div class="card-text">星曜${list[0].awardDurations}天卡</div>
+											</div>`
+								} else {
+									if(list[i].awardDurations == 88){
+										str += `<div class="card-item many-one-card">
+												<img class="many-card" src="../static/img/anniversaryCelebrate/first.png" />
+												<div class="card-text">星曜${list[1].awardDurations}天卡</div>
+											</div>`
+									} else {
+										str += `<div class="card-item many-two-card">
+												<img class="many-card" src="../static/img/anniversaryCelebrate/second.png" />
+												<div class="card-text">星曜${list[2].awardDurations}天卡</div>
+											</div>`
+									}
+								}
+							}
 							setTimeout(() => {
 								animationFlag = true;
 							},1000);
@@ -254,14 +379,28 @@
 							$('.award-result-tip').eq(0).text('善良的人,好运气最终是会眷顾你');
 							$('.award-result-wrap')[0].className = 'card-wrap award-result-wrap many-card-wrap'
 							for (let i = 0; i < list.length; i++) {
-								str += `<div class="card-item many-card-item">
-											<img class="many-card" src="../static/img/anniversaryCelebrate/day-card.png" />
-										    <div class="card-text">星曜${list[i].awardDurations}天卡</div>
-										</div>`
+								if(list[i].awardType == 0){
+									str += `<div class="card-item many-card-item">
+												<img class="many-card" src="../static/img/anniversaryCelebrate/day-card.png" />
+												<div class="card-text">星曜${list[i].awardDurations}天卡</div>
+											</div>`
+								} else {
+									if(list[i].awardDurations == 88){
+										str += `<div class="card-item many-card-item">
+												<img class="many-card" src="../static/img/anniversaryCelebrate/first.png" />
+												<div class="card-text">星曜${list[i].awardDurations}天卡</div>
+											</div>`
+									} else {
+										str += `<div class="card-item many-card-item">
+												<img class="many-card" src="../static/img/anniversaryCelebrate/second.png" />
+												<div class="card-text">星曜${list[i].awardDurations}天卡</div>
+											</div>`
+									}
+								}
 							}
 							var imgTimer2 = setInterval(() => {
 									$('.many-card-item').eq(imgNumber).css('display', 'block');
-									if(imgNumber >= 4){
+									if(imgNumber >= 6){
 										clearInterval(imgTimer2);
 										animationFlag = true;
 									}
@@ -334,21 +473,22 @@
 						let str = '',
 						    records = res.data.records;
 							pages = res.data.pages;
-							if(records.length === 0){
-				                $('.title-row').eq(0).css('display', 'none');
-								if(receive == 1 && parseInt(notReceive) > 0){
-									str = '<div class="no-award">暂无已分配云手机</div>'
-								}else{
-									str = `<div class="no-award">没有${receive === 1 ? '已使用' : '领取'}记录,我都替你着急</div>`
-								}
+						$('.light-content-list').eq(0).empty();
+						if(records.length === 0){
+							$('.title-row').eq(0).css('display', 'none');
+							if(receive == 1 && parseInt(notReceive) > 0){
+								str = '<div class="no-award">暂无已分配云手机</div>'
 							}else{
-				                $('.title-row').eq(0).css('display', 'flex');
+								str = `<div class="no-award">没有${receive === 1 ? '已使用' : '领取'}记录,我都替你着急</div>`
 							}
+						}else{
+							$('.title-row').eq(0).css('display', 'flex');
+						}
 						for (var i = 0; i < records.length; i++) {
 							str += `<div class="light-content-wrap">
 										<div class="light-content-text">获得星曜${records[i].awardDurations}天时长</div>
-										<div class="light-content-time">${records[i].createTime.substr(6)}</div>
-										<div class="get-btn ${records[i].receive === 1 ? 'btn-active' : ''}" data-index=${i}>领取</div>
+										<div class="light-content-time" >${records[i].createTime.substr(6)}</div>
+										<div class="get-btn ${records[i].receive === 1 ? 'btn-active' : ''}" data-awardid=${records[i].id} data-awardName=${records[i].userName}>领取</div>
 									</div>`
 						}
 						$('.light-content-list').eq(0).append(str)
@@ -363,22 +503,100 @@
 		}
 		//点击领取按钮
 		$('.light-content-list')[0].addEventListener('click',(e) => {
-			if(e.target.className === 'light-content-list'){
-				return
-			}
-			receive = e.target.dataset.index;
-			if(receive == 1){
-				$('.award-change-btn')[0].className = 'award-change-btn'
-			}else{
-				$('.award-change-btn')[1].className = 'award-change-btn'
+			console.log(e)
+			if (e.target.className === 'get-btn ') {
+				let awardId = parseInt(e.target.dataset.awardid);
+				let awardName = e.target.dataset.awardname;
+				console.log(awardId)
+				console.log(awardName)
+				if (isMiniprogram) { // 小程序
+					wx.miniProgram.navigateTo({
+						url: `/packageA/activityCloudPhone/index?id=${awardId.toString()}&awardName=${awardName}`
+					})
+				} else if (isAndroid) { // 安卓
+					window.native.activatePhone(2, awardId, awardName);
+				} else if (isiOS) {
+					window.webkit.messageHandlers.activatePhone.postMessage({ type: 2, awardId: awardId, awardName: awardName });
+				}
 			}
-			$('.data-list').eq(0).text('');
-			pageNum = 1;
-			pages = 0;
-			recordFlag = true;
-			getAward();
-			$('.award-change-btn')[receive].className = 'award-change-btn active'
 		},false);
+		//点击规则
+		$('.rule-wrap')[0].addEventListener('click',(e) => {
+			$('.rule-result-dialog').animate({top: '1.86rem'},"fast");
+			$('.rule-mask').show();
+			document.documentElement.style.overflow='hidden';
+		},false);
+		//关闭规则
+		$('.rule-close')[0].addEventListener('click',() => {
+			$('.rule-result-dialog').animate({top: '-10.96rem'},"fast");
+			$('.rule-mask').hide();
+			document.documentElement.style.overflow='auto';
+		},false);
+		//点击法律声明
+		$('.law-statement')[0].addEventListener('click',(e) => {
+			$('.law-result-dialog').animate({top: '1.86rem'},"fast");
+			$('.law-mask').show();
+			document.documentElement.style.overflow='hidden';
+		},false);
+		//关闭法律声明
+		$('.law-close')[0].addEventListener('click',() => {
+			$('.law-result-dialog').animate({top: '-10.96rem'},"fast");
+			$('.law-mask').hide();
+			document.documentElement.style.overflow='auto';
+		},false);
+		//点击获取次数
+		$('.get-times')[0].addEventListener('click',() => {
+		    operate('sf_2022_h5_获取次数按钮');
+			stopManyClick(() =>{
+				if (isMiniprogram) { // 小程序
+					if(phoneRemainQuantity > 0){
+						wx.miniProgram.navigateTo({
+							url: '/packageA/order/buy/index?type=activity'
+						})
+					} else {
+						wx.miniProgram.navigateTo({
+							url: '/packageA/order/renew/index?type=activity'
+						})
+					}
+				} else if (isAndroid) { // 安卓
+					if(phoneRemainQuantity > 0){
+						window.native.startPurchase(1, 365);
+					} else {
+						window.native.startRenew();
+					}
+				} else if (isiOS) {
+					if(phoneRemainQuantity > 0){
+						window.webkit.messageHandlers.startPurchase.postMessage({ type: 1, day: 365 });
+					} else {
+						window.webkit.messageHandlers.startRenew.postMessage({ type: 1, day: 365 });
+					}
+				}
+			})
+		},false);
+		//获取云机数量
+		getPhoneNumber();
+		function getPhoneNumber(){
+			$.ajax({
+				url: baseUrl + '/api/pay/v2/meal/info?phoneType=SVIP',
+				type: 'get',
+				headers: {
+					'Authorization': id //id
+				},
+				contentType: "application/json",
+				dataType: 'json',
+				cache: false,
+				success: function (res) {
+					if(res.status === 0){
+						phoneRemainQuantity = res.data.list[0].phoneRemainQuantity;
+					}else{
+						stopManyClick(() =>{
+							toastr.error(res.msg)
+						})
+					}
+					
+				},
+			})
+		}
 		//埋点
 		function operate(pointName){
 			$.ajax({

+ 1 - 1
microserviceUserH5/vcloud/browser.html

@@ -63,7 +63,7 @@
 					let node = '';
 					for(let i=0; i < list.length; i++){
 						node += `<div class="tag-item" data-plateName="${list[i].plateName}" data-id="${list[i].id}">
-									<img class="icon-row" data-plateName="${list[i].plateName}" data-id="${list[i].id}" src=${fileCenterApi}/document/newFile/download/0/13d0arghebcc4cm49cf04?fileKey=${list[i].iconImage} />
+									<img class="icon-row" data-plateName="${list[i].plateName}" data-id="${list[i].id}" src=${fileCenterApi}/document/newFile/download/0/${uploadKey}?fileKey=${list[i].iconImage} />
 									<div class="icon-title" data-plateName="${list[i].plateName}" data-id="${list[i].id}">${list[i].plateName}</div>
 									<img class="right-arrow" src="../static/img/browser/right-arrow.png" data-plateName="${list[i].plateName}" data-id="${list[i].id}" />
 									<div class="right-arrow-heght"></div>

+ 2 - 2
microserviceUserH5/vcloud/browserDetail.html

@@ -141,7 +141,7 @@
 						for(let i=0; i < appList.length; i++){
 							node += `<div class="download-item">
 										<div class="main-wrap">
-											<img class="app-icon" src=${fileCenterApi}/document/newFile/download/0/13d0arghebcc4cm49cf04?fileKey=${appList[i].iconKey} />
+											<img class="app-icon" src=${fileCenterApi}/document/newFile/download/0/${uploadKey}?fileKey=${appList[i].iconKey} />
 											<div class="app-wrap">
 												<div class="app-title">${appList[i].appName}</div>
 												<div class="app-description">${appList[i].introduction}</div>
@@ -231,7 +231,7 @@
 				cache: false,
 				success: function (res) {
 					if(res.status === 0){
-						const downloadUrl = `${fileCenterApi}/document/newFile/breakpointDownloadFile/13d0arghebcc4cm49cf04?fileKey=${key}`;
+						const downloadUrl = `${fileCenterApi}/document/newFile/breakpointDownloadFile/${uploadKey}?fileKey=${key}`;
 						window.location.href = downloadUrl;
 						let xhr = new XMLHttpRequest();
 						xhr.open('GET', downloadUrl, true);

+ 7 - 1
screenAndroid/WXdraw.js

@@ -102,10 +102,16 @@ function doConnect() {
               tt.miniProgram.switchTab({
                 url: '/pages/home/home'
               })
-            } else {
+            } else if (window.__wxjs_environment === 'miniprogram') {
               wx.miniProgram.switchTab({
                 url: '/pages/home/home'
               })
+            } else {
+              document.addEventListener('UniAppJSBridgeReady', function () {
+                uni.navigateTo({
+                  url: '/pages/index/index'
+                });
+              })
             }
           });
         } else {

+ 106 - 87
screenAndroid/WXtrialInterface.html

@@ -45,19 +45,19 @@
         background: rgba(0, 0, 0, 0.5);
       display: none;
     }
-      
-    .try-use-container{
+
+    .try-use-container {
       width: 80%;
       height: 409px;
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        transform: translate(-50%, -50%);
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
       background-color: #FFFFFF;
       border-radius: 0.66em;
     }
 
-    .time-close-wrap{
+    .time-close-wrap {
       width: 5.46em;
       height: 2em;
       line-height: 2em;
@@ -71,18 +71,18 @@
       color: #FFFFFF;
     }
 
-    .bug-wrap{
+    .bug-wrap {
       width: 90%;
       height: 115px;
       background: #FFFFFF;
       border-radius: 10px;
       position: absolute;
-        top: 50%;
-        left: 50%;
-        transform: translate(-50%, -50%);
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
     }
 
-    .bug-title{
+    .bug-title {
       text-align: center;
       margin: 25px 0;
       font-size: 18px;
@@ -90,11 +90,11 @@
       color: #333333;
     }
 
-    .btn-list{
+    .btn-list {
       width: 100%;
       height: 44px;
       line-height: 44px;
-      border-top: 1px solid rgba(238,238,238,1);
+      border-top: 1px solid rgba(238, 238, 238, 1);
       position: absolute;
       bottom: 0;
       left: 0;
@@ -102,20 +102,20 @@
       align-items: center;
     }
 
-    .btn{
+    .btn {
       flex: 1;
       text-align: center;
     }
 
-    .cannel-btn{
+    .cannel-btn {
       font-size: 18px;
       color: #666666;
     }
 
-    .go-bug{
+    .go-bug {
       font-size: 18px;
       color: #3B7FFF;
-      border-left: 1px solid rgba(238,238,238,1);
+      border-left: 1px solid rgba(238, 238, 238, 1);
     }
   </style>
 </head>
@@ -273,7 +273,7 @@
     }
     //云机倒计时
     let validTime = parameters['validTime'] || 10000;
-    if(validTime > 32000) {
+    if (validTime > 32000) {
       validTime = 32000
     }
     let detailTime = validTime * 60 * 1000;
@@ -309,9 +309,7 @@
     var ip = parameters["ip"];
     var cardToken = parameters["cardToken"];
     cardToken = cardToken && decodeURIComponent(cardToken);
-    console.log(decodeURIComponent(cardToken));
     var appletPushAddress = parameters["appletPushAddress"];
-    // "&type=business"
     var socketURL = isWSS ? "wss://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken + "&type=business" : "ws://" + appletPushAddress + "?cardIp=" + ip + "&token=" + cardToken;
 
     var jmuxer = new JMuxer({
@@ -440,17 +438,38 @@
       });
     }
 
+    var hidden, visibilityChange; 
+    if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support 
+      hidden = "hidden";
+      visibilityChange = "visibilitychange";
+    } else if (typeof document.msHidden !== "undefined") {
+      hidden = "msHidden";
+      visibilityChange = "msvisibilitychange";
+    } else if (typeof document.webkitHidden !== "undefined") {
+      hidden = "webkitHidden";
+      visibilityChange = "webkitvisibilitychange";
+    }
+
+    // 处理页面可见属性的改变
     document.addEventListener("visibilitychange", function () {
-      if (document.visibilityState == "visible") {
-        var buffer = RequestIFrame();
-        ws.send(buffer);
-        isVisuable = true;
-      } else {
-        isVisuable = false;
-        isFeed = false;
-        myVideo.pause();
+      if (document[hidden]) {
+        if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
+          tt.miniProgram.switchTab({
+            url: '/pages/home/home'
+          })
+        } else if (window.__wxjs_environment === 'miniprogram') {
+          wx.miniProgram.switchTab({
+            url: '/pages/home/home'
+          })
+        } else {
+          document.addEventListener('UniAppJSBridgeReady', function () {
+            uni.navigateTo({
+              url: '/pages/index/index'
+            });
+          })
+        }
       }
-    });
+    }, false);
 
     myVideo.addEventListener('pause', function () {
       isFeed = false;
@@ -970,7 +989,7 @@
             if (res.status === 0) {
               let list = res.data;
               list.map((item) => {
-                if(item.phoneType === parameters['mealType']){
+                if (item.phoneType === parameters['mealType']) {
                   resolve(item)
                 }
               })
@@ -984,12 +1003,12 @@
     //广告信息
     function adInit() {
       sourceType = parameters['sourceType'];
-      if(sourceType == 1) {
+      if (sourceType == 1) {
         getSetmealList().then((res) => {
-          if(res.pushFlowAdvert === 1){
+          if (res.pushFlowAdvert === 1) {
             getAdList(15);
           }
-          if(res.intervalSwitch === 1) {
+          if (res.intervalSwitch === 1) {
             let time = res.intervalAdvertDuration * 60 * 1000;
             setInterval(() => {
               $('.try-use-wrap').eq(0).hide();
@@ -997,19 +1016,19 @@
             }, time);
           }
         })
-      }else if(sourceType == 2) {
+      } else if (sourceType == 2) {
         getConfigByPhoneType().then((res) => {
-          if(res.isDisconnectionTime === 1){
+          if (res.isDisconnectionTime === 1) {
             let time = res.disconnectionTime * 60 * 1000;
             setTimeout(() => {
               disconnectionFlag = true;
               $('.buy-phone-wrap').eq(0).show();
             }, time);
           }
-          if(res.isShowAd === 1){
+          if (res.isShowAd === 1) {
             getAdList(15);
           }
-          if(res.isIntervalPlayAd === 1) {
+          if (res.isIntervalPlayAd === 1) {
             let time = res.intervalPlayAdTime * 60 * 1000;
             setInterval(() => {
               $('.try-use-wrap').eq(0).hide();
@@ -1020,46 +1039,46 @@
       }
     }
     // 广告接口
-    function getAdList(type){
+    function getAdList(type) {
       adType = type;
       $.ajax({
-            url: baseUrl + "/api/public/v5/advertising/getAdInfoByAdPlace",
-            headers: {
-              'Authorization': form.token
-            },
-            data: JSON.stringify({
-              adPlace: type,
-              os: 0
-            }),
-            type: 'POST',
-            dataType: 'json',
-					  contentType: "application/json;charset=UTF-8",
-            success: function (res) {
-              if (res.status === 0) {
-                let list = res.data;
-                let indexs = Math.floor(Math.random()*list.length);
-                videoTime = list[indexs].forcedTime;
-                // $('#source').src = list[0].adVideoBase.videoUrl;
-                $("#source").attr("src", list[indexs].adVideoBase.videoUrl);//更新url
-                $("#source").attr("autoplay", "true");//直接播放
-                videoTimer = setInterval(() =>{
-                  if(videoTime > 0) {
-                    videoTime--;
-                    $('.time-node').eq(0).text(videoTime + 's');
-                  } else {
-                    clearInterval(videoTimer);
-                    $('.time-node').eq(0).text('');
-                  }
-                },1000)
-                if (adType === 16 && sourceType == 1) { // 间隔广告和试用才上报
-                  report(0);
-                }
-                $('.try-use-wrap').eq(0).show();
+        url: baseUrl + "/api/public/v5/advertising/getAdInfoByAdPlace",
+        headers: {
+          'Authorization': form.token
+        },
+        data: JSON.stringify({
+          adPlace: type,
+          os: 0
+        }),
+        type: 'POST',
+        dataType: 'json',
+        contentType: "application/json;charset=UTF-8",
+        success: function (res) {
+          if (res.status === 0) {
+            let list = res.data;
+            let indexs = Math.floor(Math.random() * list.length);
+            videoTime = list[indexs].forcedTime;
+            // $('#source').src = list[0].adVideoBase.videoUrl;
+            $("#source").attr("src", list[indexs].adVideoBase.videoUrl);//更新url
+            $("#source").attr("autoplay", "true");//直接播放
+            videoTimer = setInterval(() => {
+              if (videoTime > 0) {
+                videoTime--;
+                $('.time-node').eq(0).text(videoTime + 's');
               } else {
-                $.toast(res.msg, "text");
+                clearInterval(videoTimer);
+                $('.time-node').eq(0).text('');
               }
+            }, 1000)
+            if (adType === 16 && sourceType == 1) { // 间隔广告和试用才上报
+              report(0);
             }
-          })
+            $('.try-use-wrap').eq(0).show();
+          } else {
+            $.toast(res.msg, "text");
+          }
+        }
+      })
     }
     //间隔广告上报
     function report(type) {
@@ -1075,7 +1094,7 @@
         type: 'POST',
         dataType: 'json',
         contentType: "application/json;charset=UTF-8",
-        success: function (res) {}
+        success: function (res) { }
       })
     }
     //关闭广告
@@ -1093,13 +1112,13 @@
         return
       }
       let pointName = '';
-      if(sourceType == 1){
+      if (sourceType == 1) {
         pointName = videoTime == 0 ? '免费试用-关闭-取消' : '免费试用-强制关闭-取消';
       } else {
         pointName = videoTime == 0 ? '激活码-关闭-取消' : '激活码-强制关闭-取消';
       }
       systemBuriedPoint(pointName);
-      if(videoTime == 0) {
+      if (videoTime == 0) {
         if (adType === 16 && sourceType == 1) {
           report(1);
         }
@@ -1111,15 +1130,15 @@
     // 点击去购买
     $('.go-bug')[0].addEventListener('click', () => {
       let pointName = '';
-      if(disconnectionFlag) {
+      if (disconnectionFlag) {
         pointName = '激活码-断线-去购买';
-      } else if(sourceType == 1){
+      } else if (sourceType == 1) {
         pointName = videoTime == 0 ? '免费试用-关闭-去购买' : '免费试用-强制关闭-去购买';
       } else {
         pointName = videoTime == 0 ? '激活码-关闭-去购买' : '激活码-强制关闭-去购买';
       }
       systemBuriedPoint(pointName);
-      if(getDate){
+      if (getDate) {
         wx.miniProgram.navigateTo({
           url: '/packageA/order/buy/index'
         })
@@ -1131,7 +1150,7 @@
     })
     // 放弃
     $('.cannel-ad-btn')[0].addEventListener('click', () => {
-      if(sourceType == 1){
+      if (sourceType == 1) {
         systemBuriedPoint('免费试用-强制关闭-放弃');
       } else {
         systemBuriedPoint('激活码-强制关闭-放弃');
@@ -1143,26 +1162,26 @@
     // 继续观看
     $('.looking')[0].addEventListener('click', () => {
       $('.look-wrap').eq(0).hide();
-      if(sourceType == 1){
+      if (sourceType == 1) {
         systemBuriedPoint('免费试用-强制关闭-继续观看');
       } else {
         systemBuriedPoint('激活码-强制关闭-继续观看');
       }
     })
     // 埋点
-    function systemBuriedPoint(pointName){
+    function systemBuriedPoint(pointName) {
       $.ajax({
         url: baseUrl + "/api/public/v1/systemBuriedPoint/stat",
         headers: {
           'Authorization': form.token
         },
         type: 'post',
-        data:JSON.stringify({
-					pointName: pointName
-				}),
-				contentType:"application/json",
+        data: JSON.stringify({
+          pointName: pointName
+        }),
+        contentType: "application/json",
         dataType: 'json',
-        success: function (res) {}
+        success: function (res) { }
       })
     }
     window.onbeforeunload = function () {

+ 7 - 1
screenIos/WXdraw.js

@@ -117,10 +117,16 @@ function doConnect() {
               tt.miniProgram.switchTab({
                 url: '/pages/home/home'
               })
-            } else {
+            } else if (window.__wxjs_environment === 'miniprogram') {
               wx.miniProgram.switchTab({
                 url: '/pages/home/home'
               })
+            } else {
+              document.addEventListener('UniAppJSBridgeReady', function () {
+                uni.navigateTo({
+                  url: '/pages/index/index'
+                });
+              })
             }
           });
         } else {

+ 114 - 82
screenIos/WXtrialInterface.html

@@ -46,19 +46,19 @@
         background: rgba(0, 0, 0, 0.5);
       display: none;
     }
-      
-    .try-use-container{
+
+    .try-use-container {
       width: 80%;
       height: 409px;
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        transform: translate(-50%, -50%);
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
       background-color: #FFFFFF;
       border-radius: 0.66em;
     }
 
-    .time-close-wrap{
+    .time-close-wrap {
       width: 5.46em;
       height: 2em;
       line-height: 2em;
@@ -72,18 +72,18 @@
       color: #FFFFFF;
     }
 
-    .bug-wrap{
+    .bug-wrap {
       width: 90%;
       height: 115px;
       background: #FFFFFF;
       border-radius: 10px;
       position: absolute;
-        top: 50%;
-        left: 50%;
-        transform: translate(-50%, -50%);
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
     }
 
-    .bug-title{
+    .bug-title {
       text-align: center;
       margin: 25px 0;
       font-size: 18px;
@@ -91,11 +91,11 @@
       color: #333333;
     }
 
-    .btn-list{
+    .btn-list {
       width: 100%;
       height: 44px;
       line-height: 44px;
-      border-top: 1px solid rgba(238,238,238,1);
+      border-top: 1px solid rgba(238, 238, 238, 1);
       position: absolute;
       bottom: 0;
       left: 0;
@@ -103,20 +103,20 @@
       align-items: center;
     }
 
-    .btn{
+    .btn {
       flex: 1;
       text-align: center;
     }
 
-    .cannel-btn{
+    .cannel-btn {
       font-size: 18px;
       color: #666666;
     }
 
-    .go-bug{
+    .go-bug {
       font-size: 18px;
       color: #3B7FFF;
-      border-left: 1px solid rgba(238,238,238,1);
+      border-left: 1px solid rgba(238, 238, 238, 1);
     }
   </style>
 </head>
@@ -342,7 +342,7 @@
     });
     //云机倒计时
     let validTime = parameters['validTime'] || 10000;
-    if(validTime > 32000) {
+    if (validTime > 32000) {
       validTime = 32000;
     }
     let detailTime = validTime * 60 * 1000;
@@ -676,7 +676,7 @@
         tt.miniProgram.switchTab({
           url: '/pages/home/home'
         })
-      } else if(window.__wxjs_environment === 'miniprogram') {
+      } else if (window.__wxjs_environment === 'miniprogram') {
         wx.miniProgram.switchTab({
           url: '/pages/home/home'
         })
@@ -736,7 +736,7 @@
     var decodeWoker = new Worker('decoder.js');
     var myVideo = document.getElementById("playCanvas");
     var logicWidth = 720;
-		var logicHeight = 1280;
+    var logicHeight = 1280;
     decodeWoker.onmessage = function (event) {
       var objData = event.data;
 
@@ -746,7 +746,7 @@
         case 1:
           if (logicWidth != objData.width || logicHeight != objData.height) {
             logicWidth = objData.width;
-						logicHeight = objData.height;
+            logicHeight = objData.height;
           }
           webglPlayer.renderFrame(objData.data, logicWidth, logicHeight, logicWidth * logicHeight, (logicWidth / 2) * (logicHeight / 2));
           $('.weui-mask_transparent').hide()
@@ -809,12 +809,12 @@
               tt.miniProgram.switchTab({
                 url: '/pages/home/home'
               })
-            } else if(window.__wxjs_environment === 'miniprogram') {
+            } else if (window.__wxjs_environment === 'miniprogram') {
               wx.miniProgram.switchTab({
                 url: '/pages/home/home'
               })
             } else {
-              location.href =  `${baseUrl}/cloud/phone/web/#/pages/index/index`
+              location.href = `${baseUrl}/cloud/phone/web/#/pages/index/index`
               // document.addEventListener('UniAppJSBridgeReady', function() {
               //   uni.navigateTo({
               //     url: '/pages/index/index'
@@ -849,7 +849,7 @@
           tt.miniProgram.switchTab({
             url: '/pages/home/home'
           })
-        } else if(window.__wxjs_environment === 'miniprogram') {
+        } else if (window.__wxjs_environment === 'miniprogram') {
           wx.miniProgram.switchTab({
             url: '/pages/home/home'
           })
@@ -905,7 +905,7 @@
             if (res.status === 0) {
               let list = res.data;
               list.map((item) => {
-                if(item.phoneType === parameters['mealType']){
+                if (item.phoneType === parameters['mealType']) {
                   resolve(item)
                 }
               })
@@ -919,12 +919,12 @@
     //广告信息
     function adInit() {
       sourceType = parameters['sourceType'];
-      if(sourceType == 1) {
+      if (sourceType == 1) {
         getSetmealList().then((res) => {
-          if(res.pushFlowAdvert === 1){
+          if (res.pushFlowAdvert === 1) {
             getAdList(15);
           }
-          if(res.intervalSwitch === 1) {
+          if (res.intervalSwitch === 1) {
             let time = res.intervalAdvertDuration * 60 * 1000;
             setInterval(() => {
               $('.try-use-wrap').eq(0).hide();
@@ -932,19 +932,19 @@
             }, time);
           }
         })
-      }else if(sourceType == 2) {
+      } else if (sourceType == 2) {
         getConfigByPhoneType().then((res) => {
-          if(res.isDisconnectionTime === 1){
+          if (res.isDisconnectionTime === 1) {
             let time = res.disconnectionTime * 60 * 1000;
             setTimeout(() => {
               disconnectionFlag = true;
               $('.buy-phone-wrap').eq(0).show();
             }, time);
           }
-          if(res.isShowAd === 1){
+          if (res.isShowAd === 1) {
             getAdList(15);
           }
-          if(res.isIntervalPlayAd === 1) {
+          if (res.isIntervalPlayAd === 1) {
             let time = res.intervalPlayAdTime * 60 * 1000;
             setInterval(() => {
               $('.try-use-wrap').eq(0).hide();
@@ -955,46 +955,46 @@
       }
     }
     // 广告接口
-    function getAdList(type){
+    function getAdList(type) {
       adType = type;
       $.ajax({
-            url: baseUrl + "/api/public/v5/advertising/getAdInfoByAdPlace",
-            headers: {
-              'Authorization': form.token
-            },
-            data: JSON.stringify({
-              adPlace: type,
-              os: 0
-            }),
-            type: 'POST',
-            dataType: 'json',
-					  contentType: "application/json;charset=UTF-8",
-            success: function (res) {
-              if (res.status === 0) {
-                let list = res.data;
-                let indexs = Math.floor(Math.random()*list.length);
-                videoTime = list[indexs].forcedTime;
-                // $('#source').src = list[0].adVideoBase.videoUrl;
-                $("#source").attr("src", list[indexs].adVideoBase.videoUrl);//更新url
-                $("#source").attr("autoplay", "true");//直接播放
-                videoTimer = setInterval(() =>{
-                  if(videoTime > 0) {
-                    videoTime--;
-                    $('.time-node').eq(0).text(videoTime + 's');
-                  } else {
-                    clearInterval(videoTimer);
-                    $('.time-node').eq(0).text('');
-                  }
-                },1000)
-                if (adType === 16 && sourceType == 1) { // 间隔广告和试用才上报
-                  report(0);
-                }
-                $('.try-use-wrap').eq(0).show();
+        url: baseUrl + "/api/public/v5/advertising/getAdInfoByAdPlace",
+        headers: {
+          'Authorization': form.token
+        },
+        data: JSON.stringify({
+          adPlace: type,
+          os: 0
+        }),
+        type: 'POST',
+        dataType: 'json',
+        contentType: "application/json;charset=UTF-8",
+        success: function (res) {
+          if (res.status === 0) {
+            let list = res.data;
+            let indexs = Math.floor(Math.random() * list.length);
+            videoTime = list[indexs].forcedTime;
+            // $('#source').src = list[0].adVideoBase.videoUrl;
+            $("#source").attr("src", list[indexs].adVideoBase.videoUrl);//更新url
+            $("#source").attr("autoplay", "true");//直接播放
+            videoTimer = setInterval(() => {
+              if (videoTime > 0) {
+                videoTime--;
+                $('.time-node').eq(0).text(videoTime + 's');
               } else {
-                $.toast(res.msg, "text");
+                clearInterval(videoTimer);
+                $('.time-node').eq(0).text('');
               }
+            }, 1000)
+            if (adType === 16 && sourceType == 1) { // 间隔广告和试用才上报
+              report(0);
             }
-          })
+            $('.try-use-wrap').eq(0).show();
+          } else {
+            $.toast(res.msg, "text");
+          }
+        }
+      })
     }
     //间隔广告上报
     function report(type) {
@@ -1010,7 +1010,7 @@
         type: 'POST',
         dataType: 'json',
         contentType: "application/json;charset=UTF-8",
-        success: function (res) {}
+        success: function (res) { }
       })
     }
     //关闭广告
@@ -1028,13 +1028,13 @@
         return
       }
       let pointName = '';
-      if(sourceType == 1){
+      if (sourceType == 1) {
         pointName = videoTime == 0 ? '免费试用-关闭-取消' : '免费试用-强制关闭-取消';
       } else {
         pointName = videoTime == 0 ? '激活码-关闭-取消' : '激活码-强制关闭-取消';
       }
       systemBuriedPoint(pointName);
-      if(videoTime == 0) {
+      if (videoTime == 0) {
         if (adType === 16 && sourceType == 1) {
           report(1);
         }
@@ -1046,15 +1046,15 @@
     // 点击去购买
     $('.go-bug')[0].addEventListener('click', () => {
       let pointName = '';
-      if(disconnectionFlag) {
+      if (disconnectionFlag) {
         pointName = '激活码-断线-去购买';
-      } else if(sourceType == 1){
+      } else if (sourceType == 1) {
         pointName = videoTime == 0 ? '免费试用-关闭-去购买' : '免费试用-强制关闭-去购买';
       } else {
         pointName = videoTime == 0 ? '激活码-关闭-去购买' : '激活码-强制关闭-去购买';
       }
       systemBuriedPoint(pointName);
-      if(getDate){
+      if (getDate) {
         wx.miniProgram.navigateTo({
           url: '/packageA/order/buy/index'
         })
@@ -1066,7 +1066,7 @@
     })
     // 放弃
     $('.cannel-ad-btn')[0].addEventListener('click', () => {
-      if(sourceType == 1){
+      if (sourceType == 1) {
         systemBuriedPoint('免费试用-强制关闭-放弃');
       } else {
         systemBuriedPoint('激活码-强制关闭-放弃');
@@ -1078,7 +1078,7 @@
     // 继续观看
     $('.looking')[0].addEventListener('click', () => {
       $('.look-wrap').eq(0).hide();
-      if(sourceType == 1){
+      if (sourceType == 1) {
         systemBuriedPoint('免费试用-强制关闭-继续观看');
       } else {
         systemBuriedPoint('激活码-强制关闭-继续观看');
@@ -1086,19 +1086,19 @@
     })
 
     // 埋点
-    function systemBuriedPoint(pointName){
+    function systemBuriedPoint(pointName) {
       $.ajax({
         url: baseUrl + "/api/public/v1/systemBuriedPoint/stat",
         headers: {
           'Authorization': form.token
         },
         type: 'post',
-        data:JSON.stringify({
-					pointName: pointName
-				}),
-				contentType:"application/json",
+        data: JSON.stringify({
+          pointName: pointName
+        }),
+        contentType: "application/json",
         dataType: 'json',
-        success: function (res) {}
+        success: function (res) { }
       })
     }
 
@@ -1133,6 +1133,38 @@
         level = 0;
       }
     }
+    var hidden, visibilityChange; 
+    if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support 
+      hidden = "hidden";
+      visibilityChange = "visibilitychange";
+    } else if (typeof document.msHidden !== "undefined") {
+      hidden = "msHidden";
+      visibilityChange = "msvisibilitychange";
+    } else if (typeof document.webkitHidden !== "undefined") {
+      hidden = "webkitHidden";
+      visibilityChange = "webkitvisibilitychange";
+    }
+
+    // 处理页面可见属性的改变
+    document.addEventListener("visibilitychange", function () {
+      if (document[hidden]) {
+        if (navigator.userAgent.toLowerCase().includes('toutiaomicroapp')) {
+          tt.miniProgram.switchTab({
+            url: '/pages/home/home'
+          })
+        } else if (window.__wxjs_environment === 'miniprogram') {
+          wx.miniProgram.switchTab({
+            url: '/pages/home/home'
+          })
+        } else {
+          document.addEventListener('UniAppJSBridgeReady', function () {
+            uni.navigateTo({
+              url: '/pages/index/index'
+            });
+          })
+        }
+      }
+    }, false);
     window.onbeforeunload = function () {
       wsss.close();
       decodeWoker.postMessage('close');

+ 28 - 15
screenIos/decoder.js

@@ -8,12 +8,16 @@ var maxHeight = 1920;
 var globalYuvPtr = undefined;
 var golbalYuvData;//全局,只分配一次
 var renderCount = 0;
+var curFrameWidth = undefined;
+var curFrameHeight = undefined;
+
 
 function doSomeInit() {
   var allocSize = maxWidth * maxHeight * 3;
   golbalYuvData = new Uint8Array(allocSize);
 }
 self.importScripts("ffmpeghelper.js");
+self.importScripts("spsParser.js");
 
 self.Module.onRuntimeInitialized = function () {
   isFinish = true;
@@ -31,13 +35,19 @@ self.addEventListener('message', function (e) {
     var buffer = e.data.data;
 
     if (buffer[0] !== 0xff) { // 音频解码
-      if (isSwitchSharpness) {
-        var type = buffer[4] & 0x1f;
-        if (type == 7 || type == 8) {
-          console.log("视频类型:" + type);
-          isSwitchSharpness = false;
-          h264Queue.push(buffer);
+      var type = buffer[4] & 0x1f;
+      if (type == 7) {
+        let info = spsParser(buffer);
+
+        if (curFrameWidth != undefined && curFrameHeight != undefined) {
+          if (info.width != curFrameWidth || info.height != curFrameHeight) { // 分辨率发生改变,切换		
+            switchNewStream();
+          }
         }
+
+        curFrameWidth = info.width;
+        curFrameHeight = info.height;
+        h264Queue.push(buffer);
       } else {
         h264Queue.push(buffer);
       }
@@ -46,11 +56,11 @@ self.addEventListener('message', function (e) {
   }
 
   if (msg.type == "switchSharpness") { // 分辨率切换实现
-    isSwitchSharpness = true;
+    /*isSwitchSharpness = true;
     closeDecoder();
     var ret = Module._openDecoder();//再次开启解码器
     var timeFlag = setInterval(decodeVideo, 1);
-    console.log("切换解码器成功");
+    console.log("切换解码器成功");*/
   }
 }, false);
 
@@ -106,11 +116,10 @@ function decodeH264(data) {
   var frameHeight = 0;
   var inputPtr = Module._malloc(data.length); //输入数据
 
-  for (i = 0; i < data.length; i++) {
+  for (var i = 0; i < data.length; i++) {
     Module.HEAPU8[(inputPtr) + i] = data[i]; //转换为堆数据
   }
 
-  var time = new Date().getTime();
   var allocSize = maxWidth * maxHeight * 3 / 2;
   if (globalYuvPtr == undefined) {
     globalYuvPtr = Module._malloc(allocSize);
@@ -118,15 +127,12 @@ function decodeH264(data) {
 
   var ret = Module._feedData(inputPtr, data.length, globalYuvPtr);
 
-  if (ret >= 0)//解码成功才考虑渲染
-  {
+  if (ret >= 0) { //解码成功才考虑渲染
     frameWidth = Module._getVideoWidth();//拿到解码器宽、高
     frameHeight = Module._getVideoHeight();
-    var curCost = new Date().getTime() - time;
     var copyLen = frameWidth * frameHeight * 3 / 2;//只拷贝必须的长度
 
-    if (renderCount > 1)//第一帧因为画面时全绿色的不渲染
-    {
+    if (renderCount > 1) { //第一帧因为画面时全绿色的不渲染
       dispatchYuvData(golbalYuvData, globalYuvPtr, frameWidth, frameHeight, copyLen);
     } else {
       renderCount++;
@@ -136,6 +142,13 @@ function decodeH264(data) {
   Module._free(inputPtr);
 }
 
+function switchNewStream() {
+
+  closeDecoder();
+  var ret = Module._openDecoder();//再次开启解码器	
+  var timeFlag = setInterval(decodeVideo, 1);
+  console.log("切换解码器成功");
+}
 
 function closeDecoder() {
   clearInterval(timeFlag);//关闭原有定时器

+ 209 - 0
screenIos/spsParser.js

@@ -0,0 +1,209 @@
+ //https://blog.csdn.net/lizhijian21/article/details/80982403
+function ceil(val)
+{
+	return Math.ceil(val);
+}
+
+//获取buf 的前n个bit组成的值
+function u(bitCount, input)
+{
+	let ret = 0;
+	
+	for( var i = 0;i< bitCount;i++)
+	{
+		ret <<= 1;
+		
+		
+		if (input.data[Math.floor(input.index / 8)] & (0x80 >> (input.index % 8)))
+		{
+			ret += 1;
+		}
+		
+		input.index++;
+	}
+	
+	return ret;
+}
+
+/*无符号指数哥伦布编码(UE)
+*哥伦布编码的码字code_word由三部分组成:code_word = [M个0] + [1] + [Info]
+*其中,Info是一个携带信息的M位数据,每个哥伦布码的长度为(2M+1)位,每个码字都可由code_num产生。
+*根据码字code_word解码出code_num值的过程如下:
+*1. 首先读入M位以"1"为结尾的0;
+*2. 根据得到的M,读入接下来的M位Info数据;
+*3. 根据这个公式得到计算结果code_num = Info – 1 + 2M
+*/
+
+function ue(input, len)
+{
+	let zeroNum = 0;
+	while(input.index < len * 8)
+	{
+		if(input.data[Math.floor(input.index/8)] & (0x80 >> (input.index %8)))//遇到1则停止,统计0的个数
+		{
+			break;
+		}
+		
+		zeroNum++;
+		input.index++;
+	}
+	
+	input.index++;
+	
+	let ret = 0;
+	//计算
+	for(i = 0;i < zeroNum;i++)
+	{
+		ret <<= 1;
+		if(input.data[Math.floor(input.index/8)] & (0x80 >> input.index %8))
+		{
+			ret += 1;
+		}
+		
+		input.index++;
+	}
+	
+	return (1<< zeroNum) - 1 + ret;
+}
+
+//有符号哥伦布编码
+function se(input, len)
+{
+	let ueVal = ue(input, len);
+	let k = ueVal;
+	let nValue = ceil(k/2);
+	
+	if(ueVal %2 == 0)
+		nValue = -nValue;
+	return nValue;
+}
+
+
+function spsParser(buf)
+{
+	let startBitIndex = 0;
+
+	buf = buf.slice(4);//去除00 00 00 01竞争码
+	let len = buf.length;
+	
+	//输入参数
+	let input = {	
+		data:buf,
+		index:startBitIndex
+	};
+	
+	
+	let forbidden_zero_bit = u(1, input);
+	let nal_ref_idc = u(2, input);
+	let nal_unit_type = u(5, input);
+	let chroma_format_idc;
+	
+	if(nal_unit_type == 7) 
+	{
+		let profile_idc = u(8, input);
+		let constraint_set0_flag = u(1, input);
+		let constraint_set1_flag = u(1, input);
+		let constraint_set2_flag = u(1, input);
+		let constraint_set3_flag = u(1, input);	
+		let constraint_set4_flag = u(1, input);
+		let constraint_set5_flag = u(1, input);
+		
+		let reserved_zero_2bits = u(2, input);
+		let level_idc = u(8, input);
+		let seq_parameter_set_id = ue(input, len);
+		
+		if(profile_idc == 100 | profile_idc == 110 || profile_idc == 122 || profile_idc == 144 )
+		{				
+			chroma_format_idc = ue(input, len);
+
+			if(chroma_format_idc == 3)
+			{
+				var residual_colour_transform_flag = u(1, input);
+			}
+					
+			let bit_depth_luma_minus8 = ue(input, len);
+			let bit_depth_chroma_minus8 = ue(input, len);
+			let qpprime_y_zero_transform_bypass_flag = u(1, input);
+			let seq_scaling_matrix_present_flag = u(1, input);
+			
+			let seq_scaling_list_present_flag = new Uint8Array(8);
+			if (seq_scaling_matrix_present_flag)
+			{
+				for (var i = 0; i < 8; i++) 
+				{
+					seq_scaling_list_present_flag[i] = u(1, input);
+				}
+			}				
+		}
+		
+		
+		let log2_max_frame_num_minus4 = ue(input, len);
+		let pic_order_cnt_type = ue(input, len);
+		
+		if (pic_order_cnt_type == 0)
+			log2_max_pic_order_cnt_lsb_minus4 = ue(input, len);
+		
+		else if (pic_order_cnt_type == 1)
+		{
+			let delta_pic_order_always_zero_flag = u(1, input);
+			let offset_for_non_ref_pic = se(input, len);
+			let offset_for_top_to_bottom_field = se(input, len);
+			let num_ref_frames_in_pic_order_cnt_cycle = ue(input, len);
+
+			let offset_for_ref_frame = new Uint8Array[num_ref_frames_in_pic_order_cnt_cycle];
+			
+			for ( var i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++)
+				offset_for_ref_frame[i] = se(input, len);
+		}
+		
+		let num_ref_frames = ue(input, len);
+		let gaps_in_frame_num_value_allowed_flag = u(1, input);
+		let pic_width_in_mbs_minus1 = ue(input, len);
+		let pic_height_in_map_units_minus1 = ue(input, len);
+
+		let width = (pic_width_in_mbs_minus1 + 1) * 16;//可能还要进行裁剪处理
+		let height = (pic_height_in_map_units_minus1 + 1) * 16;
+		
+		let frame_mbs_only_flag = u(1, input);
+		
+		if(!frame_mbs_only_flag)
+		{
+			u(1, input);
+		}
+		
+		let direct_8x8_inference_flag = u(1, input);
+		let frame_cropping_flag = u(1, input);
+		
+		if(frame_cropping_flag)
+		{
+			let frame_crop_left_offset = ue(input, len);
+            let frame_crop_right_offset = ue(input, len);
+            let frame_crop_top_offset = ue(input, len);
+            let frame_crop_bottom_offset = ue(input, len);
+			
+			let crop_unit_x = 1;
+            let crop_unit_y = 2 - frame_mbs_only_flag;
+			
+            if (chroma_format_idc == 1) {   //4:2:0
+                crop_unit_x = 2;
+                crop_unit_y = 2 * (2 - frame_mbs_only_flag);
+            }
+            else if (chroma_format_idc == 2) {    //4:2:2
+                crop_unit_x = 2;
+                crop_unit_y = 2 - frame_mbs_only_flag;
+            }
+			
+			
+			width -= crop_unit_x * (frame_crop_left_offset + frame_crop_right_offset);
+            height -= crop_unit_y * (frame_crop_top_offset + frame_crop_bottom_offset);
+		}
+		
+		return {
+			width:width,
+			height:height
+		}
+		
+	}
+}
+
+