12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /**
- * Created by zhang on 2019/4/16.
- */
- module.exports = {
- setOnlineTimes:setOnlineTimes,
- getOnlineInfo:getOnlineInfo
- };
- let mongoose = require("mongoose");
- let logs_model = mongoose.model("online_logs");
- async function getOnlineInfo(filter) {
- let datas = [];
- let logs = await logs_model.find(filter, null, { sort: {_id: -1}});
- let less = 0;
- for(let l of logs){
- let d = getTimeString(l.online_times);
- let online_times = d.s;
- less += d.less;
- if(online_times!=""){
- datas.push({dateString:l.dateString,dateTime:l.online_times,online_times:online_times})
- }
- }
- if(datas.length>1){//大于2个才把不够1分钟的累积到最后一条记录
- let last = datas[datas.length - 1];
- last.online_times = getTimeString(last.dateTime + less).s;
- }
- return datas;
- }
- async function setOnlineTimes(userList,condition){
- for(let u of userList){
- let filter = {'userID':u._id.toString()};
- if(u.latest_used) filter["compilationID"] = u.latest_used;
- if(condition.latest_login && condition.latest_login == ""){
- let startTime = condition.latest_login['$gte']; //- 24*60*60*1000 //往前推一天 {'$gte': startTime, '$lt': endTime}latest_login
- filter['dateTime'] = {'$gte': startTime, '$lt': condition.latest_login['$lt']}
- }
- let result = await logs_model.aggregate([
- {$match: filter},
- {$group: {_id: "$userID", total: {$sum: "$online_times"}}}
- ]);
- u._doc.filter = JSON.stringify(filter);
- if(result.length > 0) u._doc.online_times = getTimeString(result[0].total).s;
- u._doc.online_list = await this.getOnlineInfo(filter);
- }
- }
- function getTimeString(times) {
- let s = "",perHour = 1000 * 60 * 60,perMin = 1000 * 60,perDay = 24*perHour;
- let day = parseInt(times/perDay);
- let hour = parseInt(parseInt(times % perDay) / perHour);
- let min = parseInt((times % perHour)/perMin);
- let less = (times % perHour)%perMin;//不够一分钟的时间
- if(day > 0) s = s+`${day}天`;
- if(hour > 0) s = s+`${hour}小时`;
- if(min > 0) s= s+`${min}分钟`;
- return {s:s,less:less}
- }
|