文件阅览详情界面浏览时长监控代码
This commit is contained in:
		
							parent
							
								
									34bb69598d
								
							
						
					
					
						commit
						dcc65b6ad4
					
				
										
											Binary file not shown.
										
									
								
							| @ -7,23 +7,14 @@ import java.io.IOException; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| import java.sql.Timestamp; | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.Collections; | ||||
| import java.util.Comparator; | ||||
| import java.util.Date; | ||||
| import java.util.HashMap; | ||||
| import java.util.HashSet; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.*; | ||||
| import java.util.Map.Entry; | ||||
| import java.util.Set; | ||||
| import javax.imageio.ImageIO; | ||||
| 
 | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.cache.*; | ||||
| import com.actionsoft.bpms.util.*; | ||||
| 
 | ||||
| import com.actionsoft.bpms.util.Base64; | ||||
| import org.apache.commons.collections.CollectionUtils; | ||||
| import org.apache.commons.lang.StringUtils; | ||||
| import org.apache.poi.hssf.usermodel.HSSFCell; | ||||
| @ -3448,7 +3439,8 @@ public class CoeDesignerWeb extends ActionWeb { | ||||
| 			PALRepositoryQueryAPIManager.getInstance().UpDatePublishCount(plModel); | ||||
| 		} | ||||
| 		/********************描述************************/ | ||||
| 
 | ||||
