Skip to content

Commit

Permalink
feat($Quartz): provide Quartz job maintenance
Browse files Browse the repository at this point in the history
  • Loading branch information
johnnymillergh committed Sep 26, 2021
1 parent 05b9cd0 commit 9beb7c2
Show file tree
Hide file tree
Showing 9 changed files with 254 additions and 93 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.jmsoftware.maf.springcloudstarter.quartz;

import com.jmsoftware.maf.springcloudstarter.configuration.MafProjectProperty;
import com.jmsoftware.maf.springcloudstarter.quartz.controller.QuartzJobConfigurationController;
import com.jmsoftware.maf.springcloudstarter.quartz.service.QuartzJobConfigurationService;
import com.jmsoftware.maf.springcloudstarter.quartz.service.impl.QuartzJobConfigurationServiceImpl;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -50,6 +51,14 @@ public GreetingBean greetingBean(MafProjectProperty mafProjectProperty) {
return new GreetingBean(mafProjectProperty);
}

@Bean
public QuartzJobConfigurationController quartzJobConfigurationController(
QuartzJobConfigurationService quartzJobConfigurationService
) {
log.warn("Initial bean: '{}'", QuartzJobConfigurationController.class.getSimpleName());
return new QuartzJobConfigurationController(quartzJobConfigurationService);
}

@Bean
public QuartzJobConfigurationService quartzJobConfigurationService(SchedulerFactoryBean schedulerFactoryBean,
MafProjectProperty mafProjectProperty) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.jmsoftware.maf.springcloudstarter.quartz.controller;

import com.jmsoftware.maf.common.bean.PageResponseBodyBean;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListItem;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListPayload;
import com.jmsoftware.maf.springcloudstarter.quartz.service.QuartzJobConfigurationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

