online_logs.js 2.0 KB

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