影子操控术可以同时控制多个敌对目标,控制目标后可以对目标做出各种指令.

在Eova的世界里是否也能拥有这样一种掌控全局的能力
是否能一次性搞定数据过滤,是否能一次性搞定各种字段的初始化赋值等.

需求背景

1)复杂的业务系统,严谨的业务系统都有很多角色,很多数据,需要根据不同的业务进行角色和数据的权限过滤. 2)写了很多业务拦截器,每个业务拦截器里代码都差不多,都是干那几件事.

功能解读

/**
 * 全局Eova业务拦截器
 * @author Jieven
 *
 */
public class GlobalEovaIntercept extends EovaIntercept {

    // -- > 命中 Grid,Tree,TreeGrid的查询,导出功能
    @Override
    public String filterQuery(EovaContext ec) throws Exception {
        System.out.println("Query过滤");
        // 可以通过元数据进行各种判定
        //        if (!ec.object.getCode().startsWith("eova_")) {
        //            return " and id < 999999 or id = 10086";
        //        }
        return "";
    }

    // -- > 命中Find,Combo,ComboTree 的表达式条件过滤
    @Override
    public String filterExp(EovaContext ec) throws Exception {
        System.out.println("Exp过滤");
        //        return " and id < 9999";
        return "";
    }

}
/**
 * 公共元对象业务拦截器
 * <pre>
 * 使用场景:
 * 全局业务 例:增删改查日志记录
 * 高频字段统一处理 例:create_time update_time ...
 * 其它更多高端玩法,请尽情的发挥想象吧!
 * </pre>
 * 
 * @author Jieven
 *
 */
public class BaseMetaObjectIntercept extends MetaObjectIntercept {

    @Override
    public String updateBefore(AopContext ac) throws Exception {
        System.out.println("公共元对象业务拦截器");
        for (MetaField f : ac.object.getFields()) {
            if (f.getEn().equals("update_time")) {
                ac.record.set("update_time", new Date());
            }
            if (f.getEn().equals("user_id")) {
                ac.record.set("user_id", ac.user.getInt("id"));
            }
        }
        return null;
    }

}

如何配置?

    // OSSConfig.java

    @Override
    public void configEova() {
        /*
         * 自定义Eova全局拦截器
         * 全局的查询拦截,可快速集中解决系统的查询数据权限,严谨,高效!
         */
        setEovaIntercept(new GlobalEovaIntercept());
        /*
         * 默认元对象业务拦截器:未配置元对象业务拦截器会默认命中此拦截器
         * 自定义元对象拦截器时自行考虑是否需要继承默认拦截器
         */
        setDefaultMetaObjectIntercept(new BaseMetaObjectIntercept());
    }

如何使用?

主要讲思路,不讲具体使用,大家请发挥自己的小宇宙想象,用好了绝对能省很多事.

  1. 主要是提供一种全局掌控的能力
  2. 可以做公共的逻辑
  3. 可以做特征匹配
  4. 可以简化冗余代码
  5. 增强后续可维护性
  6. 可以更专一的关注一个视角
  7. 一次严谨的思考,全局受益

本技能将会在后续的项目实战视频教程中结合实际业务详细讲解,有兴趣可提前成为VIP用户,避免错过 立即站队成为VIP

© 2019 EOVA.CN all right reserved,powered by Gitbook本文档更新于: 2019-07-22 16:26

results matching ""

    No results matching ""