diff --git a/_solon_plugin/job-solon-plugin/pom.xml b/_solon_plugin/job-solon-plugin/pom.xml
deleted file mode 100644
index 22cec567..00000000
--- a/_solon_plugin/job-solon-plugin/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
- 4.0.0
-
-
- org.noear
- solon-parent
- 2.2.2
-
-
- fun.asgc
- job-solon-plugin
- jar
-
-
-
- org.noear
- solon
-
-
- org.projectlombok
- lombok
-
-
-
- org.quartz-scheduler
- quartz
- 2.3.1
-
-
-
- cn.hutool
- hutool-core
- 5.8.15
-
-
-
\ No newline at end of file
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java
deleted file mode 100644
index 2e099423..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/CustomThreadFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public class CustomThreadFactory implements ThreadFactory {
- private final ThreadGroup group;
- private final AtomicInteger threadNumber = new AtomicInteger(1);
- private final String namePrefix;
-
- public CustomThreadFactory(String prefix) {
- SecurityManager s = System.getSecurityManager();
- group = (s != null) ? s.getThreadGroup() :
- Thread.currentThread().getThreadGroup();
- namePrefix = prefix + "-thread-";
- }
-
- @Override
- public Thread newThread(Runnable r) {
- Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);
- if (t.isDaemon()) {
- t.setDaemon(false);
- }
- if (t.getPriority() != Thread.NORM_PRIORITY) {
- t.setPriority(Thread.NORM_PRIORITY);
- }
- return t;
- }
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java
deleted file mode 100644
index 8283475d..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobCallback.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public interface IJobCallback {
-
- /**
- * 执行日志
- * @param jobInfo
- * @param param
- * @param throwable
- */
- void executeLog(JobInfo jobInfo, String param, Throwable throwable);
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java
deleted file mode 100644
index 127a4344..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobExecutor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public interface IJobExecutor {
-
- /**
- * 初始化
- * @throws JobException
- */
- void init() throws Exception;
-
- /**
- * 新增job
- * @param jobInfo
- */
- void add(JobInfo jobInfo);
-
- /**
- * 删除job
- * @param jobName
- */
- void remove(String jobName);
-
- /**
- * 触发
- * @param jobName
- * @param param
- */
- void trigger(String jobName, String param);
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java
deleted file mode 100644
index a712f570..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobHandler.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-/**
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public interface IJobHandler {
-
- /**
- * job执行
- * @param param
- * @throws Exception
- */
- void execute(String param) throws Exception;
-
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java
deleted file mode 100644
index c9f805ad..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/IJobSource.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-import java.util.List;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public interface IJobSource {
-
- /**
- * 获取所有job列表
- * @return
- */
- List sourceList();
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java
deleted file mode 100644
index 9763e69f..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobBean.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-import fun.asgc.solon.extend.job.impl.JobExecutor;
-import lombok.extern.slf4j.Slf4j;
-import org.noear.solon.Solon;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-@Slf4j
-public class JobBean implements Job {
-
- @Override
- public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
- JobExecutor jobExecutor = Solon.context().getBean(JobExecutor.class);
- if (null != jobExecutor) {
- jobExecutor.execute(jobExecutionContext);
- }
- }
-
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java
deleted file mode 100644
index db51ec15..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/JobInfo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.util.Map;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-@Accessors(chain = true)
-@Data
-public class JobInfo {
- private String id;
- private String name;
- private String desc;
- private String cron;
- private String param;
- private boolean enable;
- private Map extension;
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java
deleted file mode 100644
index cdab50b4..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/XPluginImp.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package fun.asgc.solon.extend.job;
-
-import fun.asgc.solon.extend.job.annotation.EnableJob;
-import fun.asgc.solon.extend.job.impl.DefaultJobCallback;
-import fun.asgc.solon.extend.job.impl.DefaultJobSource;
-import fun.asgc.solon.extend.job.impl.JobExecutor;
-import org.noear.solon.Solon;
-import org.noear.solon.core.AopContext;
-import org.noear.solon.core.Plugin;
-import org.noear.solon.core.event.AppLoadEndEvent;
-
-/**
- * @author: aoshiguchen
- * @date: 2023/3/11
- */
-public class XPluginImp implements Plugin {
-
- @Override
- public void start(AopContext context) throws Throwable {
- EnableJob enableJob = Solon.app().source().getAnnotation(EnableJob.class);
- if (null == enableJob || !enableJob.value()) {
- return;
- }
-
- //应用加载完后,再启动任务
- Solon.app().onEvent(AppLoadEndEvent.class, e -> {
- IJobSource jobSource = context.getBean(IJobSource.class);
- IJobCallback jobCallback = context.getBean(IJobCallback.class);
- if (null == jobSource) {
- jobSource = new DefaultJobSource();
- }
- if (null == jobCallback) {
- jobCallback = new DefaultJobCallback();
- }
-
- JobExecutor jobExecutor = new JobExecutor();
- jobExecutor.setJobSource(jobSource);
- jobExecutor.setJobCallback(jobCallback);
- jobExecutor.start();
-
- context.wrapAndPut(JobExecutor.class, jobExecutor);
- });
- }
-
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java
deleted file mode 100644
index b5c929a3..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/EnableJob.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package fun.asgc.solon.extend.job.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author: aoshiguchen
- * @date: 2023/3/12
- */
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface EnableJob {
- boolean value() default true;
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java
deleted file mode 100644
index add2cfda..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/annotation/JobHandler.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package fun.asgc.solon.extend.job.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface JobHandler {
- String name();
- String desc() default "";
- String cron();
- String param() default "";
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java
deleted file mode 100644
index 9226e437..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobCallback.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fun.asgc.solon.extend.job.impl;
-
-import fun.asgc.solon.extend.job.IJobCallback;
-import fun.asgc.solon.extend.job.JobInfo;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author: aoshiguchen
- * @date: 2023/3/12
- */
-@Slf4j
-public class DefaultJobCallback implements IJobCallback {
-
- @Override
- public void executeLog(JobInfo jobInfo, String param, Throwable throwable) {
- if (null == throwable) {
- log.debug("[Solon Plugin Job] Job执行 id:{} name:{} desc:{} param:{}", jobInfo.getId(), jobInfo.getName(), jobInfo.getDesc(), param);
- } else {
- log.error("[Solon Plugin Job] Job执行 id:{} name:{} desc:{} param:{}", jobInfo.getId(), jobInfo.getName(), jobInfo.getDesc(), param, throwable);
- }
- }
-
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java
deleted file mode 100644
index 48116b1a..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/DefaultJobSource.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package fun.asgc.solon.extend.job.impl;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.StrUtil;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.IJobSource;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
-import fun.asgc.solon.extend.job.JobInfo;
-import org.noear.solon.Solon;
-
-import java.util.List;
-
-/**
- *
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public class DefaultJobSource implements IJobSource {
-
- @Override
- public List sourceList() {
- List jobHandlerList = Solon.context().getBeansOfType(IJobHandler.class);
- if (CollectionUtil.isEmpty(jobHandlerList)) {
- return CollectionUtil.newArrayList();
- }
- List jobInfoList = CollectionUtil.newArrayList();
- for (IJobHandler jobHandler : jobHandlerList) {
- JobHandler handler = jobHandler.getClass().getAnnotation(JobHandler.class);
- if (null == handler || StrUtil.isEmpty(handler.name()) || StrUtil.isEmpty(handler.cron())) {
- continue;
- }
- jobInfoList.add(new JobInfo()
- .setId(handler.name())
- .setName(handler.name())
- .setDesc(handler.desc())
- .setCron(handler.cron())
- .setParam(handler.param())
- .setEnable(true)
- );
- }
- return jobInfoList;
- }
-
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java
deleted file mode 100644
index bffdf6c3..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/impl/JobExecutor.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package fun.asgc.solon.extend.job.impl;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.StrUtil;
-import fun.asgc.solon.extend.job.*;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
-import org.noear.solon.Solon;
-import org.quartz.*;
-import org.quartz.impl.StdSchedulerFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Job执行器
- * @author: aoshiguchen
- * @date: 2022/9/4
- */
-public class JobExecutor implements IJobExecutor {
- private IJobSource jobSource;
- private ThreadPoolExecutor threadPoolExecutor;
- private Map jobInfoMap = new ConcurrentHashMap<>();
- private SchedulerFactory schedulerFactory;
- private Scheduler scheduler;
- private Map jobHandlerMap = new ConcurrentHashMap<>();
- private Set runJobSet = CollectionUtil.newHashSet();
- private IJobCallback jobCallback;
- private Map triggerKeyMap = new ConcurrentHashMap<>();
-
- public void start() {
- if (null == threadPoolExecutor) {
- threadPoolExecutor = new ThreadPoolExecutor(5, 20, 10L, TimeUnit.SECONDS,
- new LinkedBlockingQueue<>(), new CustomThreadFactory("SolonJob"));
- }
-
- List jobHandlerList = Solon.context().getBeansOfType(IJobHandler.class);
- if (!CollectionUtil.isEmpty(jobHandlerList)) {
- for (IJobHandler item : jobHandlerList) {
- JobHandler jobHandler = item.getClass().getAnnotation(JobHandler.class);
- if (null == jobHandler) {
- continue;
- }
- jobHandlerMap.put(jobHandler.name(), item);
- }
- }
-
- try {
- this.schedulerFactory = new StdSchedulerFactory();
- this.scheduler = schedulerFactory.getScheduler();
- this.init();
- } catch (Exception e){
- throw new RuntimeException("job初始化异常");
- }
- }
-
- public void setJobSource(IJobSource jobSource) {
- this.jobSource = jobSource;
- }
-
- public void setThreadPoolExecutor(ThreadPoolExecutor threadPoolExecutor) {
- this.threadPoolExecutor = threadPoolExecutor;
- }
-
- public void setJobCallback(IJobCallback jobCallback) {
- this.jobCallback = jobCallback;
- }
-
- @Override
- public void init() throws Exception {
- List jobInfoList = jobSource.sourceList();
- if (CollectionUtil.isEmpty(jobInfoList)) {
- return;
- }
-
- for (JobInfo jobInfo : jobInfoList) {
- add(jobInfo);
- }
- }
-
- @Override
- public void add(JobInfo jobInfo) {
- if (null == jobInfo || StrUtil.isEmpty(jobInfo.getId()) || StrUtil.isEmpty(jobInfo.getName()) ||
- StrUtil.isEmpty(jobInfo.getCron())) {
- return;
- }
- synchronized (jobInfo.getId()) {
- runJobSet.add(jobInfo.getName());
- jobInfoMap.put(jobInfo.getId(), jobInfo);
-
- TriggerKey triggerKey = TriggerKey.triggerKey(jobInfo.getId());
- triggerKeyMap.put(jobInfo.getId(), triggerKey);
- JobKey jobKey = new JobKey(jobInfo.getName());
-
- CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getCron()).withMisfireHandlingInstructionDoNothing();
- CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
- JobDetail jobDetail = JobBuilder.newJob(JobBean.class).withIdentity(jobKey).build();
-
- try {
- if (jobInfo.isEnable()) {
- scheduler.scheduleJob(jobDetail, cronTrigger);
- scheduler.start();
- }
- } catch (Exception e) {
- throw new RuntimeException(String.format("新增job[name=%s]异常", jobInfo.getName()));
- }
- }
- }
-
- @Override
- public void remove(String jobId) {
- JobInfo jobInfo = jobInfoMap.get(jobId);
- if (null == jobInfo) {
- return;
- }
- synchronized (jobId) {
- runJobSet.remove(jobInfo.getName());
- unscheduleJob(jobId);
- }
- }
-
- @Override
- public void trigger(String jobId, String param) {
- doExecute(jobId, param);
- }
-
- public void execute(JobExecutionContext context) throws JobExecutionException {
- if (null == context || null == context.getTrigger()) {
- return;
- }
- String jobId = context.getTrigger().getKey().getName();
- JobInfo jobInfo = jobInfoMap.get(jobId);
- if (null == jobInfo) {
- unscheduleJob(jobId);
- return;
- }
- doExecute(jobId, jobInfo.getParam());
- }
-
- private void unscheduleJob(String jobId) {
- TriggerKey triggerKey = triggerKeyMap.get(jobId);
- if (null != triggerKey) {
- try {
- scheduler.unscheduleJob(triggerKey);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- private void doExecute(String jobId, String param) {
- JobInfo jobInfo = jobInfoMap.get(jobId);
- if (null == jobInfo) {
- return;
- }
- IJobHandler jobHandler =jobHandlerMap.get(jobInfo.getName());
- if (null == jobHandler) {
- return;
- }
- threadPoolExecutor.submit(() -> {
- try {
- jobHandler.execute(param);
- if (null != jobCallback) {
- jobCallback.executeLog(jobInfo, param, null);
- }
- } catch (Throwable e) {
- jobCallback.executeLog(jobInfo, param, e);
- }
- });
- }
-}
diff --git a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java b/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java
deleted file mode 100644
index 2a228d94..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/java/fun/asgc/solon/extend/job/package-info.java
+++ /dev/null
@@ -1 +0,0 @@
-package fun.asgc.solon.extend.job;
\ No newline at end of file
diff --git a/_solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties b/_solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties
deleted file mode 100644
index 2f207886..00000000
--- a/_solon_plugin/job-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.job.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-solon.plugin=fun.asgc.solon.extend.job.XPluginImp
-solon.plugin.priority=2
\ No newline at end of file
diff --git a/_solon_plugin/orika-solon-plugin/pom.xml b/_solon_plugin/orika-solon-plugin/pom.xml
deleted file mode 100644
index 1a236975..00000000
--- a/_solon_plugin/orika-solon-plugin/pom.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
- 4.0.0
-
-
- org.noear
- solon-parent
- 2.2.2
-
-
- fun.asgc
- orika-solon-plugin
- jar
-
-
-
- org.noear
- solon
-
-
-
-
- ma.glasnost.orika
- orika-core
- 1.5.4
-
-
-
\ No newline at end of file
diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java
deleted file mode 100644
index 36642da2..00000000
--- a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package fun.asgc.solon.extend.orika;
-
-import ma.glasnost.orika.CustomConverter;
-import ma.glasnost.orika.Mapper;
-import ma.glasnost.orika.MapperFacade;
-import ma.glasnost.orika.MapperFactory;
-import ma.glasnost.orika.impl.DefaultMapperFactory;
-import ma.glasnost.orika.metadata.ClassMapBuilder;
-import org.noear.solon.core.AopContext;
-import org.noear.solon.core.Plugin;
-
-/**
- * @author: aoshiguchen
- * @date: 2023/3/11
- */
-public class XPluginImp implements Plugin {
- @Override
- public void start(AopContext context) throws Throwable {
- DefaultMapperFactory factory = new DefaultMapperFactory.Builder().build();
- context.subBeansOfType(CustomConverter.class, bean -> {
- factory.getConverterFactory().registerConverter(bean);
- });
- context.subBeansOfType(Mapper.class, bean -> {
- factory.registerMapper(bean);
- });
- context.subBeansOfType(ClassMapBuilder.class, bean -> {
- factory.registerClassMap((ClassMapBuilder extends Object, ? extends Object>) bean);
- });
- context.wrapAndPut(MapperFactory.class, factory);
- context.wrapAndPut(MapperFacade.class, factory.getMapperFacade());
- }
-
-}
diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java
deleted file mode 100644
index 43d711cd..00000000
--- a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java
+++ /dev/null
@@ -1 +0,0 @@
-package fun.asgc.solon.extend.orika;
\ No newline at end of file
diff --git a/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties b/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties
deleted file mode 100644
index b43ff7ab..00000000
--- a/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-solon.plugin=fun.asgc.solon.extend.orika.XPluginImp
-solon.plugin.priority=1
\ No newline at end of file
diff --git a/neutrino-proxy-server/pom.xml b/neutrino-proxy-server/pom.xml
index 87c4110e..5f93a05a 100644
--- a/neutrino-proxy-server/pom.xml
+++ b/neutrino-proxy-server/pom.xml
@@ -30,17 +30,13 @@
org.noear
activerecord-solon-plugin
-
- fun.asgc
- orika-solon-plugin
- 2.2.2
-
-
-
- fun.asgc
+ org.dromara.solon-plugins
job-solon-plugin
- 2.2.2
+
+
+ org.dromara.solon-plugins
+ orika-solon-plugin
org.dromara.neutrino-proxy
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java
index 5ec01b9b..f9924e1a 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/ProxyServer.java
@@ -1,6 +1,6 @@
package org.dromara.neutrinoproxy.server;
-import fun.asgc.solon.extend.job.annotation.EnableJob;
+import org.dromara.solonplugins.job.annotation.EnableJob;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
import org.noear.solon.web.cors.CrossFilter;
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java
index e917525e..fb18839d 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DataCleanJob.java
@@ -3,12 +3,12 @@ package org.dromara.neutrinoproxy.server.job;
import com.alibaba.fastjson.JSONObject;
import org.dromara.neutrinoproxy.core.util.DateUtil;
import org.dromara.neutrinoproxy.server.dal.*;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java
index 58567546..687e623b 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/DemoJob.java
@@ -1,8 +1,8 @@
package org.dromara.neutrinoproxy.server.job;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
import lombok.extern.slf4j.Slf4j;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.solon.annotation.Component;
/**
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java
index 3346dedf..3046bbed 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForDayJob.java
@@ -30,10 +30,10 @@ import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportDayDO;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportHourDO;
import org.dromara.neutrinoproxy.server.service.FlowReportService;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java
index 57cb5666..a52d6e76 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForHourJob.java
@@ -8,10 +8,10 @@ import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportHourDO;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportMinuteDO;
import org.dromara.neutrinoproxy.server.service.FlowReportService;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java
index 8ae002c9..2615cccf 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMinuteJob.java
@@ -7,9 +7,9 @@ import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportMinuteDO;
import org.dromara.neutrinoproxy.server.dal.entity.LicenseDO;
import org.dromara.neutrinoproxy.server.service.FlowReportService;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
import lombok.extern.slf4j.Slf4j;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java
index d2ede262..3347674f 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/job/FlowReportForMonthJob.java
@@ -6,10 +6,10 @@ import org.dromara.neutrinoproxy.server.dal.*;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportDayDO;
import org.dromara.neutrinoproxy.server.dal.entity.FlowReportMonthDO;
import org.dromara.neutrinoproxy.server.service.FlowReportService;
-import fun.asgc.solon.extend.job.IJobHandler;
-import fun.asgc.solon.extend.job.annotation.JobHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java
index 7e043841..bd9c5798 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobInfoService.java
@@ -19,19 +19,24 @@ import org.dromara.neutrinoproxy.server.controller.res.system.JobInfoUpdateEnabl
import org.dromara.neutrinoproxy.server.controller.res.system.JobInfoUpdateRes;
import org.dromara.neutrinoproxy.server.dal.JobInfoMapper;
import org.dromara.neutrinoproxy.server.dal.entity.JobInfoDO;
+import org.dromara.neutrinoproxy.server.job.*;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
-import fun.asgc.solon.extend.job.IJobSource;
-import fun.asgc.solon.extend.job.JobInfo;
-import fun.asgc.solon.extend.job.impl.JobExecutor;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
+import org.dromara.solonplugins.job.IJobHandler;
+import org.dromara.solonplugins.job.IJobSource;
+import org.dromara.solonplugins.job.JobInfo;
+import org.dromara.solonplugins.job.impl.JobExecutor;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Component;
+import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
*
@@ -45,6 +50,29 @@ public class JobInfoService implements IJobSource {
private MapperFacade mapperFacade;
@Db
private JobInfoMapper jobInfoMapper;
+ @Inject
+ private DataCleanJob dataCleanJob;
+ @Inject
+ private DemoJob demoJob;
+ @Inject
+ private FlowReportForDayJob flowReportForDayJob;
+ @Inject
+ private FlowReportForHourJob flowReportForHourJob;
+ @Inject
+ private FlowReportForMinuteJob flowReportForMinuteJob;
+ @Inject
+ private FlowReportForMonthJob flowReportForMonthJob;
+ private Map jobHandlerMap = new HashMap<>();
+
+ @Init
+ public void init() {
+ jobHandlerMap.put("DataCleanJob", dataCleanJob);
+ jobHandlerMap.put("DemoJob", demoJob);
+ jobHandlerMap.put("FlowReportForDayJob", flowReportForDayJob);
+ jobHandlerMap.put("FlowReportForHourJob", flowReportForHourJob);
+ jobHandlerMap.put("FlowReportForMinuteJob", flowReportForMinuteJob);
+ jobHandlerMap.put("FlowReportForMonthJob", flowReportForMonthJob);
+ }
public PageInfo page(PageQuery pageQuery, JobInfoListReq req) {
Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
@@ -65,22 +93,15 @@ public class JobInfoService implements IJobSource {
ParamCheckUtil.checkNotNull(jobInfoDO, ExceptionConstant.JOB_INFO_NOT_EXIST);
jobInfoMapper.updateEnableStatus(req.getId(), req.getEnable(), new Date());
if (EnableStatusEnum.ENABLE.getStatus().equals(req.getEnable())) {
- Solon.context().getBean(JobExecutor.class).add(new JobInfo()
- .setId(String.valueOf(jobInfoDO.getId()))
- .setName(jobInfoDO.getHandler())
- .setDesc(jobInfoDO.getDesc())
- .setCron(jobInfoDO.getCron())
- .setParam(jobInfoDO.getParam())
- .setEnable(true)
- );
+ Solon.context().getBean(JobExecutor.class).startById(String.valueOf(req.getId()));
} else {
- Solon.context().getBean(JobExecutor.class).remove(String.valueOf(req.getId()));
+ Solon.context().getBean(JobExecutor.class).stopById(String.valueOf(req.getId()));
}
return new JobInfoUpdateEnableStatusRes();
}
public JobInfoExecuteRes execute(JobInfoExecuteReq req) {
- Solon.context().getBean(JobExecutor.class).trigger(String.valueOf(req.getId()), req.getParam());
+ Solon.context().getBean(JobExecutor.class).triggerById(String.valueOf(req.getId()), req.getParam());
return new JobInfoExecuteRes();
}
@@ -99,6 +120,7 @@ public class JobInfoService implements IJobSource {
.setCron(item.getCron())
.setParam(item.getParam())
.setEnable(EnableStatusEnum.ENABLE.getStatus().equals(item.getEnable()))
+ .setJobHandler(jobHandlerMap.get(item.getHandler()))
);
}
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java
index 08f6baf5..7b9f321c 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/service/JobLogService.java
@@ -30,12 +30,12 @@ import org.dromara.neutrinoproxy.server.controller.req.log.JobLogListReq;
import org.dromara.neutrinoproxy.server.controller.res.log.JobLogListRes;
import org.dromara.neutrinoproxy.server.dal.JobLogMapper;
import org.dromara.neutrinoproxy.server.dal.entity.JobLogDO;
-import fun.asgc.solon.extend.job.IJobCallback;
-import fun.asgc.solon.extend.job.JobInfo;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.ibatis.solon.annotation.Db;
+import org.dromara.solonplugins.job.IJobCallback;
+import org.dromara.solonplugins.job.JobInfo;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
diff --git a/pom.xml b/pom.xml
index 05cd8558..57a840a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,8 +20,6 @@
neutrino-proxy-core
neutrino-proxy-client
neutrino-proxy-server
- _solon_plugin/job-solon-plugin
- _solon_plugin/orika-solon-plugin
@@ -104,6 +102,22 @@
HikariCP
4.0.3
+
+ org.dromara.solon-plugins
+ job-solon-plugin
+ 0.0.4
+
+
+ cn.hutool
+ hutool-core
+
+
+
+
+ org.dromara.solon-plugins
+ orika-solon-plugin
+ 0.0.4
+