前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xxl-job restful api

xxl-job restful api

作者头像
阿超
发布2024-01-06 09:44:21
2560
发布2024-01-06 09:44:21
举报
文章被收录于专栏:快乐阿超快乐阿超

谁若与集体脱离,谁的命运就要悲哀。——奥斯特洛夫斯基

昨天对接了xxl-jobrestful api,发现其没有提供查询job信息的api,于是自己拓展

在原先com.xxl.job.admin.controller.JobApiController#api添加

代码语言:javascript
复制
/**
 * api
 *
 * @param uri
 * @param data
 * @return
 */
@RequestMapping("/{uri}")
@ResponseBody
@PermissionLimit(limit=false)
public ReturnT<?> api(HttpServletRequest request, @PathVariable("uri") String uri, @RequestBody(required = false) String data) {

    // valid
    if (!"POST".equalsIgnoreCase(request.getMethod())) {
        return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, HttpMethod not support.");
    }
    if (uri==null || uri.trim().length()==0) {
        return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, uri-mapping empty.");
    }
    if (XxlJobAdminConfig.getAdminConfig().getAccessToken()!=null
            && XxlJobAdminConfig.getAdminConfig().getAccessToken().trim().length()>0
            && !XxlJobAdminConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN))) {
        return new ReturnT<String>(ReturnT.FAIL_CODE, "The access token is wrong.");
    }

    // services mapping
    if ("callback".equals(uri)) {
        List<HandleCallbackParam> callbackParamList = GsonTool.fromJson(data, List.class, HandleCallbackParam.class);
        return adminBiz.callback(callbackParamList);
    } else if ("registry".equals(uri)) {
        RegistryParam registryParam = GsonTool.fromJson(data, RegistryParam.class);
        return adminBiz.registry(registryParam);
    } else if ("registryRemove".equals(uri)) {
        RegistryParam registryParam = GsonTool.fromJson(data, RegistryParam.class);
        return adminBiz.registryRemove(registryParam);
    } else if ("pageList".equals(uri)) {
        ReturnT<Map<String, Object>> success = new ReturnT<>();
        JobQuery jobQuery = GsonTool.fromJson(data, JobQuery.class);
        Map<String, Object> pageList = xxlJobService.pageList(
                jobQuery.getStart(),
                jobQuery.getLength(),
                jobQuery.getJobGroup(),
                jobQuery.getTriggerStatus(),
                jobQuery.getJobDesc(),
                jobQuery.getExecutorHandler(),
                jobQuery.getAuthor());
        success.setContent(pageList);
        return success;
    } else {
        return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, uri-mapping("+ uri +") not found.");
    }

}

这里参数

代码语言:javascript
复制
public class JobQuery {
        private Integer start;
        private Integer length;
        private Integer jobGroup;
        private Integer triggerStatus;
        private String jobDesc;
        private String executorHandler;
        private String author;

        public Integer getStart() {
            return start;
        }

        public void setStart(Integer start) {
            this.start = start;
        }

        public Integer getLength() {
            return length;
        }

        public void setLength(Integer length) {
            this.length = length;
        }

        public Integer getJobGroup() {
            return jobGroup;
        }

        public void setJobGroup(Integer jobGroup) {
            this.jobGroup = jobGroup;
        }

        public Integer getTriggerStatus() {
            return triggerStatus;
        }

        public void setTriggerStatus(Integer triggerStatus) {
            this.triggerStatus = triggerStatus;
        }

        public String getJobDesc() {
            return jobDesc;
        }

        public void setJobDesc(String jobDesc) {
            this.jobDesc = jobDesc;
        }

        public String getExecutorHandler() {
            return executorHandler;
        }

        public void setExecutorHandler(String executorHandler) {
            this.executorHandler = executorHandler;
        }

        public String getAuthor() {
            return author;
        }

        public void setAuthor(String author) {
            this.author = author;
        }
    }

然后是修改对应的serviceimpl的签名

com.xxl.job.admin.service.XxlJobService#pageList

