1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
| using System;
| using System.Collections.Generic;
| using System.Linq;
| using System.Threading.Tasks;
|
| namespace VueWebCoreApi.Quartz
| {
| public class QuartzRepository
| {
| #region 任务基础操作
| public async Task<List<TaskOptions>> GetAllTasksAsync()
| {
| var sql = @"SELECT TaskName,GroupName,Interval,ApiUrl,AuthKey,AuthValue,Describe,MessagePush,PushUserCode,RequestType,LastRunTime,Status,CreateAuthor,CreateTime,UpdateTime
| FROM ScheduleInfo";
| return await DapperHelper.QueryAsync<TaskOptions>(sql);
| }
|
| public async Task<bool> CreateTaskAsync(TaskOptions task)
| {
| var sql = @"INSERT INTO ScheduleInfo(TaskName,GroupName,Interval,ApiUrl,RequestParameters,AuthKey,AuthValue,Describe,MessagePush,PushUserCode,RequestType,LastRunTime,Status,CreateAuthor,CreateTime,UpdateTime)
| VALUES(@TaskName,@GroupName,@Interval,@ApiUrl,@RequestParameters,@AuthKey,@AuthValue,@Describe,@MessagePush,@PushUserCode,@RequestType,@LastRunTime,@Status,'9999',GETDATE(),GETDATE())";
| var rows = await DapperHelper.ExecuteAsync(sql, task);
| return rows > 0;
| }
|
| /// <summary>
| /// 修复:增加更新结果校验,返回具体信息
| /// </summary>
| public async Task<(bool Success, string Msg)> UpdateTaskWithCheckAsync(TaskOptions task)
| {
| if (string.IsNullOrEmpty(task.TaskName) || string.IsNullOrEmpty(task.GroupName))
| {
| return (false, "任务名/分组名不能为空");
| }
| // 先校验任务是否存在
| if (!await TaskExistsAsync(task.TaskName, task.GroupName))
| {
| return (false, $"任务[{task.TaskName}-{task.GroupName}]不存在");
| }
| var sql = @"UPDATE ScheduleInfo
| SET Interval=@Interval,ApiUrl=@ApiUrl,RequestParameters=@RequestParameters,AuthKey=@AuthKey,AuthValue=@AuthValue,Describe=@Describe,
| MessagePush=@MessagePush,PushUserCode=@PushUserCode,RequestType=@RequestType,LastRunTime=@LastRunTime,Status=@Status,UpdateTime=GETDATE()
| WHERE TaskName=@TaskName AND GroupName=@GroupName";
| var rows = await DapperHelper.ExecuteAsync(sql, task);
| return rows > 0 ? (true, "更新成功") : (false, "更新失败(无数据行更新)");
| }
|
| // 兼容原有方法
| public async Task<bool> UpdateTaskAsync(TaskOptions task)
| {
| var (success, _) = await UpdateTaskWithCheckAsync(task);
| return success;
| }
|
| public async Task<bool> DeleteTaskAsync(string taskName, string groupName)
| {
| var sql = "DELETE FROM ScheduleInfo WHERE TaskName=@TaskName AND GroupName=@GroupName";
| var rows = await DapperHelper.ExecuteAsync(sql, new { TaskName = taskName, GroupName = groupName });
| return rows > 0;
| }
|
| public async Task<List<TaskOptions>> TaskExists(string taskName, string groupName)
| {
| var sql = "SELECT * FROM ScheduleInfo WHERE TaskName=@TaskName AND GroupName=@GroupName";
| return await DapperHelper.QueryAsync<TaskOptions>(sql, new { TaskName = taskName, GroupName = groupName });
| }
|
| public async Task<bool> TaskExistsAsync(string taskName, string groupName)
| {
| var sql = "SELECT 1 FROM ScheduleInfo WHERE TaskName=@TaskName AND GroupName=@GroupName";
| var result = await DapperHelper.QueryFirstOrDefaultAsync<int?>(sql, new { TaskName = taskName, GroupName = groupName });
| return result.HasValue;
| }
|
| public async Task<bool> UpdateTaskLastRunTimeAsync(string taskName, string groupName, DateTime lastRunTime)
| {
| var sql = "UPDATE ScheduleInfo SET LastRunTime=@LastRunTime,UpdateTime=GETDATE() WHERE TaskName=@TaskName AND GroupName=@GroupName";
| var rows = await DapperHelper.ExecuteAsync(sql, new { TaskName = taskName, GroupName = groupName, LastRunTime = lastRunTime });
| return rows > 0;
| }
| #endregion
|
| #region 任务运行日志操作
| public async Task<bool> AddJobRunLogAsync(string taskName, string groupName, DateTime beginDate, DateTime endDate, string msg,string MessagePush,string PushUserCode)
| {
| var sql = @"INSERT INTO JobRunLog(TaskName,GroupName,BeginDate,EndDate,Msg,CreateTime,MessagePush,PushUserCode)
| VALUES(@TaskName,@GroupName,@BeginDate,@EndDate,@Msg,GETDATE(),@MessagePush,@PushUserCode)";
| var param = new
| {
| TaskName = taskName,
| GroupName = groupName,
| BeginDate = beginDate,
| EndDate = endDate,
| Msg = msg,
| MessagePush= MessagePush,
| PushUserCode= PushUserCode
| };
| var rows = await DapperHelper.ExecuteAsync(sql, param);
| return rows > 0;
| }
|
| /// <summary>
| /// 修复:分页参数可配置,避免写死100
| /// </summary>
| public async Task<List<TaskLog>> GetJobRunLogAsync(string taskName, string groupName, int page, int pageSize = 20)
| {
| var sql = $@"SELECT Id,TaskName,GroupName,CONVERT(VARCHAR(20),BeginDate,120) AS BeginDate,
| CONVERT(VARCHAR(20),EndDate,120) AS EndDate,Msg,CreateTime,MessagePush,PushUserCode
| FROM JobRunLog
| WHERE TaskName=@TaskName AND GroupName=@GroupName
| ORDER BY CreateTime DESC
| OFFSET {(page - 1) * pageSize} ROWS FETCH NEXT {pageSize} ROWS ONLY";
| return await DapperHelper.QueryAsync<TaskLog>(sql, new { TaskName = taskName, GroupName = groupName });
| }
| #endregion
|
| #region 任务操作日志操作
| public async Task<bool> AddJobActionLogAsync(string actionType, string taskName, string groupName, string content)
| {
| var sql = @"INSERT INTO JobActionLog(ActionType,TaskName,GroupName,Content,CreateTime)
| VALUES(@ActionType,@TaskName,@GroupName,@Content,GETDATE())";
| var param = new
| {
| ActionType = actionType,
| TaskName = taskName,
| GroupName = groupName,
| Content = content
| };
| var rows = await DapperHelper.ExecuteAsync(sql, param);
| return rows > 0;
| }
| #endregion
|
| #region 系统启动日志操作
| public async Task<bool> WriteStartLogAsync(string content)
| {
| var sql = "INSERT INTO SystemStartLog(Content,CreateTime) VALUES(@Content,GETDATE())";
| var rows = await DapperHelper.ExecuteAsync(sql, new { Content = content });
| return rows > 0;
| }
| #endregion
| }
| }
|
|