//package com.gree.mall.manager.logic.sop;
//
//import com.gree.mall.manager.bean.container.DelayBucket;
//import com.gree.mall.manager.bean.container.JobPool;
//import com.gree.mall.manager.bean.container.ReadyQueue;
//import com.gree.mall.manager.bean.delay.DelayJob;
//import com.gree.mall.manager.bean.delay.Job;
//import com.gree.mall.manager.constant.JobStatus;
//import com.gree.mall.manager.utils.StringUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.stereotype.Service;
//
///**
// * @author daify
// *
// */
//@Slf4j
//@Service
//public class JobLogic {
//
//    @Autowired
//    private DelayBucket delayBucket;
//
//    @Autowired
//    private ReadyQueue readyQueue;
//
//    @Autowired
//    private JobPool jobPool;
//
//    /**
//     * 新增
//     * @return
//     */
//    public  DelayJob addDefJob(Job job) {
//        job.setStatus(JobStatus.DELAY);
//        jobPool.addJob(job);
//        DelayJob delayJob = new DelayJob(job);
//        delayBucket.addDelayJob(delayJob);
//        return delayJob;
//    }
//
//    /**
//     * 获取
//     * @return
//     */
//    public Job getProcessJob(String topic) {
//        // 拿到任务
//        DelayJob delayJob = readyQueue.popJob(topic);
//        if (delayJob == null || StringUtil.isEmpty(delayJob.getJodId())) {
//            return null;
//        }
//        Job job = jobPool.getJob(delayJob.getJodId());
//        // 元数据已经删除，则取下一个
//        if (job == null) {
//            job = getProcessJob(topic);
//        } else {
//            job.setStatus(JobStatus.RESERVED);
//            delayJob.setDelayDate(System.currentTimeMillis() + job.getTtrTime());
//
//            jobPool.addJob(job);
//            delayBucket.addDelayJob(delayJob);
//        }
//        return job;
//    }
//
//    /**
//     * 完成一个执行的任务
//     * @param jobId
//     * @return
//     */
//    public void finishJob(String jobId) {
//        jobPool.removeDelayJob(jobId);
//    }
//
//    /**
//     * 完成一个执行的任务
//     * @param jobId
//     * @return
//     */
//    public void deleteJob(String jobId) {
//        jobPool.removeDelayJob(jobId);
//    }
//
//}
