| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | /** * Created by zhang on 2019/4/16. */module.exports = {    setOnlineTimes:setOnlineTimes,    getOnlineInfo:getOnlineInfo,    getTimeString:getTimeString,};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: {dateString: -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);        u._doc.all_online_times = getTimeString(u.all_online_times).s;    }}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}}
 |