跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改Core/Servicers/Instances/Data.cs+68 −64看文件
@@ -15,98 +15,102 @@ namespace Core.Servicers.Instances
1515 public class Data : IData
1616 {
1717 private readonly IAppData appData;
18新增: private readonly object setLock = new object();
1819 public Data(IAppData appData)
1920 {
2021 this.appData = appData;
2122 }
2223 public void Set(string processName, int seconds, DateTime? time_ = null)
2324 {
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)
3126 {
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;
4129
30新增: // 当前时段
31新增: var nowtime = new DateTime(today.Year, today.Month, today.Day, time.Hour, 0, 0);
4232
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)
5834 {
59删除: res.Time += seconds;
35新增: return;
6036 }
6137
62删除: // 分时段记录数据
38新增: AppModel app = appData.GetApp(processName);
6339
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)
7041 {
71删除: // 没有时创建
42新增: return;
43新增: }
7244
73删除: if (seconds > 3600)
74删除: {
75删除: int overflowSeconds = seconds - 3600;
76删除: Set(processName, overflowSeconds, nowtime.AddHours(1));
7745
78删除: seconds = 3600;
79删除: }
8046
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())
8948 {
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
9161 {
92删除: hourslog.Time = 3600;
62新增: res.Time += seconds;
63新增: }
9364
94删除: int overflowSeconds = hourslog.Time + seconds - 3600;
65新增: // 分时段记录数据
9566
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新增: });
9790 }
9891 else
9992 {
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新增: }
101105 }
102删除: }
103106
104删除: // 统计使用时长
105删除: app.TotalTime += seconds;
107新增: // 统计使用时长
108新增: app.TotalTime += seconds;
106109
107删除: appData.UpdateApp(app);
110新增: appData.UpdateApp(app);
108111
109删除: db.SaveChanges();
112新增: db.SaveChanges();
113新增: }
110114 }
111115 }
112116