online_logs.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /**
  2. * Created by zhang on 2019/4/12.
  3. */
  4. module.exports = {
  5. saveOnlineTime:saveOnlineTime
  6. };
  7. let mongoose = require("mongoose");
  8. const moment = require('moment');
  9. let logs_model = mongoose.model("online_logs");
  10. async function saveOnlineTime(req) {
  11. let online_times = 0;
  12. let end = + new Date();
  13. try {
  14. let interval_time = 10 * 60 *1000;
  15. let start = req.session.online_start_time;
  16. if(start === undefined) return req.session.online_start_time ==end;
  17. let online_times = end - start;
  18. //1秒内只记一次就好
  19. if(online_times < 500) return;//如果间隔太短,则忽略
  20. if(online_times > interval_time ){//如果间隔超过有效时长,则不累加这次时长,从头开始算
  21. req.session.online_start_time = end;
  22. return
  23. }
  24. if(!req.session.sessionUser||!req.session.sessionCompilation) return;
  25. let dataString = moment(end).format('YYYY-MM-DD');
  26. let condition = {userID:req.session.sessionUser.id,compilationID:req.session.sessionCompilation._id,dateString:dataString};
  27. let record = await logs_model.findOne(condition);
  28. if(record){ //如果找到,则累加
  29. await logs_model.update(condition,{$inc:{'online_times' : online_times }});
  30. }else {//如果没找到,则新增一条记录
  31. condition["online_times"] = online_times;
  32. let today = moment(dataString).toDate();
  33. condition["dateTime"] = +today;
  34. await logs_model.create(condition);
  35. }
  36. }catch (e){
  37. console.log("统计登录时间错误,online_times值:"+online_times);
  38. console.log(e);
  39. }
  40. req.session.online_start_time = end;
  41. }