| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- package com.dk.common.infrastructure.xxl;
- import com.alibaba.fastjson.JSONObject;
- import com.dk.common.exception.BaseBusinessException;
- import com.dk.common.infrastructure.config.XxlJobInfoConfig;
- import com.dk.common.infrastructure.constant.Constant;
- import com.dk.common.infrastructure.enums.ErrorCodeEnum;
- import com.dk.common.model.xxl.XxlJobInfo;
- import com.dk.common.response.ResponseCodeEnum;
- import com.dk.common.response.ResponseResultVO;
- import com.dk.common.util.HttpUtils;
- import com.dk.common.util.UrlUtils;
- import com.xxl.job.core.handler.annotation.XxlJob;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * @author : 洪旭东
- * @desc : XxlJobUtils
- * xxl job 定时任务工具类
- * @date : 2022-06-29 11:36
- */
- @Slf4j
- @Component
- public class XxlJobUtils {
- @Autowired
- private XxlJobInfoConfig xxlJobInfoConfig;
- /**
- * @desc : 创建任务
- * 客户提醒
- *
- * second 间隔秒数
- * planId 计划id
- * type 任务类型
- *
- * @author : 洪旭东
- * @date : 2022-06-29 14:15
- */
- public int create(int second, Long planId, String type) {
- Map<String, Map<String, Object>> followPlan = xxlJobInfoConfig.getInfo();
- int jobGroup = xxlJobInfoConfig.getJobGroup();
- XxlJobInfo xxlJobInfo = new XxlJobInfo();
- xxlJobInfo.setJobGroup(jobGroup);
- xxlJobInfo.setJobDesc(followPlan.get(type).get("job-desc").toString()+planId);
- xxlJobInfo.setAuthor("dk");
- xxlJobInfo.setScheduleType("FIX_RATE");
- xxlJobInfo.setScheduleConf(String.valueOf(second));
- xxlJobInfo.setGlueType("BEAN");
- xxlJobInfo.setExecutorHandler(followPlan.get(type).get("executo-handler").toString());
- xxlJobInfo.setExecutorRouteStrategy("FIRST");
- xxlJobInfo.setMisfireStrategy("DO_NOTHING");
- xxlJobInfo.setExecutorBlockStrategy("SERIAL_EXECUTION");
- xxlJobInfo.setExecutorTimeout(0);
- xxlJobInfo.setExecutorFailRetryCount(0);
- xxlJobInfo.setGlueRemark("GLUE代码初始化");
- xxlJobInfo.setExecutorParam(String.valueOf(planId));
- Map<String, String> header = new HashMap<>(2);
- // header.put("Cookie","XXL_JOB_LOGIN_IDENTITY=7b226964223a312c22757365726e616d65223a2261646d696e222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a312c227065726d697373696f6e223a6e756c6c7d");
- ResponseResultVO<JSONObject> resultVO = HttpUtils.post(xxlJobInfoConfig.getServerUrl() + "/hg/scrm/add",
- xxlJobInfo, header);
- if (resultVO.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
- if (resultVO.getData().getInteger("code").equals(ResponseCodeEnum.SUCCESS.getCode())) {
- return resultVO.getData().getInteger("content");
- } else {
- //提醒时间有问题,任务间隔时间为负数
- if (resultVO.getData()!=null &&
- Constant.StringConstant.XXL_JOB_ERROR_MESSAGE.getName().equals(resultVO.getData().getString("msg"))){
- // TODO
- // throw new BaseBusinessException(ErrorCodeEnum.CUSTOMER_FOLLOW_NEXT_TIME_OVER.getCode(),
- // ErrorCodeEnum.CUSTOMER_FOLLOW_NEXT_TIME_OVER.getMessage());
- }
- throw new BaseBusinessException(resultVO.getData().getInteger("code"), resultVO.getData().getString("msg"));
- }
- } else {
- throw new BaseBusinessException(resultVO.getCode(), resultVO.getMessage());
- }
- }
- public int create(String cron, Long primaryKeyId, String type) {
- Map<String, Map<String, Object>> info = xxlJobInfoConfig.getInfo();
- int jobGroup = xxlJobInfoConfig.getJobGroup();
- XxlJobInfo xxlJobInfo = new XxlJobInfo();
- xxlJobInfo.setJobGroup(jobGroup);
- xxlJobInfo.setJobDesc(info.get(type).get("job-desc").toString()+primaryKeyId);
- xxlJobInfo.setAuthor("dk");
- xxlJobInfo.setScheduleType("CRON");
- xxlJobInfo.setScheduleConf(cron);
- xxlJobInfo.setGlueType("BEAN");
- xxlJobInfo.setExecutorHandler(info.get(type).get("executo-handler").toString());
- xxlJobInfo.setExecutorRouteStrategy("FIRST");
- xxlJobInfo.setMisfireStrategy("DO_NOTHING");
- xxlJobInfo.setExecutorBlockStrategy("SERIAL_EXECUTION");
- xxlJobInfo.setExecutorTimeout(0);
- xxlJobInfo.setExecutorFailRetryCount(0);
- xxlJobInfo.setGlueRemark("GLUE代码初始化");
- xxlJobInfo.setExecutorParam(String.valueOf(primaryKeyId));
- Map<String, String> header = new HashMap<>(2);
- // header.put("Cookie","XXL_JOB_LOGIN_IDENTITY=7b226964223a312c22757365726e616d65223a2261646d696e222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a312c227065726d697373696f6e223a6e756c6c7d");
- ResponseResultVO<JSONObject> resultVO = HttpUtils.post(xxlJobInfoConfig.getServerUrl() + "/hg/scrm/add",
- xxlJobInfo, header);
- if (resultVO.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
- if (resultVO.getData().getInteger("code").equals(ResponseCodeEnum.SUCCESS.getCode())) {
- return resultVO.getData().getInteger("content");
- } else {
- //提醒时间有问题,任务间隔时间为负数
- if (resultVO.getData()!=null &&
- Constant.StringConstant.XXL_JOB_ERROR_MESSAGE.getName().equals(resultVO.getData().getString("msg"))){
- //TODO
- // throw new BaseBusinessException(ErrorCodeEnum.CUSTOMER_FOLLOW_NEXT_TIME_OVER.getCode(),
- // ErrorCodeEnum.CUSTOMER_FOLLOW_NEXT_TIME_OVER.getMessage());
- }
- throw new BaseBusinessException(resultVO.getData().getInteger("code"), resultVO.getData().getString("msg"));
- }
- } else {
- throw new BaseBusinessException(resultVO.getCode(), resultVO.getMessage());
- }
- }
- /**
- * @desc : 删除xxl job
- * @author : 洪旭东
- * @date : 2022-06-30 15:50
- */
- public void delete(int xxlJobId) {
- Map<String, String> header = new HashMap<>(2);
- // header.put("Cookie","XXL_JOB_LOGIN_IDENTITY=7b226964223a312c22757365726e616d65223a2261646d696e222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a312c227065726d697373696f6e223a6e756c6c7d");
- ResponseResultVO<JSONObject> resultVO = HttpUtils.post(xxlJobInfoConfig.getServerUrl() + "/hg/scrm/remove/" + xxlJobId,
- null, header);
- if (resultVO.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
- if (!resultVO.getData().getInteger("code").equals(ResponseCodeEnum.SUCCESS.getCode())) {
- throw new BaseBusinessException(resultVO.getData().getInteger("code"), resultVO.getData().getString("msg"));
- }
- } else {
- throw new BaseBusinessException(resultVO.getCode(), resultVO.getMessage());
- }
- }
- /**
- * @desc : 查询详情
- * @author : 洪旭东
- * @date : 2022-07-22 17:23
- */
- public XxlJobInfo detail(int xxlJobId) {
- Map<String, String> header = new HashMap<>(2);
- // header.put("Cookie","XXL_JOB_LOGIN_IDENTITY=7b226964223a312c22757365726e616d65223a2261646d696e222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a312c227065726d697373696f6e223a6e756c6c7d");
- ResponseResultVO<JSONObject> resultVO = HttpUtils.get(xxlJobInfoConfig.getServerUrl() + "/hg/scrm/detail/" + xxlJobId);
- if (resultVO.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
- if (resultVO.getData()==null) {
- throw new BaseBusinessException(ResponseCodeEnum.SELECT_NULL);
- }
- return JSONObject.parseObject(JSONObject.toJSONString(resultVO.getData()), XxlJobInfo.class);
- } else {
- throw new BaseBusinessException(resultVO.getCode(), resultVO.getMessage());
- }
- }
- /**
- * @desc : 登录xxl job
- * 暂时不需要
- * @author : 洪旭东
- * @date : 2022-06-30 15:58
- */
- public String loginXxlJob(){
- ResponseResultVO<JSONObject> resultVO = HttpUtils.post("http://127.0.0.1:8888/xxl-job-admin/hg/scrm/login?userName=admin&password=123456",
- null);
- return resultVO.getData().getString("content");
- }
- public void update(XxlJobInfo xxlJobInfo) {
- Map<String, String> header = new HashMap<>(2);
- // header.put("Cookie","XXL_JOB_LOGIN_IDENTITY=7b226964223a312c22757365726e616d65223a2261646d696e222c2270617373776f7264223a226531306164633339343962613539616262653536653035376632306638383365222c22726f6c65223a312c227065726d697373696f6e223a6e756c6c7d");
- ResponseResultVO<JSONObject> resultVO = HttpUtils.post(xxlJobInfoConfig.getServerUrl() + "/hg/scrm/update",
- xxlJobInfo);
- if (resultVO.getCode() == ResponseCodeEnum.SUCCESS.getCode()) {
- if (!resultVO.getData().getInteger("code").equals(ResponseCodeEnum.SUCCESS.getCode())) {
- throw new BaseBusinessException(resultVO.getData().getInteger("code"), resultVO.getData().getString("msg"));
- }
- } else {
- throw new BaseBusinessException(resultVO.getCode(), resultVO.getMessage());
- }
- }
- }
|