Browse Source

优化在线人数返回时间戳

Li 3 years ago
parent
commit
6b498a7ce1
1 changed files with 41 additions and 35 deletions
  1. 41 35
      TEAMModelBI/Controllers/BIHome/OnLineController.cs

+ 41 - 35
TEAMModelBI/Controllers/BIHome/OnLineController.cs

@@ -111,11 +111,11 @@ namespace TEAMModelBI.Controllers.BIHome
             var (strDaySt, strDayEt) = TimeHelper.GetUnixToDate(daySt, dayEt, "yyyyMMddHH");
             var dateDay = dateTime.ToString("yyyyMMdd"); //获取当天的日期
 
-            daySt.ToString("yyyyMMddHH");
-            Dictionary<int, int> allDays = new();  //所有在线人数
-            Dictionary<int, int> tchDays = new();  //教师在线人数
-            Dictionary<int, int> stuDays = new();  //学生在线人数
-            Dictionary<int, int> tmdDays = new();  //醍摩豆账户学生
+            //daySt.ToString("yyyyMMddHH");
+            Dictionary<long, int> allDays = new();  //所有在线人数
+            Dictionary<long, int> tchDays = new();  //教师在线人数
+            Dictionary<long, int> stuDays = new();  //学生在线人数
+            Dictionary<long, int> tmdDays = new();  //醍摩豆账户学生
 
             SortedSetEntry[] tchDay = _azureRedis.GetRedisClient(8).SortedSetRangeByScoreWithScores($"Login:IES:teacher:{dateDay}");
             if (tchDay.Length > 0)
@@ -124,12 +124,13 @@ namespace TEAMModelBI.Controllers.BIHome
                 {
                     int val = ((int)item.Score);
                     int key = ((int)item.Element);
-                    var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {key}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));                
-                    tchDays.Add(hour, val);
-                    if (allDays.ContainsKey(hour))
-                        allDays[hour] = (allDays[hour] + val);
+                    var utcTo = new DateTimeOffset(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, key, 00, 00)).ToUnixTimeMilliseconds();
+                    //var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {key}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
+                    tchDays.Add(utcTo, val);
+                    if (allDays.ContainsKey(utcTo))
+                        allDays[utcTo] = (allDays[utcTo] + val);
                     else
-                        allDays.Add(hour, val);
+                        allDays.Add(utcTo, val);
                 }
             }
             else
@@ -142,12 +143,13 @@ namespace TEAMModelBI.Controllers.BIHome
                     foreach (var item in hourLoginsTch)
                     {
                         await _azureRedis.GetRedisClient(8).SortedSetIncrementAsync($"Login:IES:teacher:{dateDay}", $"{item.Hour}", item.Teacher);//存一天24小时
-                        var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {item.Hour}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
-                        tchDays.Add(hour, item.Teacher);
-                        if (allDays.ContainsKey(hour))
-                            allDays[hour] = (allDays[hour] + item.Teacher);
+                        var utcTo = new DateTimeOffset(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, item.Hour, 00, 00)).ToUnixTimeMilliseconds();
+                        //var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {item.Hour}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
+                        tchDays.Add(utcTo, item.Teacher);
+                        if (allDays.ContainsKey(utcTo))
+                            allDays[utcTo] = (allDays[utcTo] + item.Teacher);
                         else
-                            allDays.Add(hour, item.Teacher);
+                            allDays.Add(utcTo, item.Teacher);
                     }
                 }
             }
@@ -159,12 +161,13 @@ namespace TEAMModelBI.Controllers.BIHome
                 {
                     int val = (int)item.Score;
                     int key = (int)item.Element;
-                    var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {key}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
-                    stuDays.Add(hour, val);
-                    if (allDays.ContainsKey(hour))
-                        allDays[hour] = (allDays[hour] + val);
+                    var utcTo = new DateTimeOffset(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, key, 00, 00)).ToUnixTimeMilliseconds();
+                    //var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {key}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
+                    stuDays.Add(utcTo, val);
+                    if (allDays.ContainsKey(utcTo))
+                        allDays[utcTo] = (allDays[utcTo] + val);
                     else
-                        allDays.Add(hour, val);
+                        allDays.Add(utcTo, val);
                 }
             }
             else
@@ -178,12 +181,13 @@ namespace TEAMModelBI.Controllers.BIHome
                     foreach (var item in hourLoginsStu)
                     {
                         await _azureRedis.GetRedisClient(8).SortedSetIncrementAsync($"Login:IES:student:{dateDay}", $"{item.Hour}", item.Student);//存一天24小时
-                        var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {item.Hour}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
-                        stuDays.Add(hour, item.Student);
-                        if (allDays.ContainsKey(hour))
-                            allDays[hour] = (allDays[hour] + item.Student);
+                        var utcTo = new DateTimeOffset(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, item.Hour, 00, 00)).ToUnixTimeMilliseconds();
+                        //var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {item.Hour}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
+                        stuDays.Add(utcTo, item.Student);
+                        if (allDays.ContainsKey(utcTo))
+                            allDays[utcTo] = (allDays[utcTo] + item.Student);
                         else
-                            allDays.Add(hour, item.Student);
+                            allDays.Add(utcTo, item.Student);
                     }
                 }
             }
@@ -195,12 +199,13 @@ namespace TEAMModelBI.Controllers.BIHome
                 {
                     int val = (int)item.Score;
                     int key = (int)item.Element;
-                    var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {key}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
-                    tmdDays.Add(hour, val);
-                    if (allDays.ContainsKey(hour))
-                        allDays[hour] = (allDays[hour] + val);
+                    var utcTo = new DateTimeOffset(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, key, 00, 00)).ToUnixTimeMilliseconds();
+                    //var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {key}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
+                    tmdDays.Add(utcTo, val);
+                    if (allDays.ContainsKey(utcTo))
+                        allDays[utcTo] = (allDays[utcTo] + val);
                     else
-                        allDays.Add(hour, val);
+                        allDays.Add(utcTo, val);
                 }
             }
             else
@@ -214,12 +219,13 @@ namespace TEAMModelBI.Controllers.BIHome
                     foreach (var item in hourLoginsTmd)
                     {
                         await _azureRedis.GetRedisClient(8).SortedSetIncrementAsync($"Login:IES:tmduser:{dateDay}", $"{item.Hour}", item.TmdUser);//存一天24小时
-                        var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {item.Hour}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
-                        tmdDays.Add(hour, item.TmdUser);
-                        if (allDays.ContainsKey(hour))
-                            allDays[hour] = (allDays[hour] + item.TmdUser);
+                        var utcTo = new DateTimeOffset(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, item.Hour, 00, 00)).ToUnixTimeMilliseconds();
+                        //var hour = int.Parse(DateTime.SpecifyKind(Convert.ToDateTime($"{dateTime.Year}/{dateTime.Month}/{ dateTime.Day} {item.Hour}:00:00"), DateTimeKind.Utc).ToLocalTime().ToString("HH"));
+                        tmdDays.Add(utcTo, item.TmdUser);
+                        if (allDays.ContainsKey(utcTo))
+                            allDays[utcTo] = (allDays[utcTo] + item.TmdUser);
                         else
-                            allDays.Add(hour, item.TmdUser);
+                            allDays.Add(utcTo, item.TmdUser);
                     }
                 }
             }