火力规则:返回平台以及组件
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package com.solution.rule.handler;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.solution.common.constant.ExceptionConstants;
|
||||
import com.solution.rule.domain.RuleParam;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 封装规则处理链
|
||||
*/
|
||||
@Component
|
||||
public class RuleChainHandler {
|
||||
|
||||
@Resource
|
||||
private List<AbstractRuleChainHandler> chainHandlers;
|
||||
|
||||
private AbstractRuleChainHandler firstHandler;
|
||||
|
||||
/**
|
||||
* 组装处理链
|
||||
*/
|
||||
@PostConstruct
|
||||
private void constructChain(){
|
||||
if (CollUtil.isEmpty(chainHandlers)) {
|
||||
throw new RuntimeException(ExceptionConstants.NOT_FOUND_CARRIAGE_CHAIN_HANDLER);
|
||||
}
|
||||
this.firstHandler = chainHandlers.get(0);
|
||||
for (int i = 0; i < chainHandlers.size(); i++) {
|
||||
if(i == (chainHandlers.size() - 1)){
|
||||
chainHandlers.get(i).setNextHandler(null);
|
||||
}else {
|
||||
chainHandlers.get(i).setNextHandler(chainHandlers.get(i + 1));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public RuleParam findRuleParam(RuleParam ruleParam){
|
||||
return firstHandler.doHandler(ruleParam);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user