/**
* <h1>QuartzJobConfigurationController</h1>
* <p>
* Change description here.
*
* @author Johnny Miller (鍾俊), email: johnnysviva@outlook.com, 9/26/21 11:58 PM
**/
@Validated
@RestController
@RequiredArgsConstructor
@Api(tags = {"Quartz Job Configuration API"})
public class QuartzJobConfigurationController {
private final QuartzJobConfigurationService service;

@GetMapping("/quartz-job-configurations")
@ApiOperation(value = "/quartz-job-configurations", notes = "Retrieve Quartz job configuration page list")
public PageResponseBodyBean<GetQuartzJobConfigurationPageListItem> getPageList(
@Valid GetQuartzJobConfigurationPageListPayload payload
) {
return this.service.getPageList(payload);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.jmsoftware.maf.springcloudstarter.quartz.entity;

import lombok.Data;

import java.time.LocalDateTime;

/**
* <h1>GetQuartzJobConfigurationPageListItem</h1>
* <p>
* Change description here.
*
* @author Johnny Miller (鍾俊), email: johnnysviva@outlook.com, 9/27/21 12:07 AM
**/
@Data
public class GetQuartzJobConfigurationPageListItem {
private Long id;
private String name;
private String group;
private String serviceName;
private String invokeTarget;
private String cronExpression;
private Byte misfirePolicy;
private Byte concurrent;
private String description;
private Byte status;
private String createdBy;
private LocalDateTime createdTime;
private String modifiedBy;
private LocalDateTime modifiedTime;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.jmsoftware.maf.springcloudstarter.quartz.entity;

import com.jmsoftware.maf.common.bean.PaginationBase;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
* <h1>GetQuartzJobConfigurationPageListPayload</h1>
* <p>
* Change description here.
*
* @author Johnny Miller (鍾俊), email: johnnysviva@outlook.com, 9/27/21 12:07 AM
**/
@Data
@EqualsAndHashCode(callSuper = true)
public class GetQuartzJobConfigurationPageListPayload extends PaginationBase {
private String serviceName;
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.jmsoftware.maf.springcloudstarter.quartz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListItem;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListPayload;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.persistence.QuartzJobConfiguration;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
* Description: QuartzJobConfigurationMapper
Expand All @@ -11,4 +15,15 @@
*/
@Mapper
public interface QuartzJobConfigurationMapper extends BaseMapper<QuartzJobConfiguration> {
/**
* Select page list page.
*
* @param page the page
* @param payload the payload
* @return the page
*/
Page<GetQuartzJobConfigurationPageListItem> selectPageList(
Page<GetQuartzJobConfigurationPageListItem> page,
@Param("payload") GetQuartzJobConfigurationPageListPayload payload
);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
package com.jmsoftware.maf.springcloudstarter.quartz.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jmsoftware.maf.common.bean.PageResponseBodyBean;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListItem;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListPayload;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.persistence.QuartzJobConfiguration;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;

/**
* Description: QuartzJobConfigurationService
*
* @author Johnny Miller (锺俊), email: johnnysviva@outlook.com, date: 9/23/2021 8:23 AM
*/
@Validated
public interface QuartzJobConfigurationService extends IService<QuartzJobConfiguration> {
/**
* Gets page list.
*
* @param payload the payload
* @return the page list
*/
PageResponseBodyBean<GetQuartzJobConfigurationPageListItem> getPageList(
@Valid GetQuartzJobConfigurationPageListPayload payload
);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.jmsoftware.maf.springcloudstarter.quartz.service.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jmsoftware.maf.common.bean.PageResponseBodyBean;
import com.jmsoftware.maf.springcloudstarter.configuration.MafProjectProperty;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListItem;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListPayload;
import com.jmsoftware.maf.springcloudstarter.quartz.entity.persistence.QuartzJobConfiguration;
import com.jmsoftware.maf.springcloudstarter.quartz.mapper.QuartzJobConfigurationMapper;
import com.jmsoftware.maf.springcloudstarter.quartz.service.QuartzJobConfigurationService;
Expand All @@ -15,6 +19,7 @@
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.validation.Valid;
import java.util.List;

/**
Expand Down Expand Up @@ -54,4 +59,13 @@ private List<QuartzJobConfiguration> getQuartzJobConfigurationForService() {
.orderByAsc(QuartzJobConfiguration::getId);
return this.list(queryWrapper);
}

@Override
public PageResponseBodyBean<GetQuartzJobConfigurationPageListItem> getPageList(
@Valid GetQuartzJobConfigurationPageListPayload payload
) {
val page = new Page<GetQuartzJobConfigurationPageListItem>(payload.getCurrentPage(), payload.getPageSize());
this.getBaseMapper().selectPageList(page, payload);
return PageResponseBodyBean.ofSuccess(page.getRecords(), page.getTotal());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,31 @@
id, `name`, `group`, service_name, invoke_target, cron_expression, misfire_policy, concurrent,
description, `status`, created_by, created_time, modified_by, modified_time, deleted
</sql>

<select id="selectPageList"
resultType="com.jmsoftware.maf.springcloudstarter.quartz.entity.GetQuartzJobConfigurationPageListItem">
SELECT qjc.id AS id,
qjc.name AS name,
qjc.`group` AS `group`,
qjc.service_name AS serviceName,
qjc.invoke_target AS invokeTarget,
qjc.cron_expression AS cronExpression,
qjc.misfire_policy AS misfirePolicy,
qjc.concurrent AS concurrent,
qjc.description AS description,
qjc.status AS status,
createdBy.username AS createdBy,
qjc.created_time AS createdTime,
modifiedBy.username AS modifiedBy,
qjc.modified_time AS modified_time
FROM quartz_job_configuration qjc
LEFT JOIN user createdBy ON createdBy.id = qjc.created_by
LEFT JOIN user modifiedBy ON modifiedBy.id = qjc.modified_by
<where>
qjc.deleted = 0
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(payload.serviceName)">
AND qjc.service_name LIKE concat('%', #{payload.serviceName}, '%')
</if>
</where>
</select>
</mapper>

0 comments on commit 9beb7c2

Please sign in to comment.