diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnoaionAspectjSQL.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnoaionAspectjSQL.java index 08efc58..1c9a303 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnoaionAspectjSQL.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnoaionAspectjSQL.java @@ -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 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 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 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 allPlugins = sqlPlugins.getOrDefault(key, null); @@ -177,15 +178,15 @@ public class JeeLowCodeAnnoaionAspectjSQL { setOperation.clear(); } } - List> dataList = new ArrayList<>(); - if(returnVal instanceof ResultDataModel){ + List> dataList = new ArrayList<>(); + if (returnVal instanceof ResultDataModel) { dataList = ((ResultDataModel) returnVal).getRecords(); } EnhanceContext context = new EnhanceContext(); Map 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> 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 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 paramMap = context.getParam().getParams(); - if(FuncBase.isNotEmpty(context.getParam().getDataId())){//把id放入到参数 - paramMap.put("id",context.getParam().getDataId()); + Map 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 dataIdList = context.getParam().getDataIdList(); + public void executeEnhanceAfterDelete(EnhanceContext context, EnhanceSqlEntity sqlEntity) { + EnhanceParam param = context.getParam(); + Map params = param.getParams(); + List dataIdList = (List) params.getOrDefault("dataIdList", null); + String executeSql = sqlEntity.getExecuteSql(); + if (FuncBase.isEmpty(executeSql)) { + return; + } + //因为是批量删除的,需要拆分出来 + for (Long dataId : dataIdList) { + Map dataMap = new HashMap<>(); + dataMap.put("id", dataId); - String executeSql = sqlEntity.getExecuteSql(); - if(FuncBase.isEmpty(executeSql)){ - return ; - } - //因为是批量删除的,需要拆分出来 - for(Long dataId:dataIdList){ - Map 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 paramMap = context.getParam().getParams(); + Map 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 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> 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 paramMap = context.getParam().getParams(); + Map 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 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 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 params = context.getParam().getParams(); String executeSql = sqlEntity.getExecuteSql(); String autoWhereSql = this.getAutoWhereSql(dbFormId, params); List> 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 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 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> leftRecords ; - if(FuncBase.isNotEmpty(leftEntity)){ - EnhanceContext leftContext = context.clone(); - executSQLPlugin(leftContext, leftEntity); - leftRecords = leftContext.getResult().getRecords(); - }else { - leftRecords = context.getResult().getRecords(); - } + List> 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> 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> differ; - List> leftRecords ; - if(FuncBase.isNotEmpty(leftEntity)){ + private void executSetOperationDiffer(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) { + List> differ; + List> 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> union; - List> leftRecords ; - if(FuncBase.isNotEmpty(leftEntity)){ + public void executSetOperationUnion(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) { + List> union; + List> 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> intersection; - List> leftRecords ; - if(FuncBase.isNotEmpty(leftEntity)){ + public void executSetOperationInterSerction(EnhanceSqlEntity leftEntity, EnhanceSqlEntity rightEntity, EnhanceContext context) { + List> intersection; + List> 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 params){ + public String getAutoWhereSql(Long dbFormId, Map params) { SqlInfoQueryWrapper.Wrapper queryWrapper = SqlHelper.getQueryWrapper(); List> whereFieldMapList = jeeLowCodeMapper.getDbWhereFieldList(dbFormId); @@ -474,17 +484,17 @@ public class JeeLowCodeAnnoaionAspectjSQL { SqlFormatModel sqlFormatModel = queryWrapper.buildSql(); String whereSql = sqlFormatModel.getSql(); Map 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 moreSelectFieldList=null; - if(FuncBase.isNotEmpty(moreSelectFieldListStr)){ + String moreSelectFieldListStr = (String) params.get(ParamEnum.MORE_SELECT_FIELD.getCode()); + List 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 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 paramMap) { + public void executeSql(String executeSql, Map paramMap) { String sql = this.getSql(executeSql, paramMap); - this.execute(sql,paramMap); + this.execute(sql, paramMap); } /** @@ -592,64 +603,67 @@ public class JeeLowCodeAnnoaionAspectjSQL { */ public List> executeSelectListSql(String executeSql, Map paramMap, String autoWhereSql) { String sql = this.getSql(executeSql, paramMap, autoWhereSql); - Object obj = this.execute(sql,paramMap); - return (List>)obj; + Object obj = this.execute(sql, paramMap); + return (List>) obj; } //分页 public IPage> executeSelectPageSql(String executeSql, Map paramMap, String autoWhereSql, Page page) { String sql = this.getSql(executeSql, paramMap, autoWhereSql); - Object obj = this.execute(sql, paramMap,page); - return (IPage>)obj; + Object obj = this.execute(sql, paramMap, page); + return (IPage>) obj; } /** * 获取执行sql + * * @param executeSql * @param paramMap * @return */ - private String getSql(String executeSql, Map paramMap){ - return this.getSql(executeSql,paramMap,null); + private String getSql(String executeSql, Map paramMap) { + return this.getSql(executeSql, paramMap, null); } - private String getSql(String executeSql, Map paramMap, String autoWhereSql){ + + private String getSql(String executeSql, Map 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 dataMap){ - return execute(sql,dataMap,null); + private Object execute(String sql, Map dataMap) { + return execute(sql, dataMap, null); } - private Object execute(String sql,Map dataMap, Page page){ - sql=sql.trim(); + private Object execute(String sql, Map 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 sqlEntityList = sqlPlugins.getOrDefault(key, new ArrayList<>()); // id相同则删除 diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnotationAspectjJAVA.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnotationAspectjJAVA.java index 38dc06a..2a3552e 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnotationAspectjJAVA.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/JeeLowCodeAnnotationAspectjJAVA.java @@ -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) paramMap.getOrDefault("params", null)); Object importDataParam = paramMap.get("param"); diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceContext.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceContext.java index 51f299a..e4328d9 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceContext.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceContext.java @@ -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 params, List> list, Long dataId, Page page, List dataIdList){ - this.param = new EnhanceParam(dbFormId,params,list,dataId,page,dataIdList); + public void setParam(Long dbFormId, Map params, List> list, Long dataId, Page page){ + this.param = new EnhanceParam(dbFormId,params,list,dataId,page); } } diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceParam.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceParam.java index a75c524..dfc6be4 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceParam.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/aspect/enhance/model/EnhanceParam.java @@ -37,8 +37,6 @@ public class EnhanceParam implements Serializable { private Page page; - private List dataIdList; - private SaveImportDataParam importDataParam; public Long getDbFormId() { @@ -84,14 +82,6 @@ public class EnhanceParam implements Serializable { this.page = page; } - public List getDataIdList() { - return dataIdList; - } - - public void setDataIdList(List 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 params, List> list, Long dataId, Page page, List dataIdList) { + public EnhanceParam(Long dbFormId, Map params, List> list, Long dataId, Page page) { this.dbFormId = dbFormId; this.params = params; this.list = list; this.dataId = dataId; this.page = page; - this.dataIdList = dataIdList; } } diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverBase.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverBase.java index ae4f908..148e519 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverBase.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/config/btncommand/receiver/ButtonReceiverBase.java @@ -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> records) { FormFieldWebMapper fieldWebMapper = SpringUtils.getBean(FormFieldWebMapper.class); + FormFieldMapper fieldMapper = SpringUtils.getBean(FormFieldMapper.class); // 获取表单的字段对应的字典 IFormService formService = SpringUtils.getBean(IFormService.class); Map> fieldDictMap = formService.getFieldDict(dbFormId); + //表单map + Map dbFormMap = fieldMapper.getByDbFormMap(dbFormId); + List 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; diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/DbFormController.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/DbFormController.java index 3a72384..49ed921 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/DbFormController.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/controller/DbFormController.java @@ -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 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> pages = sqlService.getDataIPageByPlus(page, queryWrapper); + IPage> pages = sqlService.getDataIPageByPlus(page, queryWrapper,params); return BaseWebResult.success(pages); }catch (Exception e){ throw new JeeLowCodeMoreException("SQL执行错误",e.getMessage()); diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormFieldMapper.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormFieldMapper.java index 35cab3e..ce309dc 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormFieldMapper.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/mapper/FormFieldMapper.java @@ -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 { return formFieldList; } + default Map getByDbFormMap(Long dbFormId){ + LambdaQueryWrapper formWrapper = new LambdaQueryWrapper<>(); + formWrapper.eq(FormFieldEntity::getDbformId, dbFormId); + formWrapper.orderByAsc(FormFieldEntity::getSortNum); + List formFieldList = this.selectList(formWrapper); + + Map map = formFieldList.stream() + .collect(Collectors.toMap(FormFieldEntity::getFieldCode, entity -> entity)); + return map; + } + default List getAllList(){ LambdaQueryWrapper fieldWrapper = new LambdaQueryWrapper<>(); fieldWrapper.select(FormFieldEntity::getDbformId, FormFieldEntity::getFieldCode, FormFieldEntity::getFieldName,FormFieldEntity::getFieldType); diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IFrameService.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IFrameService.java index de45f1f..da6a271 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IFrameService.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/IFrameService.java @@ -74,7 +74,7 @@ public interface IFrameService { List saveBatchData(Long dbformId, List dataMapList); //编辑数据 - ExecuteEnhanceModel editData(Long dbformId, Long dataId, Map params); + ExecuteEnhanceModel editData(Long dbformId, Long id, Map params); //编辑数据-批量 void editBatchData(Long dbformId,List jsonObjectList); diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FormServiceImpl.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FormServiceImpl.java index 2699a5e..12b0f4d 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FormServiceImpl.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FormServiceImpl.java @@ -1094,7 +1094,7 @@ public class FormServiceImpl extends ServiceImpl 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 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 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 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 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 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 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 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 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; } diff --git a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FrameServiceImpl.java b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FrameServiceImpl.java index 2e448ca..c0b6753 100644 --- a/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FrameServiceImpl.java +++ b/jeelowcode-core/src/main/java/com/jeelowcode/core/framework/service/impl/FrameServiceImpl.java @@ -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 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> 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> pages = sqlService.getDataIPageByPlus(page, wrapper); + IPage> 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 params) { + public ExecuteEnhanceModel editData(Long dbFormId, Long id, Map params) { FrameServiceImpl proxyService = SpringUtils.getBean(FrameServiceImpl.class); //编辑主表 - ExecuteEnhanceModel enhanceModel = proxyService.editPublicData(dbFormId, dataId, params); + ExecuteEnhanceModel enhanceModel = proxyService.editPublicData(dbFormId, id, params); List 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 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 params) { + public ExecuteEnhanceModel editPublicData(Long dbFormId, Long id, Map 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); diff --git a/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/constant/EnhanceConstant.java b/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/constant/EnhanceConstant.java index 773299c..60c0870 100644 --- a/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/constant/EnhanceConstant.java +++ b/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/constant/EnhanceConstant.java @@ -36,4 +36,6 @@ public interface EnhanceConstant { String ENHANCE_EVENT_START = "start";//开始 String ENHANCE_EVENT_END = "end";//结束 + + } \ No newline at end of file diff --git a/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/enums/DefaultDbFieldEnum.java b/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/enums/DefaultDbFieldEnum.java index 0bb5de3..82dc5d1 100644 --- a/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/enums/DefaultDbFieldEnum.java +++ b/jeelowcode-framework/jeelowcode-utils/src/main/java/com/jeelowcode/framework/utils/enums/DefaultDbFieldEnum.java @@ -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 matchingEnum = Arrays.stream(DefaultDbFieldEnum.values()) + .filter(DefaultDbFieldEnum -> FuncBase.equals(DefaultDbFieldEnum.getFieldCode(), fieldCode)) + .findFirst(); // findFirst()会返回第一个匹配的元素,或者如果找不到则返回一个空的Optional + // 检查是否找到了匹配的枚举项 + if (matchingEnum.isPresent()) { + return matchingEnum.get(); + } + return null; + + } } diff --git a/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java b/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java index 722e7f7..b5de364 100644 --- a/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java +++ b/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java @@ -110,6 +110,7 @@ public class AdminAuthServiceImpl implements AdminAuthService { } //清空缓存 permissionService.clearCache(user.getId()); + permissionService.clearCacheIgnoreTenant(user.getId()); try{ Thread.sleep(2000L); }catch (Exception e){ diff --git a/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java b/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java index ee235b0..916f9b6 100644 --- a/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java +++ b/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java @@ -146,4 +146,6 @@ public interface PermissionService { //清除缓存 Boolean clearCache(Long userId); + //清除缓存忽略租户 + Boolean clearCacheIgnoreTenant(Long userId); } diff --git a/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java b/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java index d87cd85..d02bbef 100644 --- a/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java +++ b/yudao-module/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java @@ -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 生效问题 *