🔨 命令执行用户.

This commit is contained in:
lijiahangmax
2024-12-13 01:05:01 +08:00
parent 190b78d14a
commit dd973a46fc
21 changed files with 315 additions and 162 deletions

View File

@@ -108,12 +108,12 @@ public class ExecJobController {
}
@DemoDisableApi
@OperatorLog(ExecJobOperatorType.SET_EXEC_USER)
@PutMapping("/set-exec-user")
@Operation(summary = "设置计划任务执行用户")
@PreAuthorize("@ss.hasPermission('exec:exec-job:set-exec-user')")
public Integer setExecJobExecUser(@Validated @RequestBody ExecJobSetExecUserRequest request) {
return execJobService.setExecJobExecUser(request);
@OperatorLog(ExecJobOperatorType.UPDATE_EXEC_USER)
@PutMapping("/update-exec-user")
@Operation(summary = "修改计划任务执行用户")
@PreAuthorize("@ss.hasPermission('asset:exec-job:update-exec-user')")
public Integer updateExecJobExecUser(@Validated @RequestBody ExecJobUpdateExecUserRequest request) {
return execJobService.updateExecJobExecUser(request);
}
@DemoDisableApi

View File

@@ -28,7 +28,7 @@ import static org.dromara.visor.framework.biz.operator.log.core.enums.OperatorRi
* @version 1.0.3
* @since 2024-3-28 12:03
*/
@Module("exec:exec-job")
@Module("asset:exec-job")
public class ExecJobOperatorType extends InitializingOperatorTypes {
public static final String CREATE = "exec-job:create";
@@ -39,7 +39,7 @@ public class ExecJobOperatorType extends InitializingOperatorTypes {
public static final String TRIGGER = "exec-job:trigger";
public static final String SET_EXEC_USER = "exec-job:set-exec-user";
public static final String UPDATE_EXEC_USER = "exec-job:update-exec-user";
public static final String DELETE = "exec-job:delete";
@@ -54,7 +54,7 @@ public class ExecJobOperatorType extends InitializingOperatorTypes {
new OperatorType(M, UPDATE, "更新计划任务 <sb>${before}</sb>"),
new OperatorType(M, UPDATE_STATUS, "<sb>${statusName}</sb> 计划任务 <sb>${name}</sb>"),
new OperatorType(M, TRIGGER, "手动触发计划任务 <sb>${name}</sb>"),
new OperatorType(M, SET_EXEC_USER, "修改计划任务 <sb>${name}</sb> 执行用户为 <sb>${username}</sb>"),
new OperatorType(M, UPDATE_EXEC_USER, "修改计划任务 <sb>${name}</sb> 执行用户为 <sb>${username}</sb>"),
new OperatorType(H, DELETE, "删除计划任务 <sb>${name}</sb>"),
new OperatorType(H, IMPORT, "导入计划任务 <sb>${count}</sb> 条"),
new OperatorType(H, EXPORT, "导出计划任务 <sb>${count}</sb> 条"),

View File

@@ -22,7 +22,7 @@ import org.dromara.visor.framework.common.entity.PageRequest;
import javax.validation.constraints.NotNull;
/**
* 设置计划任务执行用户 查询请求对象
* 修改计划任务执行用户 查询请求对象
*
* @author Jiahang Li
* @version 1.0.3
@@ -33,8 +33,8 @@ import javax.validation.constraints.NotNull;
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Schema(name = "ExecJobSetExecUserRequest", description = "设置计划任务执行用户 查询请求对象")
public class ExecJobSetExecUserRequest extends PageRequest {
@Schema(name = "ExecJobUpdateExecUserRequest", description = "修改计划任务执行用户 查询请求对象")
public class ExecJobUpdateExecUserRequest extends PageRequest {
@NotNull
@Schema(description = "id")

View File

@@ -55,6 +55,14 @@ public interface ExecJobService {
*/
Integer updateExecJobStatus(ExecJobUpdateStatusRequest request);
/**
* 修改执行用户
*
* @param request request
* @return effect
*/
Integer updateExecJobExecUser(ExecJobUpdateExecUserRequest request);
/**
* 查询计划任务
*
@@ -78,14 +86,6 @@ public interface ExecJobService {
*/
DataGrid<ExecJobVO> getExecJobPage(ExecJobQueryRequest request);
/**
* 设置执行用户
*
* @param request request
* @return effect
*/
Integer setExecJobExecUser(ExecJobSetExecUserRequest request);
/**
* 获取下一个执行序列
*

View File

@@ -141,6 +141,7 @@ public class ExecCommandServiceImpl implements ExecCommandService {
.username(request.getUsername())
.source(request.getSource())
.sourceId(request.getSourceId())
.execMode(request.getExecMode())
.execSeq(request.getExecSeq())
.description(Strings.ifBlank(request.getDescription(), () -> {
if (command.length() < DESC_OMIT + Const.OMIT.length()) {

View File

@@ -97,6 +97,7 @@ public class ExecJobServiceImpl implements ExecJobService {
@Transactional(rollbackFor = Exception.class)
public Long createExecJob(ExecJobCreateRequest request) {
log.info("ExecJobService-createExecJob request: {}", JSON.toJSONString(request));
LoginUser loginUser = SecurityUtils.getLoginUser();
// 验证表达式是否正确
Cron.of(request.getExpression());
Valid.valid(ScriptExecEnum::of, request.getScriptExec());
@@ -108,6 +109,10 @@ public class ExecJobServiceImpl implements ExecJobService {
this.checkHostPermission(request.getHostIdList());
// 插入任务
record.setStatus(ExecJobStatusEnum.DISABLED.getStatus());
if (loginUser != null) {
record.setExecUserId(loginUser.getId());
record.setExecUsername(loginUser.getUsername());
}
int effect = execJobDAO.insert(record);
Long id = record.getId();
// 设置任务主机
@@ -170,6 +175,31 @@ public class ExecJobServiceImpl implements ExecJobService {
return effect;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Integer updateExecJobExecUser(ExecJobUpdateExecUserRequest request) {
Long id = request.getId();
Long userId = request.getUserId();
log.info("ExecJobService-updateExecJobExecUser id: {}, userId: {}", id, userId);
// 查询任务
ExecJobDO job = execJobDAO.selectById(id);
Valid.notNull(job, ErrorMessage.DATA_ABSENT);
// 查询用户
String username = systemUserApi.getUsernameById(userId);
Valid.notNull(username, ErrorMessage.USER_ABSENT);
// 修改任务
ExecJobDO update = new ExecJobDO();
update.setId(id);
update.setExecUserId(userId);
update.setExecUsername(username);
int effect = execJobDAO.updateById(update);
// 设置日志参数
OperatorLogs.add(OperatorLogs.NAME, job.getName());
OperatorLogs.add(OperatorLogs.USERNAME, username);
log.info("ExecJobService-setExecJobExecUser effect: {}", effect);
return effect;
}
@Override
public ExecJobVO getExecJobById(Long id) {
// 查询任务
@@ -239,30 +269,6 @@ public class ExecJobServiceImpl implements ExecJobService {
return dataGrid;
}
@Override
public Integer setExecJobExecUser(ExecJobSetExecUserRequest request) {
Long id = request.getId();
Long userId = request.getUserId();
log.info("ExecJobService-setExecJobExecUser id: {}, userId: {}", id, userId);
// 查询任务
ExecJobDO job = execJobDAO.selectById(id);
Valid.notNull(job, ErrorMessage.DATA_ABSENT);
// 查询用户
String username = systemUserApi.getUsernameById(userId);
Valid.notNull(username, ErrorMessage.USER_ABSENT);
// 修改任务
ExecJobDO update = new ExecJobDO();
update.setId(id);
update.setExecUserId(userId);
update.setExecUsername(username);
int effect = execJobDAO.updateById(update);
// 设置日志参数
OperatorLogs.add(OperatorLogs.NAME, job.getName());
OperatorLogs.add(OperatorLogs.USERNAME, username);
log.info("ExecJobService-setExecJobExecUser effect: {}", effect);
return effect;
}
@Override
public Integer getNextExecSeq(Long id) {
// 自增