提交记录修改Core/Servicers/Instances/Data.cs+68 −64看文件
| @@ -15,98 +15,102 @@ namespace Core.Servicers.Instances | ||
| 15 | 15 | public class Data : IData |
| 16 | 16 | { |
| 17 | 17 | private readonly IAppData appData; |
| 18 | 新增: private readonly object setLock = new object(); | |
| 18 | 19 | public Data(IAppData appData) |
| 19 | 20 | { |
| 20 | 21 | this.appData = appData; |
| 21 | 22 | } |
| 22 | 23 | public void Set(string processName, int seconds, DateTime? time_ = null) |
| 23 | 24 | { |
| 24 | 删除: DateTime time = !time_.HasValue ? DateTime.Now : time_.Value; | |
| 25 | 删除: var today = time.Date; | |
| 26 | 删除: | |
| 27 | 删除: // 当前时段 | |
| 28 | 删除: var nowtime = new DateTime(today.Year, today.Month, today.Day, time.Hour, 0, 0); | |
| 29 | 删除: | |
| 30 | 删除: if (string.IsNullOrEmpty(processName) || seconds <= 0) | |
| 25 | 新增: lock (setLock) | |
| 31 | 26 | { |
| 32 | 删除: return; | |
| 33 | 删除: } | |
| 34 | 删除: | |
| 35 | 删除: AppModel app = appData.GetApp(processName); | |
| 36 | 删除: | |
| 37 | 删除: if (app == null) | |
| 38 | 删除: { | |
| 39 | 删除: return; | |
| 40 | 删除: } | |
| 27 | 新增: DateTime time = !time_.HasValue ? DateTime.Now : time_.Value; | |
| 28 | 新增: var today = time.Date; | |
| 41 | 29 | |
| 30 | 新增: // 当前时段 | |
| 31 | 新增: var nowtime = new DateTime(today.Year, today.Month, today.Day, time.Hour, 0, 0); | |
| 42 | 32 | |
| 43 | 删除: | |
| 44 | 删除: using (var db = new TaiDbContext()) | |
| 45 | 删除: { | |
| 46 | 删除: var res = db.DailyLog.SingleOrDefault(m => m.Date == today && m.AppModelID == app.ID); | |
| 47 | 删除: if (res == null) | |
| 48 | 删除: { | |
| 49 | 删除: //数据库中没有时则创建 | |
| 50 | 删除: db.DailyLog.Add(new Models.DailyLogModel() | |
| 51 | 删除: { | |
| 52 | 删除: Date = today, | |
| 53 | 删除: AppModelID = app.ID, | |
| 54 | 删除: Time = seconds, | |
| 55 | 删除: }); | |
| 56 | 删除: } | |
| 57 | 删除: else | |
| 33 | 新增: if (string.IsNullOrEmpty(processName) || seconds <= 0) | |
| 58 | 34 | { |
| 59 | 删除: res.Time += seconds; | |
| 35 | 新增: return; | |
| 60 | 36 | } |
| 61 | 37 | |
| 62 | 删除: // 分时段记录数据 | |
| 38 | 新增: AppModel app = appData.GetApp(processName); | |
| 63 | 39 | |
| 64 | 删除: var hourslog = db.HoursLog.SingleOrDefault( | |
| 65 | 删除: m => | |
| 66 | 删除: m.DataTime == nowtime | |
| 67 | 删除: && m.AppModelID == app.ID | |
| 68 | 删除: ); | |
| 69 | 删除: if (hourslog == null) | |
| 40 | 新增: if (app == null) | |
| 70 | 41 | { |
| 71 | 删除: // 没有时创建 | |
| 42 | 新增: return; | |
| 43 | 新增: } | |
| 72 | 44 | |
| 73 | 删除: if (seconds > 3600) | |
| 74 | 删除: { | |
| 75 | 删除: int overflowSeconds = seconds - 3600; | |
| 76 | 删除: Set(processName, overflowSeconds, nowtime.AddHours(1)); | |
| 77 | 45 | |
| 78 | 删除: seconds = 3600; | |
| 79 | 删除: } | |
| 80 | 46 | |
| 81 | 删除: db.HoursLog.Add(new Models.HoursLogModel() | |
| 82 | 删除: { | |
| 83 | 删除: DataTime = nowtime, | |
| 84 | 删除: AppModelID = app.ID, | |
| 85 | 删除: Time = seconds | |
| 86 | 删除: }); | |
| 87 | 删除: } | |
| 88 | 删除: else | |
| 47 | 新增: using (var db = new TaiDbContext()) | |
| 89 | 48 | { |
| 90 | 删除: if (hourslog.Time + seconds > 3600) | |
| 49 | 新增: var res = db.DailyLog.SingleOrDefault(m => m.Date == today && m.AppModelID == app.ID); | |
| 50 | 新增: if (res == null) | |
| 51 | 新增: { | |
| 52 | 新增: //数据库中没有时则创建 | |
| 53 | 新增: db.DailyLog.Add(new Models.DailyLogModel() | |
| 54 | 新增: { | |
| 55 | 新增: Date = today, | |
| 56 | 新增: AppModelID = app.ID, | |
| 57 | 新增: Time = seconds, | |
| 58 | 新增: }); | |
| 59 | 新增: } | |
| 60 | 新增: else | |
| 91 | 61 | { |
| 92 | 删除: hourslog.Time = 3600; | |
| 62 | 新增: res.Time += seconds; | |
| 63 | 新增: } | |
| 93 | 64 | |
| 94 | 删除: int overflowSeconds = hourslog.Time + seconds - 3600; | |
| 65 | 新增: // 分时段记录数据 | |
| 95 | 66 | |
| 96 | 删除: Set(processName, overflowSeconds, nowtime.AddHours(1)); | |
| 67 | 新增: var hourslog = db.HoursLog.SingleOrDefault( | |
| 68 | 新增: m => | |
| 69 | 新增: m.DataTime == nowtime | |
| 70 | 新增: && m.AppModelID == app.ID | |
| 71 | 新增: ); | |
| 72 | 新增: if (hourslog == null) | |
| 73 | 新增: { | |
| 74 | 新增: // 没有时创建 | |
| 75 | 新增: | |
| 76 | 新增: if (seconds > 3600) | |
| 77 | 新增: { | |
| 78 | 新增: int overflowSeconds = seconds - 3600; | |
| 79 | 新增: Set(processName, overflowSeconds, nowtime.AddHours(1)); | |
| 80 | 新增: | |
| 81 | 新增: seconds = 3600; | |
| 82 | 新增: } | |
| 83 | 新增: | |
| 84 | 新增: db.HoursLog.Add(new Models.HoursLogModel() | |
| 85 | 新增: { | |
| 86 | 新增: DataTime = nowtime, | |
| 87 | 新增: AppModelID = app.ID, | |
| 88 | 新增: Time = seconds | |
| 89 | 新增: }); | |
| 97 | 90 | } |
| 98 | 91 | else |
| 99 | 92 | { |
| 100 | 删除: hourslog.Time += seconds; | |
| 93 | 新增: if (hourslog.Time + seconds > 3600) | |
| 94 | 新增: { | |
| 95 | 新增: hourslog.Time = 3600; | |
| 96 | 新增: | |
| 97 | 新增: int overflowSeconds = hourslog.Time + seconds - 3600; | |
| 98 | 新增: | |
| 99 | 新增: Set(processName, overflowSeconds, nowtime.AddHours(1)); | |
| 100 | 新增: } | |
| 101 | 新增: else | |
| 102 | 新增: { | |
| 103 | 新增: hourslog.Time += seconds; | |
| 104 | 新增: } | |
| 101 | 105 | } |
| 102 | 删除: } | |
| 103 | 106 | |
| 104 | 删除: // 统计使用时长 | |
| 105 | 删除: app.TotalTime += seconds; | |
| 107 | 新增: // 统计使用时长 | |
| 108 | 新增: app.TotalTime += seconds; | |
| 106 | 109 | |
| 107 | 删除: appData.UpdateApp(app); | |
| 110 | 新增: appData.UpdateApp(app); | |
| 108 | 111 | |
| 109 | 删除: db.SaveChanges(); | |
| 112 | 新增: db.SaveChanges(); | |
| 113 | 新增: } | |
| 110 | 114 | } |
| 111 | 115 | } |
| 112 | 116 | |