|         //增加浏览器唯一id | ||||
| 		macroLibraries.put("browserId", generateRandom()); | ||||
| 		if (plModel.getMethodId().equals("process.evc")) { | ||||
| 			return HtmlPageTemplate.merge(CoEConstant.APP_ID, "pal.pl.repository.designer.view.portal.framework.html", macroLibraries); | ||||
| 		} else { | ||||
| @ -3458,6 +3450,14 @@ public class CoeDesignerWeb extends ActionWeb { | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	public static String generateRandom() { | ||||
| 		// 使用UUID生成唯一随机数,然后转换为16进制 | ||||
| 		UUID uuid = UUID.randomUUID(); | ||||
| 		return Long.toHexString(uuid.getMostSignificantBits()) + | ||||
| 				Long.toHexString(uuid.getLeastSignificantBits()); | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -252,7 +252,6 @@ | ||||
|     <script type="text/javascript"> | ||||
|         var sid = "<#sid>"; | ||||
|         var appId = '<#appId>'; | ||||
|         var userId = "<#userId>"; | ||||
|         var userName = "<#userName>"; | ||||
|         var userNameAlias = "<#userNameAlias>"; | ||||
|         var siteId = "<#siteId>"; | ||||
| @ -313,6 +312,7 @@ | ||||
|         var showReplyNum = "<#showReplyNum>"; | ||||
|         var boId = ""; | ||||
|         var portalUrl = "<#portalUrl>"; | ||||
|         var browserId = "<#browserId>"; | ||||
| 
 | ||||
| 
 | ||||
|         // 国际化 | ||||
| @ -758,6 +758,98 @@ | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         // 页面停留时间统计 | ||||
|         class PageStayTimeTracker { | ||||
|             constructor() { | ||||
|                 this.startTime = null; | ||||
|                 this.lastReportTime = null; | ||||
|                 this.reportInterval = 10000; // 60秒报告一次 | ||||
|                 this.isPageVisible = true; // 默认页面是可见的 | ||||
|                 this.visibilityBound = false; // 是否已绑定可见性事件 | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|             // 开始跟踪 | ||||
|             startTracking() { | ||||
|                 if (this.isActive) return; | ||||
| 
 | ||||
|                 this.startTime = new Date(); | ||||
|                 this.lastReportTime = this.startTime; | ||||
|                 this.isActive = true; | ||||
| 
 | ||||
|                 // 设置定时器 | ||||
|                 this.intervalId = setInterval(() => { | ||||
|                     if (this.isPageVisible) { | ||||
|                         this.reportStayTime(); | ||||
|                     } | ||||
|                 }, this.reportInterval); | ||||
| 
 | ||||
|                 // 页面卸载前发送剩余时间 | ||||
|                 window.addEventListener('beforeunload', this.finalReport.bind(this)); | ||||
| 
 | ||||
| 
 | ||||
|             } | ||||
| 
 | ||||
|             // 报告停留时间 | ||||
|             reportStayTime() { | ||||
|                 this.sendStayTimeToServer(true); | ||||
|             } | ||||
| 
 | ||||
|             // 最终报告 | ||||
|             finalReport() { | ||||
|                 if (!this.isActive) return; | ||||
|                 if (this.isPageVisible) { | ||||
|                     const now = new Date(); | ||||
|                     const elapsed = now - this.lastReportTime; | ||||
|                } | ||||
| 
 | ||||
| 
 | ||||
|                 this.sendStayTimeToServer(false); | ||||
|                 this.cleanUp(); | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|             // 发送数据到服务器 | ||||
|             sendStayTimeToServer(isActive) { | ||||
|                 $.ajax({ | ||||
|                     type : "POST", | ||||
|                     url : "./w?sid=" + encodeURIComponent($('#sid').val()) + "&cmd=com.awspaas.user.apps.browsing_data.service.insertReadingLog", | ||||
|                     data : "userId="+user+"&userName="+userName+"&ruuid="+ruuid+"&fileName="+fileName+"&startTime="+new Date(this.startTime).getTime()+"¤tTime="+new Date().getTime()+"&browserId="+browserId+"&isActive="+isActive, | ||||
|                     success : function(msg) { | ||||
|                         if (msg.result == "error") { | ||||
|                             $.simpleAlert("新增失败", "error"); | ||||
|                         } | ||||
|                     } | ||||
|                 }); | ||||
| 
 | ||||
|             } | ||||
| 
 | ||||
|             // 清理资源 | ||||
|             cleanUp() { | ||||
|                 clearInterval(this.intervalId); | ||||
|                  window.removeEventListener('beforeunload', this.finalReport); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // 使用示例 | ||||
|         const tracker = new PageStayTimeTracker(); | ||||
|         tracker.startTracking(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         //渲染评论内容 | ||||
|         function initPl() { | ||||
|             $(".message-detial-reply").empty(); | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -45,6 +45,10 @@ public class InsertReadingLogService extends ActionWeb | ||||
|             Long begintime=Long.valueOf(params.get("startTime")); | ||||
|             Long endtime=Long.valueOf(params.get("currentTime")); | ||||
| 
 | ||||
|             String isActive=params.get("isActive"); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|             long time =endtime - begintime; | ||||
|             long diffSeconds = time / 1000 % 60; | ||||
|             long diffMinutes = time / (60 * 1000) % 60; | ||||
| @ -66,7 +70,6 @@ public class InsertReadingLogService extends ActionWeb | ||||
|             String beginDate = sdf.format(begintime); | ||||
|             String endDate = sdf.format(endtime); | ||||
| 
 | ||||
| 
 | ||||
|             BO insertReadingLog=SDK.getBOAPI().query("BO_EU_READING_DURATION").addQuery("BROWSERID=",params.get("browserId")).addQuery("ISACTIVE=","true").detail(); | ||||
|             if(insertReadingLog==null){ | ||||
|                  BO bo=new BO(); | ||||
| @ -83,6 +86,7 @@ public class InsertReadingLogService extends ActionWeb | ||||
|                         .createBOProcessInstance("obj_9af2004d87b3472da210b43dc1ca32ab", uc.getUID(), "浏览数据监听"); | ||||
|                 SDK.getBOAPI().create("BO_EU_READING_DURATION",bo,processInstance.getId(),uc.getUID()); | ||||
| 
 | ||||
| 
 | ||||
|             }else{ | ||||
|                 insertReadingLog.set("USERID",params.get("userId")); | ||||
|                 insertReadingLog.set("USERNAME",params.get("userName")); | ||||
| @ -90,6 +94,7 @@ public class InsertReadingLogService extends ActionWeb | ||||
|                 insertReadingLog.set("READING_END_TIME",endDate); | ||||
|                 insertReadingLog.set("CUMULATIVE_DURATION_STAY",remainTime); | ||||
|                 insertReadingLog.set("BROWSERID",params.get("browserId")); | ||||
|                 insertReadingLog.set("ISACTIVE",isActive); | ||||
|                 SDK.getBOAPI().update("BO_EU_READING_DURATION",insertReadingLog); | ||||
|             } | ||||
|             ro.put("result", "ok"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user