|
@@ -1,6 +1,8 @@
|
|
|
package com.dgtly.system.service.impl;
|
|
package com.dgtly.system.service.impl;
|
|
|
|
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.Calendar;
|
|
import java.util.Calendar;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import com.dgtly.common.utils.DateUtils;
|
|
import com.dgtly.common.utils.DateUtils;
|
|
|
import com.dgtly.system.domain.SysUser;
|
|
import com.dgtly.system.domain.SysUser;
|
|
@@ -60,33 +62,46 @@ public class SysMagnetLogServiceImpl implements ISysMagnetLogService
|
|
|
@Override
|
|
@Override
|
|
|
public int insertSysMagnetLog(SysMagnetLog sysMagnetLog)
|
|
public int insertSysMagnetLog(SysMagnetLog sysMagnetLog)
|
|
|
{
|
|
{
|
|
|
- SysUser user =userMapper.selectUserById(sysMagnetLog.getUserId());
|
|
|
|
|
- sysMagnetLog.setLoginName(user.getLoginName());
|
|
|
|
|
- sysMagnetLog.setSapEmployeeId(user.getSysUserExt().getSapEmployeeId());
|
|
|
|
|
- sysMagnetLog.setCreateTime(DateUtils.getNowDate());
|
|
|
|
|
- //计算渠道看板、产品看板、会员看板的停留时长
|
|
|
|
|
- //本次是主页、渠道看板、产品看板、会员看板、关闭数据看板
|
|
|
|
|
- if("主页".equals(sysMagnetLog.getMagnetName()) || "渠道看板".equals(sysMagnetLog.getMagnetName()) || "产品看板".equals(sysMagnetLog.getMagnetName()) || "会员看板".equals(sysMagnetLog.getMagnetName()) || "关闭数据看板".equals(sysMagnetLog.getMagnetName())){
|
|
|
|
|
- //查询最近的上次埋点
|
|
|
|
|
- SysMagnetLog sysMagnetLogLast = sysMagnetLogMapper.selectOneByCondition(sysMagnetLog);
|
|
|
|
|
- if(sysMagnetLogLast!=null && sysMagnetLogLast.getUpdateTime()==null && ("渠道看板".equals(sysMagnetLogLast.getMagnetName()) || "产品看板".equals(sysMagnetLogLast.getMagnetName()) || "会员看板".equals(sysMagnetLogLast.getMagnetName()))){
|
|
|
|
|
- //记录结束访问时间(仅渠道看板、产品看板、会员看板)
|
|
|
|
|
- sysMagnetLogLast.setUpdateTime(sysMagnetLog.getCreateTime());
|
|
|
|
|
- //记录上次的停留时间
|
|
|
|
|
- Calendar startCal = Calendar.getInstance();
|
|
|
|
|
- startCal.setTime(sysMagnetLogLast.getCreateTime());
|
|
|
|
|
- Calendar endCal = Calendar.getInstance();
|
|
|
|
|
- endCal.setTime(sysMagnetLogLast.getUpdateTime());
|
|
|
|
|
- long milliseconds = endCal.getTimeInMillis() - startCal.getTimeInMillis();
|
|
|
|
|
- //因为当前时间是毫秒级别的,存在小数点,所以,向上取整
|
|
|
|
|
- long seconds =(long) Math.ceil((double) milliseconds / 1000);
|
|
|
|
|
- //停留时间超过24小时,就不再存停留时间了,只保存离开时间
|
|
|
|
|
- if(seconds<86400){
|
|
|
|
|
- sysMagnetLogLast.setStayDuration(seconds);
|
|
|
|
|
|
|
+ try{
|
|
|
|
|
+ SysUser user =userMapper.selectUserById(sysMagnetLog.getUserId());
|
|
|
|
|
+ sysMagnetLog.setLoginName(user.getLoginName());
|
|
|
|
|
+ sysMagnetLog.setSapEmployeeId(user.getSysUserExt().getSapEmployeeId());
|
|
|
|
|
+ sysMagnetLog.setCreateTime(DateUtils.getNowDate());
|
|
|
|
|
+ //计算渠道看板、产品看板、会员看板的停留时长
|
|
|
|
|
+ //本次是主页、渠道看板、产品看板、会员看板、关闭数据看板
|
|
|
|
|
+ if("主页".equals(sysMagnetLog.getMagnetName()) || "渠道看板".equals(sysMagnetLog.getMagnetName()) || "产品看板".equals(sysMagnetLog.getMagnetName()) || "会员看板".equals(sysMagnetLog.getMagnetName()) || "关闭数据看板".equals(sysMagnetLog.getMagnetName())){
|
|
|
|
|
+ //查询最近的上次埋点
|
|
|
|
|
+ SysMagnetLog sysMagnetLogLast = sysMagnetLogMapper.selectOneByCondition(sysMagnetLog);
|
|
|
|
|
+ if(sysMagnetLogLast!=null && sysMagnetLogLast.getUpdateTime()==null && ("渠道看板".equals(sysMagnetLogLast.getMagnetName()) || "产品看板".equals(sysMagnetLogLast.getMagnetName()) || "会员看板".equals(sysMagnetLogLast.getMagnetName()))){
|
|
|
|
|
+ //记录结束访问时间(仅渠道看板、产品看板、会员看板)
|
|
|
|
|
+ sysMagnetLogLast.setUpdateTime(sysMagnetLog.getCreateTime());
|
|
|
|
|
+ //记录上次的停留时间
|
|
|
|
|
+ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ //处理开始时间
|
|
|
|
|
+ String startStr = sf.format(sysMagnetLogLast.getCreateTime());
|
|
|
|
|
+ Date startDate=sf.parse(startStr);
|
|
|
|
|
+ //处理结束时间
|
|
|
|
|
+ String endStr = sf.format(sysMagnetLogLast.getUpdateTime());
|
|
|
|
|
+ Date endDate=sf.parse(endStr);
|
|
|
|
|
+
|
|
|
|
|
+ Calendar startCal = Calendar.getInstance();
|
|
|
|
|
+ startCal.setTime(startDate);
|
|
|
|
|
+ Calendar endCal = Calendar.getInstance();
|
|
|
|
|
+ endCal.setTime(endDate);
|
|
|
|
|
+ long milliseconds = endCal.getTimeInMillis() - startCal.getTimeInMillis();
|
|
|
|
|
+ //因为当前时间是毫秒级别的,存在小数点,所以,向上取整
|
|
|
|
|
+ long seconds = milliseconds / 1000;
|
|
|
|
|
+ //停留时间超过24小时,就不再存停留时间了,只保存离开时间
|
|
|
|
|
+ if(seconds<86400){
|
|
|
|
|
+ sysMagnetLogLast.setStayDuration(seconds);
|
|
|
|
|
+ }
|
|
|
|
|
+ //保存上次记录
|
|
|
|
|
+ sysMagnetLogMapper.updateSysMagnetLog(sysMagnetLogLast);
|
|
|
}
|
|
}
|
|
|
- //保存上次记录
|
|
|
|
|
- sysMagnetLogMapper.updateSysMagnetLog(sysMagnetLogLast);
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+ }catch(Exception e){
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
return sysMagnetLogMapper.insertSysMagnetLog(sysMagnetLog);
|
|
return sysMagnetLogMapper.insertSysMagnetLog(sysMagnetLog);
|