
edi.rule.work.interfaces.IJSRuleCrudModel Maven / Gradle / Ivy
package edi.rule.work.interfaces;
import edi.rule.config.JSRuleMessage;
import edi.rule.extend.interfaces.IJSRuleActionModel;
import edi.rule.model.JSRuleAction;
import edi.rule.util.ZSObject;
import edi.rule.util.ZSRule;
import edi.rule.work.constant.ZSSign;
import edi.rule.work.custom.JSRuleException;
/**
* @author 摩拉克斯
* @date 2022年2月28日 下午2:32:05
* crud模型的顶级接口,实现了动作模型接口,除非对框架十分熟悉,否则不建议开发者直接实现该接口并重写其中的方法
*/
public interface IJSRuleCrudModel> extends IJSRuleActionModel{
/**
* 执行crud模型的action处理
* @return action处理后的结果
* */
Object startCrudModel(A action);
/**
*
检查映射类信息以及对应的角色信息是否具有crud操作权限
* @apiNote 由于crud操作是可以回滚的,因此检查放在了model层而非service层
* */
void checkCrudPermit(A action);
/**
*
默认处理动作模型接口的start方法,对crud类型的操作进行检查等
* @return action处理后的结果
* */
@Override
default Object start(A action) {
if (ZSRule.modelToJson(action.getModel()).indexOf(ZSSign.QUOTE)!=-1 ||
(action.getDefine() != null && ZSObject.objectToJson(action.getDefine().viewParams).indexOf(ZSSign.QUOTE)!=-1)) {
throw new JSRuleException(action.cache.name, JSRuleMessage.read("illegal.character.when.crud.request"),String.valueOf(ZSSign.QUOTE));
}
checkCrudPermit(action);
return startCrudModel(action);
}
}