代码语言:javascript
复制
public Map<String, Object> pageList(Integer start, Integer length, Integer jobGroup, Integer triggerStatus, String jobDesc, String executorHandler, String author);

com.xxl.job.admin.service.impl.XxlJobServiceImpl#pageList

代码语言:javascript
复制
@Override
public Map<String, Object> pageList(Integer start, Integer length, Integer jobGroup, Integer triggerStatus, String jobDesc, String executorHandler, String author) {

	start = Optional.ofNullable(start).orElse(0);
	length = Optional.ofNullable(length).orElse(10);
	// page list
	List<XxlJobInfo> list = xxlJobInfoDao.pageList(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);
	int list_count = xxlJobInfoDao.pageListCount(start, length, jobGroup, triggerStatus, jobDesc, executorHandler, author);

	// package result
	Map<String, Object> maps = new HashMap<String, Object>();
    maps.put("recordsTotal", list_count);		// 总记录数
    maps.put("recordsFiltered", list_count);	// 过滤后的总记录数
    maps.put("data", list);  					// 分页列表
	return maps;
}

然后是mapper

com.xxl.job.admin.dao.XxlJobInfoDao

代码语言:javascript
复制
public List<XxlJobInfo> pageList(@Param("offset") Integer offset,
								 @Param("pagesize") Integer pagesize,
								 @Param("jobGroup") Integer jobGroup,
								 @Param("triggerStatus") Integer triggerStatus,
								 @Param("jobDesc") String jobDesc,
								 @Param("executorHandler") String executorHandler,
								 @Param("author") String author);

public int pageListCount(@Param("offset") Integer offset,
						 @Param("pagesize") Integer pagesize,
						 @Param("jobGroup") Integer jobGroup,
						 @Param("triggerStatus") Integer triggerStatus,
						 @Param("jobDesc") String jobDesc,
						 @Param("executorHandler") String executorHandler,
						 @Param("author") String author);

以及XxlJobInfoMapper.xml

代码语言:javascript
复制
<select id="pageList" parameterType="java.util.HashMap" resultMap="XxlJobInfo">
	SELECT <include refid="Base_Column_List" />
	FROM xxl_job_info AS t
	<trim prefix="WHERE" prefixOverrides="AND | OR" >
		<if test="jobGroup != null and jobGroup gt 0">
			AND t.job_group = #{jobGroup}
		</if>
           <if test="triggerStatus != null and triggerStatus gte 0">
               AND t.trigger_status = #{triggerStatus}
           </if>
		<if test="jobDesc != null and jobDesc != ''">
			AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
		</if>
		<if test="executorHandler != null and executorHandler != ''">
			AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
		</if>
		<if test="author != null and author != ''">
			AND t.author like CONCAT(CONCAT('%', #{author}), '%')
		</if>
	</trim>
	ORDER BY id DESC
	LIMIT #{offset}, #{pagesize}
</select>

<select id="pageListCount" parameterType="java.util.HashMap" resultType="int">
	SELECT count(1)
	FROM xxl_job_info AS t
	<trim prefix="WHERE" prefixOverrides="AND | OR" >
		<if test="jobGroup != null and jobGroup gt 0">
			AND t.job_group = #{jobGroup}
		</if>
		<if test="triggerStatus != null and triggerStatus gte 0">
               AND t.trigger_status = #{triggerStatus}
           </if>
		<if test="jobDesc != null and jobDesc != ''">
			AND t.job_desc like CONCAT(CONCAT('%', #{jobDesc}), '%')
		</if>
		<if test="executorHandler != null and executorHandler != ''">
			AND t.executor_handler like CONCAT(CONCAT('%', #{executorHandler}), '%')
		</if>
		<if test="author != null and author != ''">
			AND t.author like CONCAT(CONCAT('%', #{author}), '%')
		</if>
	</trim>
</select>

至此,终于可以通过请求

代码语言:javascript
复制
http://localhost:8080/xxl-job-admin/api/pageList

查询到job列表了,别忘了在header里携带token

代码语言:javascript
复制
XXL-JOB-ACCESS-TOKEN:{xxl.job.accessToken}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档