|
@@ -0,0 +1,60 @@
|
|
|
+/**
|
|
|
+ * 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);
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function getTimeString(times) {
|
|
|
+ let s = "",perHour = 1000 * 60 * 60,perMin = 1000 * 60;
|
|
|
+ let hour = parseInt(times/perHour);
|
|
|
+ let min = parseInt((times % perHour)/perMin);
|
|
|
+ let less = (times % perHour)%perMin;//不够一分钟的时间
|
|
|
+ if(hour > 0) s = s+`${hour}小时`;
|
|
|
+ if(min > 0) s= s+`${min}分钟`;
|
|
|
+ return {s:s,less:less}
|
|
|
+}
|