net.mingsoft.mdiy.aop.ModelAop Maven / Gradle / Ivy
/**
* Copyright (c) 2012-present 铭软科技(mingsoft.net)
* 本软件及相关文档文件(以下简称“软件”)的版权归 铭软科技 所有
* 遵循 铭软科技《服务协议》中的《保密条款》
*/
package net.mingsoft.mdiy.aop;
import net.mingsoft.basic.aop.BaseAop;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.mdiy.bean.ModelJsonBean;
import net.mingsoft.mdiy.constant.e.ModelCustomTypeEnum;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
/**
* 自定义模型、业务导入切面处理
* 目前使用场景
* 站群情况下,避免导入模型、业务表名相同,在表名后面拼接appId区分
*
* @author 铭飞团队
*/
@Component
@Aspect
public class ModelAop extends BaseAop {
/**
* 站群情况下 给模型表名拼接appId,模型名称不做处理 自定义业务前台通过名称获取模型,会拼appId区分站点
*/
@Before(value = "execution(* net.mingsoft.mdiy.biz.impl.ModelBizImpl.importConfig(..)) || execution(* net.mingsoft.mdiy.biz.impl.ModelBizImpl.importModel(..)) || execution(* net.mingsoft.mdiy.biz.impl.ModelBizImpl.updateConfig(..))")
public void updateModelName(JoinPoint jp){
if (BasicUtil.getWebsiteApp() != null){
Object[] args = jp.getArgs();
if (!ModelCustomTypeEnum.CONFIG.getLabel().equals(args[0])){
// 自定义类型为模型或业务 则对表名拼接appId
String appId = BasicUtil.getWebsiteApp().getAppId();
ModelJsonBean modelJsonBean = (ModelJsonBean)args[1];
String tableName = modelJsonBean.getTableName();
modelJsonBean.setTableName(tableName+"_"+appId);
if(modelJsonBean.getSql() != null ) {
String sql = modelJsonBean.getSql();
sql = sql.replaceAll("\\{model}"+tableName,"{model}"+modelJsonBean.getTableName());
modelJsonBean.setSql(sql);
}
}
}
}
}