1.SQL增强出错BUG修复

2.视图、报表数据源加上占位符功能
3.登录成功后清除cache缓存
This commit is contained in:
JeeLowCode
2025-02-11 16:22:50 +08:00
parent cbcea0b1e4
commit 8dbf136fb1
15 changed files with 255 additions and 169 deletions

View File

@@ -16,6 +16,7 @@ package com.jeelowcode.core.framework.config.aspect.enhance;
import cn.hutool.core.date.DateUtil;
import com.jeelowcode.core.framework.config.aspect.enhance.model.BuildSqlEnhanceContext;
import com.jeelowcode.core.framework.config.aspect.enhance.model.EnhanceContext;
import com.jeelowcode.core.framework.config.aspect.enhance.model.EnhanceParam;
import com.jeelowcode.core.framework.config.aspect.enhance.model.EnhanceResult;
import com.jeelowcode.core.framework.entity.EnhanceSqlEntity;
import com.jeelowcode.core.framework.mapper.JeeLowCodeMapper;
@@ -75,31 +76,31 @@ public class JeeLowCodeAnnoaionAspectjSQL {
@AfterReturning(value = EXPRESSION, returning = "returnVal")
public Object afterReturingAdvice(JoinPoint joinPoint, Object returnVal){
public Object afterReturingAdvice(JoinPoint joinPoint, Object returnVal) {
BuildSqlEnhanceContext contextAndPlugins = getContextAndPlugins(joinPoint, returnVal);
if (FuncBase.isEmpty(contextAndPlugins)){
if (FuncBase.isEmpty(contextAndPlugins)) {
return returnVal;
}
EnhanceContext context = contextAndPlugins.getContext();
//判断结果类型
ExecuteEnhanceModel formModel =null; //表单类
ResultDataModel listModel =null; //查询类
ExecuteEnhanceModel formModel = null; //表单类
ResultDataModel listModel = null; //查询类
Boolean resultFlag = false;
if(Func.isNotEmpty(returnVal) && returnVal instanceof ExecuteEnhanceModel){//表单类
if (Func.isNotEmpty(returnVal) && returnVal instanceof ExecuteEnhanceModel) {//表单类
formModel = (ExecuteEnhanceModel) returnVal;
resultFlag = true;
}
if(Func.isNotEmpty(returnVal) && returnVal instanceof ResultDataModel){//列表类
if (Func.isNotEmpty(returnVal) && returnVal instanceof ResultDataModel) {//列表类
listModel = (ResultDataModel) returnVal;
}
//把结果放到上下文中再执行插件
if(resultFlag){
if (resultFlag) {
String id = formModel.getId();
context.getResult().setId(id);
context.getResult().setExitFlag(formModel.isExitFlag());
}else {
} else {
context.getResult().setRecords(listModel.getRecords());
context.getResult().setTotal(listModel.getTotal());
context.getResult().setExitFlag(listModel.isExitFlag());
@@ -107,9 +108,9 @@ public class JeeLowCodeAnnoaionAspectjSQL {
//集合操作的插件
List<EnhanceSqlEntity> setOperations = contextAndPlugins.getSetOperations();
if(CollectionUtils.isNotEmpty(setOperations)){
if (CollectionUtils.isNotEmpty(setOperations)) {
//执行
executeEnhanceSetOperation(context,setOperations);
executeEnhanceSetOperation(context, setOperations);
listModel.setTotal(context.getResult().getTotal());
listModel.setRecords(context.getResult().getRecords());
}
@@ -118,11 +119,11 @@ public class JeeLowCodeAnnoaionAspectjSQL {
List<EnhanceSqlEntity> enhanceSqlEntityList = contextAndPlugins.getEntitys();
for (EnhanceSqlEntity enhanceSqlEntity : enhanceSqlEntityList) {
if (setOperations.contains(enhanceSqlEntity)){
if (setOperations.contains(enhanceSqlEntity)) {
continue;
}
this.executSQLPlugin(context,enhanceSqlEntity);
if (FuncBase.isNotEmpty(context.getResult()) && context.getResult().isExitFlag()){
this.executSQLPlugin(context, enhanceSqlEntity);
if (FuncBase.isNotEmpty(context.getResult()) && context.getResult().isExitFlag()) {
listModel.setTotal(context.getResult().getTotal());
listModel.setRecords(context.getResult().getRecords());
return listModel;
@@ -130,18 +131,18 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
if(resultFlag){//结果类型
ExecuteEnhanceModel executeEnhanceModel=new ExecuteEnhanceModel();
if (resultFlag) {//结果类型
ExecuteEnhanceModel executeEnhanceModel = new ExecuteEnhanceModel();
executeEnhanceModel.setId(context.getResult().getId());
return executeEnhanceModel;
}else {
} else {
listModel.setTotal(context.getResult().getTotal());
listModel.setRecords(context.getResult().getRecords());
}
return listModel;
}
public BuildSqlEnhanceContext getContextAndPlugins(JoinPoint joinPoint,Object returnVal){
public BuildSqlEnhanceContext getContextAndPlugins(JoinPoint joinPoint, Object returnVal) {
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
// 获取方法名称
String methodName = methodSignature.getName();
@@ -157,9 +158,9 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
Long dbFormId = (Long) paramMap.getOrDefault("dbFormId", null);
Long dataId = (Long)paramMap.getOrDefault("id",null);
Page page = (Page)paramMap.getOrDefault("page", null);
List<Long> dataIdList =(List)paramMap.getOrDefault("dataIdList",null);
Long dataId = (Long) paramMap.getOrDefault("id", null);
Page page = (Page) paramMap.getOrDefault("page", null);
String buttonCode = aspectMethodNameMap.get(methodName);
String key = dbFormId + "_" + buttonCode;
List<EnhanceSqlEntity> allPlugins = sqlPlugins.getOrDefault(key, null);
@@ -177,15 +178,15 @@ public class JeeLowCodeAnnoaionAspectjSQL {
setOperation.clear();
}
}
List<Map<String,Object>> dataList = new ArrayList<>();
if(returnVal instanceof ResultDataModel){
List<Map<String, Object>> dataList = new ArrayList<>();
if (returnVal instanceof ResultDataModel) {
dataList = ((ResultDataModel) returnVal).getRecords();
}
EnhanceContext context = new EnhanceContext();
Map<String, Object> params = JeeLowCodeUtils.getMap2Map(paramMap, "params");
context.setParam(dbFormId, params, dataList, dataId, page, dataIdList);
context.setParam(dbFormId, params, dataList, dataId, page);
context.setResult(new EnhanceResult());
return new BuildSqlEnhanceContext(context, allPlugins,setOperation);
return new BuildSqlEnhanceContext(context, allPlugins, setOperation);
}
public static void initSqlPlugins(Map<String, List<EnhanceSqlEntity>> initSQLPlugins) {
@@ -194,7 +195,7 @@ public class JeeLowCodeAnnoaionAspectjSQL {
public void executSQLPlugin(EnhanceContext context, EnhanceSqlEntity enhanceSqlEntity) {
switch (enhanceSqlEntity.getButtonCode()){
switch (enhanceSqlEntity.getButtonCode()) {
case ENHANCE_ADD:
//新增
this.executeEnhanceAfterAdd(context, enhanceSqlEntity);
@@ -219,9 +220,9 @@ public class JeeLowCodeAnnoaionAspectjSQL {
//列表 前端只保留了一个
Map<String, Object> params = context.getParam().getParams();
Integer pageSize = JeeLowCodeUtils.getMap2Integer(params, "pageSize");
if(Func.isEmpty(pageSize) || pageSize==-1 || Func.equals(pageSize, JeeLowCodeConstant.NOT_PAGE)){
if (Func.isEmpty(pageSize) || pageSize == -1 || Func.equals(pageSize, JeeLowCodeConstant.NOT_PAGE)) {
this.executeEnhanceAfterList(context, enhanceSqlEntity);
}else{
} else {
this.executeEnhanceAfterPage(context, enhanceSqlEntity);
}
break;
@@ -235,75 +236,78 @@ public class JeeLowCodeAnnoaionAspectjSQL {
break;
}
}
//新增
public void executeEnhanceAfterAdd(EnhanceContext context,EnhanceSqlEntity sqlEntity) {
public void executeEnhanceAfterAdd(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Long dbFormId = context.getParam().getDbFormId();
Map<String,Object> paramMap = context.getParam().getParams();
if(FuncBase.isNotEmpty(context.getParam().getDataId())){//把id放入到参数
paramMap.put("id",context.getParam().getDataId());
Map<String, Object> paramMap = context.getParam().getParams();
if (FuncBase.isNotEmpty(context.getParam().getDataId())) {//把id放入到参数
paramMap.put("id", context.getParam().getDataId());
}
this.executeSql(sqlEntity.getExecuteSql(), paramMap);
}
//删除
public void executeEnhanceAfterDelete(EnhanceContext context,EnhanceSqlEntity sqlEntity){
List<Long> dataIdList = context.getParam().getDataIdList();
public void executeEnhanceAfterDelete(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
EnhanceParam param = context.getParam();
Map<String, Object> params = param.getParams();
List<Long> dataIdList = (List<Long>) params.getOrDefault("dataIdList", null);
String executeSql = sqlEntity.getExecuteSql();
if (FuncBase.isEmpty(executeSql)) {
return;
}
//因为是批量删除的,需要拆分出来
for (Long dataId : dataIdList) {
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("id", dataId);
String executeSql = sqlEntity.getExecuteSql();
if(FuncBase.isEmpty(executeSql)){
return ;
}
//因为是批量删除的,需要拆分出来
for(Long dataId:dataIdList){
Map<String,Object> dataMap =new HashMap<>();
dataMap.put("id",dataId);
//执行sql
this.executeSql(executeSql,dataMap);
}
//执行sql
this.executeSql(executeSql, dataMap);
}
}
//编辑
public void executeEnhanceAfterEdit(EnhanceContext context,EnhanceSqlEntity sqlEntity){
public void executeEnhanceAfterEdit(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Long dataId = context.getParam().getDataId();
Map<String,Object> paramMap = context.getParam().getParams();
Map<String, Object> paramMap = context.getParam().getParams();
paramMap.put("id", dataId);//把id放到json里面传递
this.executeSql(sqlEntity.getExecuteSql(),paramMap);
this.executeSql(sqlEntity.getExecuteSql(), paramMap);
}
//详情
public void executeEnhanceAfterDetail(EnhanceContext context,EnhanceSqlEntity sqlEntity){
public void executeEnhanceAfterDetail(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Long dbFormId = context.getParam().getDbFormId();
Long id = (Long) context.getParam().getDataId();
Map<String, Object> params = context.getParam().getParams();
params.put("id",id);//把id放入参数集
params.put("id", id);//把id放入参数集
String autoWhereSql = this.getAutoWhereSql(dbFormId, params);
String executeSql = sqlEntity.getExecuteSql();
List<Map<String, Object>> dataMapList = this.executeSelectListSql(executeSql, params, autoWhereSql);
context.setResult( ResultDataModel.fomatList(dataMapList));
context.setResult(ResultDataModel.fomatList(dataMapList));
}
//导入
public void executeEnhanceAfterImport(EnhanceContext context,EnhanceSqlEntity sqlEntity){
public void executeEnhanceAfterImport(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Map<String,Object> paramMap = context.getParam().getParams();
Map<String, Object> paramMap = context.getParam().getParams();
this.executeSql(sqlEntity.getExecuteSql(),paramMap);
this.executeSql(sqlEntity.getExecuteSql(), paramMap);
}
//列表
public void executeEnhanceAfterList(EnhanceContext context,EnhanceSqlEntity sqlEntity){
public void executeEnhanceAfterList(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Long dbFormId = context.getParam().getDbFormId();
Map<String, Object> params = context.getParam().getParams();
String executeSql = sqlEntity.getExecuteSql();
@@ -315,7 +319,7 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
// 分页
public void executeEnhanceAfterPage(EnhanceContext context,EnhanceSqlEntity sqlEntity){
public void executeEnhanceAfterPage(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Long dbFormId = context.getParam().getDbFormId();
Map<String, Object> params = context.getParam().getParams();
Integer pageNo = JeeLowCodeUtils.getMap2Integer(params, "pageNo");
@@ -328,21 +332,24 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
//导出
public void executeEnhanceAfterExport(EnhanceContext context, EnhanceSqlEntity sqlEntity){
public void executeEnhanceAfterExport(EnhanceContext context, EnhanceSqlEntity sqlEntity) {
Long dbFormId = context.getParam().getDbFormId();
Map<String, Object> params = context.getParam().getParams();
String executeSql = sqlEntity.getExecuteSql();
String autoWhereSql = this.getAutoWhereSql(dbFormId, params);
List<Map<String, Object>> dataMapList = this.executeSelectListSql(executeSql, params, autoWhereSql);
if (FuncBase.isEmpty(dataMapList)) {
dataMapList = new ArrayList<>();
}
context.getResult().setRecords(dataMapList);
context.getResult().setExitFlag(true);
}
//执行集合操作
public void executeEnhanceSetOperation(EnhanceContext context,List<EnhanceSqlEntity> sqlEntitys){
sqlEntitys.sort(Comparator.comparing(EnhanceSqlEntity::getSort,Comparator.nullsLast(Integer::compareTo)));
for (int i = 0; i < sqlEntitys.size()-1; i++) {
public void executeEnhanceSetOperation(EnhanceContext context, List<EnhanceSqlEntity> sqlEntitys) {
sqlEntitys.sort(Comparator.comparing(EnhanceSqlEntity::getSort, Comparator.nullsLast(Integer::compareTo)));
for (int i = 0; i < sqlEntitys.size() - 1; i++) {
EnhanceSqlEntity leftEntity = null;
EnhanceSqlEntity rightEntity = null;
if (i == 0) {
@@ -382,30 +389,30 @@ public class JeeLowCodeAnnoaionAspectjSQL {
//执行合集操作
private void executSetOperationOr(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) {
List<Map<String, Object>> leftRecords ;
if(FuncBase.isNotEmpty(leftEntity)){
EnhanceContext leftContext = context.clone();
executSQLPlugin(leftContext, leftEntity);
leftRecords = leftContext.getResult().getRecords();
}else {
leftRecords = context.getResult().getRecords();
}
List<Map<String, Object>> leftRecords;
if (FuncBase.isNotEmpty(leftEntity)) {
EnhanceContext leftContext = context.clone();
executSQLPlugin(leftContext, leftEntity);
leftRecords = leftContext.getResult().getRecords();
} else {
leftRecords = context.getResult().getRecords();
}
EnhanceContext rightContext = context.clone();
executSQLPlugin(rightContext, rightEntity);
List<Map<String, Object>> rightRecords = rightContext.getResult().getRecords();
CollectionUtils.addAll(leftRecords,rightRecords);
CollectionUtils.addAll(leftRecords, rightRecords);
context.getResult().setRecords(leftRecords);
}
private void executSetOperationDiffer(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context){
List<Map<String,Object>> differ;
List<Map<String, Object>> leftRecords ;
if(FuncBase.isNotEmpty(leftEntity)){
private void executSetOperationDiffer(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) {
List<Map<String, Object>> differ;
List<Map<String, Object>> leftRecords;
if (FuncBase.isNotEmpty(leftEntity)) {
EnhanceContext leftContext = context.clone();
executSQLPlugin(leftContext, leftEntity);
leftRecords = leftContext.getResult().getRecords();
}else {
} else {
leftRecords = context.getResult().getRecords();
}
EnhanceContext rightContext = context.clone();
@@ -415,17 +422,19 @@ public class JeeLowCodeAnnoaionAspectjSQL {
context.getResult().setRecords(differ);
}
;
};
//并集
public void executSetOperationUnion(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context){
List<Map<String,Object>> union;
List<Map<String, Object>> leftRecords ;
if(FuncBase.isNotEmpty(leftEntity)){
public void executSetOperationUnion(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) {
List<Map<String, Object>> union;
List<Map<String, Object>> leftRecords;
if (FuncBase.isNotEmpty(leftEntity)) {
EnhanceContext leftContext = context.clone();
executSQLPlugin(leftContext, leftEntity);
leftRecords = leftContext.getResult().getRecords();
}else {
} else {
leftRecords = context.getResult().getRecords();
}
EnhanceContext rightContext = context.clone();
@@ -436,14 +445,14 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
//交集
public void executSetOperationInterSerction(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context){
List<Map<String,Object>> intersection;
List<Map<String, Object>> leftRecords ;
if(FuncBase.isNotEmpty(leftEntity)){
public void executSetOperationInterSerction(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) {
List<Map<String, Object>> intersection;
List<Map<String, Object>> leftRecords;
if (FuncBase.isNotEmpty(leftEntity)) {
EnhanceContext leftContext = context.clone();
executSQLPlugin(leftContext, leftEntity);
leftRecords = leftContext.getResult().getRecords();
}else {
} else {
leftRecords = context.getResult().getRecords();
}
EnhanceContext rightContext = context.clone();
@@ -454,17 +463,18 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
//串行
public void executSetOperationAnd(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context){
public void executSetOperationAnd(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) {
executSQLPlugin(context, leftEntity);
executSQLPlugin(context, rightEntity);
}
/**
* 获取自动构建where的语句
*
* @param dbFormId
* @return
*/
public String getAutoWhereSql(Long dbFormId, Map<String, Object> params){
public String getAutoWhereSql(Long dbFormId, Map<String, Object> params) {
SqlInfoQueryWrapper.Wrapper queryWrapper = SqlHelper.getQueryWrapper();
List<Map<String, String>> whereFieldMapList = jeeLowCodeMapper.getDbWhereFieldList(dbFormId);
@@ -474,17 +484,17 @@ public class JeeLowCodeAnnoaionAspectjSQL {
SqlFormatModel sqlFormatModel = queryWrapper.buildSql();
String whereSql = sqlFormatModel.getSql();
Map<String, Object> paramMap = sqlFormatModel.getDataMap();
if(Func.isNotEmpty(paramMap)){
if (Func.isNotEmpty(paramMap)) {
params.putAll(paramMap);
}
whereSql=whereSql.substring(6);//因为是where开头要去掉
whereSql = whereSql.substring(6);//因为是where开头要去掉
return whereSql;
}
//如果是多选的时候,要做特殊处理,因为多选的时候 ,数据库存储的是 11,22,33
String moreSelectFieldListStr = (String)params.get(ParamEnum.MORE_SELECT_FIELD.getCode());
List<String> moreSelectFieldList=null;
if(FuncBase.isNotEmpty(moreSelectFieldListStr)){
String moreSelectFieldListStr = (String) params.get(ParamEnum.MORE_SELECT_FIELD.getCode());
List<String> moreSelectFieldList = null;
if (FuncBase.isNotEmpty(moreSelectFieldListStr)) {
moreSelectFieldList = FuncBase.toStrList(moreSelectFieldListStr);
}
@@ -511,16 +521,16 @@ public class JeeLowCodeAnnoaionAspectjSQL {
Object finalObj = obj;
//类型转换 111,22,33
if (FuncBase.equals(query_mode, QueryModelEnum.EQ.getCode())) {//精确
if(FuncBase.isNotEmpty(moreSelectFieldList) && moreSelectFieldList.contains(field_code)){//在多选里面
if (FuncBase.isNotEmpty(moreSelectFieldList) && moreSelectFieldList.contains(field_code)) {//在多选里面
queryWrapper.setWhere(where->{
where.and(w->w.eq(field_code, finalObj)
.or().likeLeft(field_code,","+ finalObj)
.or().likeRight(field_code, finalObj +",")
.or().like(field_code,","+ finalObj +","));
queryWrapper.setWhere(where -> {
where.and(w -> w.eq(field_code, finalObj)
.or().likeLeft(field_code, "," + finalObj)
.or().likeRight(field_code, finalObj + ",")
.or().like(field_code, "," + finalObj + ","));
});
}else{
queryWrapper.setWhere(where->{
} else {
queryWrapper.setWhere(where -> {
where.eq(field_code, finalObj);
});
}
@@ -537,22 +547,22 @@ public class JeeLowCodeAnnoaionAspectjSQL {
if (FuncBase.isNotEmpty(leftVal) && FuncBase.isNotEmpty(rightVal)) {
Object finalLeftVal = leftVal;
Object finalRightVal = rightVal;
queryWrapper.setWhere(where->{
queryWrapper.setWhere(where -> {
where.between(field_code, finalLeftVal, finalRightVal);//区间
});
} else if (FuncBase.isNotEmpty(leftVal)) {//>=
Object finalLeftVal1 = leftVal;
queryWrapper.setWhere(where->{
queryWrapper.setWhere(where -> {
where.ge(field_code, finalLeftVal1);
});
} else if (FuncBase.isNotEmpty(rightVal)) {//<=
Object finalRightVal1 = rightVal;
queryWrapper.setWhere(where->{
queryWrapper.setWhere(where -> {
where.le(field_code, finalRightVal1);
});
}
} else {
queryWrapper.setWhere(where->{
queryWrapper.setWhere(where -> {
where.like(field_code, finalObj);
});
}
@@ -564,22 +574,23 @@ public class JeeLowCodeAnnoaionAspectjSQL {
return whereSql;
}
Map<String, Object> paramMap = sqlFormatModel.getDataMap();
if(Func.isNotEmpty(paramMap)){
if (Func.isNotEmpty(paramMap)) {
params.putAll(paramMap);
}
whereSql=whereSql.substring(6);//因为是where开头要去掉
whereSql = whereSql.substring(6);//因为是where开头要去掉
return whereSql;
}
/**
* 运行增删改
*
* @param executeSql
* @param paramMap
* @throws Throwable
*/
public void executeSql(String executeSql, Map<String, Object> paramMap) {
public void executeSql(String executeSql, Map<String, Object> paramMap) {
String sql = this.getSql(executeSql, paramMap);
this.execute(sql,paramMap);
this.execute(sql, paramMap);
}
/**
@@ -592,64 +603,67 @@ public class JeeLowCodeAnnoaionAspectjSQL {
*/
public List<Map<String, Object>> executeSelectListSql(String executeSql, Map<String, Object> paramMap, String autoWhereSql) {
String sql = this.getSql(executeSql, paramMap, autoWhereSql);
Object obj = this.execute(sql,paramMap);
return (List<Map<String, Object>>)obj;
Object obj = this.execute(sql, paramMap);
return (List<Map<String, Object>>) obj;
}
//分页
public IPage<Map<String, Object>> executeSelectPageSql(String executeSql, Map<String, Object> paramMap, String autoWhereSql, Page page) {
String sql = this.getSql(executeSql, paramMap, autoWhereSql);
Object obj = this.execute(sql, paramMap,page);
return (IPage<Map<String, Object>>)obj;
Object obj = this.execute(sql, paramMap, page);
return (IPage<Map<String, Object>>) obj;
}
/**
* 获取执行sql
*
* @param executeSql
* @param paramMap
* @return
*/
private String getSql(String executeSql, Map<String, Object> paramMap){
return this.getSql(executeSql,paramMap,null);
private String getSql(String executeSql, Map<String, Object> paramMap) {
return this.getSql(executeSql, paramMap, null);
}
private String getSql(String executeSql, Map<String, Object> paramMap, String autoWhereSql){
private String getSql(String executeSql, Map<String, Object> paramMap, String autoWhereSql) {
//替换参数
executeSql = Func.replaceParam(executeSql,paramMap,autoWhereSql,jeeLowCodeAdapter);
executeSql = Func.replaceParam(executeSql, paramMap, autoWhereSql, jeeLowCodeAdapter);
return executeSql.trim();
}
/**
* 执行sql
*
* @param sql
* @return
*/
private Object execute(String sql,Map<String,Object> dataMap){
return execute(sql,dataMap,null);
private Object execute(String sql, Map<String, Object> dataMap) {
return execute(sql, dataMap, null);
}
private Object execute(String sql,Map<String,Object> dataMap, Page page){
sql=sql.trim();
private Object execute(String sql, Map<String, Object> dataMap, Page page) {
sql = sql.trim();
//执行sql
if (sql.startsWith("insert") || sql.startsWith("INSERT")) {
sqlMapper.insertData(sql,dataMap);
sqlMapper.insertData(sql, dataMap);
} else if (sql.startsWith("update") || sql.startsWith("UPDATE")) {
sqlMapper.updateData(sql,dataMap);
sqlMapper.updateData(sql, dataMap);
} else if (sql.startsWith("delete") || sql.startsWith("DELETE")) {
sqlMapper.deleteData(sql,dataMap);
sqlMapper.deleteData(sql, dataMap);
} else if (sql.startsWith("select") || sql.startsWith("SELECT")) {
if(FuncBase.isNotEmpty(page)){
return sqlMapper.selectPageData(page, sql,dataMap);
if (FuncBase.isNotEmpty(page)) {
return sqlMapper.selectPageData(page, sql, dataMap);
}
return sqlMapper.selectData(sql,dataMap);
return sqlMapper.selectData(sql, dataMap);
}
return null;
}
// 新增增强
public static void addPlugin(EnhanceSqlEntity sqlEntity){
String key = sqlEntity.getDbformId()+"_"+sqlEntity.getButtonCode();
public static void addPlugin(EnhanceSqlEntity sqlEntity) {
String key = sqlEntity.getDbformId() + "_" + sqlEntity.getButtonCode();
sqlPlugins.merge(key, new ArrayList<>(Collections.singletonList(sqlEntity)), (oldValue, newValue) -> {
oldValue.addAll(newValue);
return oldValue;
@@ -668,7 +682,7 @@ public class JeeLowCodeAnnoaionAspectjSQL {
}
// 删除增强
public static void removePlugin(EnhanceSqlEntity sqlEntity){
public static void removePlugin(EnhanceSqlEntity sqlEntity) {
String key = sqlEntity.getDbformId() + "_" + sqlEntity.getButtonCode();
List<EnhanceSqlEntity> sqlEntityList = sqlPlugins.getOrDefault(key, new ArrayList<>());
// id相同则删除

View File

@@ -298,6 +298,7 @@ public class JeeLowCodeAnnotationAspectjJAVA {
EnhanceParam param = new EnhanceParam();
param.setDbFormId(dbFormId);
param.setDataId((Long)paramMap.getOrDefault("id", null));
param.setList((ArrayList) paramMap.getOrDefault("dataList", null));
param.setParams((Map<String, Object>) paramMap.getOrDefault("params", null));
Object importDataParam = paramMap.get("param");

View File

@@ -78,8 +78,8 @@ public class EnhanceContext extends BaseEnhanceContext implements Serializable{
this.result = new EnhanceResult(exitFlag,id,total,records);
}
public void setParam(Long dbFormId, Map<String, Object> params, List<Map<String, Object>> list, Long dataId, Page page, List<Long> dataIdList){
this.param = new EnhanceParam(dbFormId,params,list,dataId,page,dataIdList);
public void setParam(Long dbFormId, Map<String, Object> params, List<Map<String, Object>> list, Long dataId, Page page){
this.param = new EnhanceParam(dbFormId,params,list,dataId,page);
}
}

View File

@@ -37,8 +37,6 @@ public class EnhanceParam implements Serializable {
private Page page;
private List<Long> dataIdList;
private SaveImportDataParam importDataParam;
public Long getDbFormId() {
@@ -84,14 +82,6 @@ public class EnhanceParam implements Serializable {
this.page = page;
}
public List<Long> getDataIdList() {
return dataIdList;
}
public void setDataIdList(List<Long> dataIdList) {
this.dataIdList = dataIdList;
}
public SaveImportDataParam getImportDataParam() {
return importDataParam;
}
@@ -106,12 +96,11 @@ public class EnhanceParam implements Serializable {
this.list = list;
}
public EnhanceParam(Long dbFormId, Map<String, Object> params, List<Map<String, Object>> list, Long dataId, Page page, List<Long> dataIdList) {
public EnhanceParam(Long dbFormId, Map<String, Object> params, List<Map<String, Object>> list, Long dataId, Page page) {
this.dbFormId = dbFormId;
this.params = params;
this.list = list;
this.dataId = dataId;
this.page = page;
this.dataIdList = dataIdList;
}
}

View File

@@ -13,7 +13,9 @@ http://www.apache.org/licenses/
*/
package com.jeelowcode.core.framework.config.btncommand.receiver;
import com.jeelowcode.core.framework.entity.FormFieldEntity;
import com.jeelowcode.core.framework.entity.ReportEntity;
import com.jeelowcode.core.framework.mapper.FormFieldMapper;
import com.jeelowcode.core.framework.params.vo.role.DbFormRoleFieldVo;
import com.jeelowcode.framework.excel.model.ExcelTitleModel;
import com.jeelowcode.framework.exception.JeeLowCodeException;
@@ -107,11 +109,15 @@ public class ButtonReceiverBase {
*/
public void webViewAppend(Long dbFormId, List<Map<String, Object>> records) {
FormFieldWebMapper fieldWebMapper = SpringUtils.getBean(FormFieldWebMapper.class);
FormFieldMapper fieldMapper = SpringUtils.getBean(FormFieldMapper.class);
// 获取表单的字段对应的字典
IFormService formService = SpringUtils.getBean(IFormService.class);
Map<String, Map<String, Object>> fieldDictMap = formService.getFieldDict(dbFormId);
//表单map
Map<String, FormFieldEntity> dbFormMap = fieldMapper.getByDbFormMap(dbFormId);
List<FormFieldWebEntity> webEntityList = fieldWebMapper.webEntityListAndFormatConfigIsNotNull(dbFormId);
webEntityList.stream().forEach(web->{
String fieldCode = web.getFieldCode();
@@ -119,6 +125,16 @@ public class ButtonReceiverBase {
if(Func.isEmpty(formatConfig)){
return;
}
FormFieldEntity formFieldEntity = dbFormMap.get(fieldCode);
if(Func.isEmpty(formFieldEntity)){
return;
}
String isDb = formFieldEntity.getIsDb();
if(Func.equals(isDb,YNEnum.Y.getCode())){
return;
}
WebFormatConfigModel webFormatConfigModel = Func.json2Bean(formatConfig, WebFormatConfigModel.class);
if(Func.isEmpty(webFormatConfigModel)){
return;

View File

@@ -330,10 +330,13 @@ public class DbFormController extends BaseController {
@Operation(tags = "表单开发",summary = "解释数据源SQL的运行结果")
public BaseWebResult explainDatasourceSql(@RequestBody ExplainDatasourceSqlModel model) {
Page page = FuncWeb.getPage(1, 10);
Map<String, Object> params=new HashMap<>();
SqlInfoQueryWrapper.Wrapper queryWrapper = SqlHelper.getQueryWrapper();
queryWrapper.setTableSql(model.getExplainSql());
//处理占位符参数
Func.replaceParam(model.getExplainSql(), params, null, jeeLowCodeAdapter);
queryWrapper.setTableSql(model.getExplainSql());//sql
try{
IPage<Map<String, Object>> pages = sqlService.getDataIPageByPlus(page, queryWrapper);
IPage<Map<String, Object>> pages = sqlService.getDataIPageByPlus(page, queryWrapper,params);
return BaseWebResult.success(pages);
}catch (Exception e){
throw new JeeLowCodeMoreException("SQL执行错误",e.getMessage());

View File

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jeelowcode.framework.utils.enums.YNEnum;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -35,6 +36,17 @@ public interface FormFieldMapper extends BaseMapper<FormFieldEntity> {
return formFieldList;
}
default Map<String,FormFieldEntity> getByDbFormMap(Long dbFormId){
LambdaQueryWrapper<FormFieldEntity> formWrapper = new LambdaQueryWrapper<>();
formWrapper.eq(FormFieldEntity::getDbformId, dbFormId);
formWrapper.orderByAsc(FormFieldEntity::getSortNum);
List<FormFieldEntity> formFieldList = this.selectList(formWrapper);
Map<String, FormFieldEntity> map = formFieldList.stream()
.collect(Collectors.toMap(FormFieldEntity::getFieldCode, entity -> entity));
return map;
}
default List<FormFieldEntity> getAllList(){
LambdaQueryWrapper<FormFieldEntity> fieldWrapper = new LambdaQueryWrapper<>();
fieldWrapper.select(FormFieldEntity::getDbformId, FormFieldEntity::getFieldCode, FormFieldEntity::getFieldName,FormFieldEntity::getFieldType);

View File

@@ -74,7 +74,7 @@ public interface IFrameService {
List<String> saveBatchData(Long dbformId, List<JSONObject> dataMapList);
//编辑数据
ExecuteEnhanceModel editData(Long dbformId, Long dataId, Map<String,Object> params);
ExecuteEnhanceModel editData(Long dbformId, Long id, Map<String,Object> params);
//编辑数据-批量
void editBatchData(Long dbformId,List<JSONObject> jsonObjectList);

View File

@@ -1094,7 +1094,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
entity.setSortNum(++sortNum);
if (FuncBase.isEmpty(vo.getId())) {//新增
addList.add(entity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(entity);
}
@@ -1157,7 +1157,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
saveOrUpdateEntity.setDictTextFormatter(vo.getDictTextFormatter());
if (Func.isEmpty(vo.getId())) {//新增
addList.add(saveOrUpdateEntity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(saveOrUpdateEntity);
}
});
@@ -1197,7 +1197,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
if (Func.isEmpty(vo.getId())) {//新增
addList.add(saveOrUpdateEntity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(saveOrUpdateEntity);
}
});
@@ -1233,7 +1233,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
saveOrUpdateEntity.setMainField(vo.getMainField());
if (Func.isEmpty(vo.getId())) {//新增
addList.add(saveOrUpdateEntity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(saveOrUpdateEntity);
}
});
@@ -1281,7 +1281,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
saveOrUpdateEntity.setFormatConfig(vo.getFormatConfig());
if (Func.isEmpty(vo.getId())) {//新增
addList.add(saveOrUpdateEntity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(saveOrUpdateEntity);
}
@@ -1361,7 +1361,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
saveOrUpdateEntity.setSummaryJson(vo.getSummaryJson());
if (Func.isEmpty(vo.getId())) {//新增
addList.add(saveOrUpdateEntity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(saveOrUpdateEntity);
}
@@ -1402,7 +1402,7 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
saveOrUpdateEntity.setIndexType(vo.getIndexType());
if (Func.isEmpty(vo.getId())) {//新增
addList.add(saveOrUpdateEntity);
} else if (Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
} else if (Func.isEmpty(vo.getIsModify()) || Func.equals(vo.getIsModify(), YNEnum.Y.getCode())) {//如果是N的时候不修改
updateList.add(saveOrUpdateEntity);
}
});
@@ -1752,10 +1752,15 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
for (ExplainSqlFieldModel model : modelList) {
String fieldCode = model.getValue();//字段 nj_name
String alias = model.getAlias();
String finaiFieldCode=Func.isNotEmpty(alias)?alias.toLowerCase():fieldCode.toLowerCase();
String tableName = model.getTableName();//表名称
String type = model.getType();//field=表字段
String controlType = model.getControlType();//控件类型 //text控件 custom=自定义
String value = model.getValue();
DefaultDbFieldEnum defaultDbFieldEnum = DefaultDbFieldEnum.getByFieldCode(fieldCode.toLowerCase());
if(Func.isNotEmpty(defaultDbFieldEnum)){
continue;
}
//控件类型
if (Func.equals(controlType, "text") && Func.equals("field", type)) {
@@ -1763,19 +1768,19 @@ public class FormServiceImpl extends ServiceImpl<FormMapper, FormEntity> impleme
if (Func.isEmpty(dbFormId)) {
//构建空的
FormFieldEntity fieldEntity = new FormFieldEntity();
fieldEntity.setFieldCode(fieldCode);
fieldEntity.setFieldCode(finaiFieldCode);
fieldList.add(fieldEntity);
FormFieldDictEntity fieldDictEntity = new FormFieldDictEntity();
fieldDictEntity.setFieldCode(fieldCode);
fieldDictEntity.setFieldCode(finaiFieldCode);
dictList.add(fieldDictEntity);
FormFieldQueryEntity formFieldQueryEntity = new FormFieldQueryEntity();
formFieldQueryEntity.setFieldCode(fieldCode);
formFieldQueryEntity.setFieldCode(finaiFieldCode);
queryList.add(formFieldQueryEntity);
FormFieldWebEntity formFieldWebEntity = new FormFieldWebEntity();
formFieldWebEntity.setFieldCode(fieldCode);
formFieldWebEntity.setFieldCode(finaiFieldCode);
webList.add(formFieldWebEntity);
continue;
}

View File

@@ -18,6 +18,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.jeelowcode.core.framework.config.btncommand.receiver.ButtonReceiverBase;
import com.jeelowcode.framework.plus.component.DbManager;
import com.jeelowcode.core.framework.entity.*;
import com.jeelowcode.core.framework.mapper.FormFieldForeignkeyMapper;
@@ -448,6 +449,9 @@ public class FrameServiceImpl implements IFrameService {
//查所有
SqlInfoQueryWrapper.Wrapper wrapper = this.getDataQueryWrapper(formEntity, params);
if (Func.isEmpty(wrapper)) {
return new ResultDataModel();
}
Map<String, Object> dataMap = sqlService.getDataOneByPlus(wrapper);
if (FuncBase.isEmpty(dataMap)) {
return new ResultDataModel();
@@ -489,6 +493,7 @@ public class FrameServiceImpl implements IFrameService {
ResultDataModel subDataModel = proxyService.getDataList(subDbFormId,subParamMap);
List<Map<String, Object>> subDataList = subDataModel.getRecords();
new ButtonReceiverBase().webViewAppend(subDbFormId,subDataList);
subTableDataMap.put(subTable, subDataList);
}
}
@@ -651,10 +656,10 @@ public class FrameServiceImpl implements IFrameService {
long size = Func.isEmpty(page)?JeeLowCodeConstant.NOT_PAGE: page.getSize();
if (size == JeeLowCodeConstant.NOT_PAGE) {//列表
dataList = sqlService.getDataListByPlus(wrapper);
dataList = sqlService.getDataListByPlus(wrapper,params);
total = (long) dataList.size();
} else {//分页
IPage<Map<String, Object>> pages = sqlService.getDataIPageByPlus(page, wrapper);
IPage<Map<String, Object>> pages = sqlService.getDataIPageByPlus(page, wrapper,params);
//处理字典回显
dataList = pages.getRecords();
total = pages.getTotal();
@@ -692,10 +697,10 @@ public class FrameServiceImpl implements IFrameService {
//编辑数据
@Transactional(rollbackFor = Exception.class)
@Override
public ExecuteEnhanceModel editData(Long dbFormId, Long dataId, Map<String, Object> params) {
public ExecuteEnhanceModel editData(Long dbFormId, Long id, Map<String, Object> params) {
FrameServiceImpl proxyService = SpringUtils.getBean(FrameServiceImpl.class);
//编辑主表
ExecuteEnhanceModel enhanceModel = proxyService.editPublicData(dbFormId, dataId, params);
ExecuteEnhanceModel enhanceModel = proxyService.editPublicData(dbFormId, id, params);
List<String> allSubTableNameList = dbFormService.getAllSubTableNameList(dbFormId);
if (Func.isEmpty(allSubTableNameList)) {//当前不是主表
@@ -703,7 +708,7 @@ public class FrameServiceImpl implements IFrameService {
}
//保存子表数据-新增或者修改
this.saveOrUpdateSubTableData(dbFormId, dataId, params);
this.saveOrUpdateSubTableData(dbFormId, id, params);
return enhanceModel;
}
@@ -730,7 +735,7 @@ public class FrameServiceImpl implements IFrameService {
boolean serviceTableFlag = dbFormService.isServiceTable(dbFormId);
if (!serviceTableFlag) {//当前不是业务表
return null;
return new ExecuteEnhanceModel();
}
String tableName = dbFormService.getTableName(dbFormId);//获取表名
@@ -797,7 +802,7 @@ public class FrameServiceImpl implements IFrameService {
public ExecuteEnhanceModel savePublicData(Long dbFormId, Map<String, Object> params) {
boolean serviceTableFlag = dbFormService.isServiceTable(dbFormId);
if (!serviceTableFlag) {//当前不是业务表
return null;
return new ExecuteEnhanceModel();
}
String tableName = dbFormService.getTableName(dbFormId);//获取表名
@@ -816,11 +821,11 @@ public class FrameServiceImpl implements IFrameService {
//公共编辑
public ExecuteEnhanceModel editPublicData(Long dbFormId, Long dataId, Map<String, Object> params) {
public ExecuteEnhanceModel editPublicData(Long dbFormId, Long id, Map<String, Object> params) {
boolean serviceTableFlag = dbFormService.isServiceTable(dbFormId);
if (!serviceTableFlag) {//当前不是业务表
return null;
return new ExecuteEnhanceModel();
}
String tableName = dbFormService.getTableName(dbFormId);//获取表名
@@ -834,13 +839,13 @@ public class FrameServiceImpl implements IFrameService {
.setTableName(tableName)
.setMap(dataMap)
.setWhere(where -> {
where.eq("id", dataId);
where.eq("id", id);
}).build();
sqlService.updateDataByPlus(wrapper);
ExecuteEnhanceModel saveDataModel = new ExecuteEnhanceModel();
saveDataModel.setId(FuncBase.toStr(dataId));
saveDataModel.setId(FuncBase.toStr(id));
return saveDataModel;
}
@@ -1008,6 +1013,8 @@ public class FrameServiceImpl implements IFrameService {
}
//直接执行数据源
queryWrapper.setTableSql(dataSourceConfigModel.getExecuteSql());
//处理占位符参数
Func.replaceParam(dataSourceConfigModel.getExecuteSql(), params, null, jeeLowCodeAdapter);
}
//处理排序排序================
@@ -1046,6 +1053,9 @@ public class FrameServiceImpl implements IFrameService {
//直接执行数据源
queryWrapper.setTableSql(dataSourceConfigModel.getExecuteSql());
//处理占位符参数
Func.replaceParam(dataSourceConfigModel.getExecuteSql(), params, null, jeeLowCodeAdapter);
//处理排序排序================
this.handleOrderBy(queryWrapper, params, null);

View File

@@ -36,4 +36,6 @@ public interface EnhanceConstant {
String ENHANCE_EVENT_START = "start";//开始
String ENHANCE_EVENT_END = "end";//结束
}

View File

@@ -14,6 +14,11 @@ http://www.apache.org/licenses/
package com.jeelowcode.framework.utils.enums;
import com.jeelowcode.framework.utils.utils.FuncBase;
import java.util.Arrays;
import java.util.Optional;
/**
* 数据库默认字段
*/
@@ -47,4 +52,16 @@ public enum DefaultDbFieldEnum {
this.fieldCode = fieldCode;
this.fieldName = fieldName;
}
public static DefaultDbFieldEnum getByFieldCode(String fieldCode) {
Optional<DefaultDbFieldEnum> matchingEnum = Arrays.stream(DefaultDbFieldEnum.values())
.filter(DefaultDbFieldEnum -> FuncBase.equals(DefaultDbFieldEnum.getFieldCode(), fieldCode))
.findFirst(); // findFirst()会返回第一个匹配的元素或者如果找不到则返回一个空的Optional
// 检查是否找到了匹配的枚举项
if (matchingEnum.isPresent()) {
return matchingEnum.get();
}
return null;
}
}

View File

@@ -110,6 +110,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
//清空缓存
permissionService.clearCache(user.getId());
permissionService.clearCacheIgnoreTenant(user.getId());
try{
Thread.sleep(2000L);
}catch (Exception e){

View File

@@ -146,4 +146,6 @@ public interface PermissionService {
//清除缓存
Boolean clearCache(Long userId);
//清除缓存忽略租户
Boolean clearCacheIgnoreTenant(Long userId);
}

View File

@@ -7,6 +7,7 @@ import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -359,6 +360,19 @@ public class PermissionServiceImpl implements PermissionService {
return true;
}
//清除缓存忽略租户
@TenantIgnore
public Boolean clearCacheIgnoreTenant(Long userId){
try{
PermissionServiceImpl bean = SpringUtil.getBean(PermissionServiceImpl.class);
bean.clearCache(userId);
Thread.sleep(500L);
}catch (Exception e){
}
return true;
}
/**
* 获得自身的代理对象,解决 AOP 生效问题
*