diff --git a/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java b/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java index 016b478217afb4e1a4d01147ace7257b2cf93013..fbda551ead854f0dbaf427927d257b686ae7448c 100644 --- a/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java +++ b/src/main/java/neatlogic/framework/form/attribute/core/IFormAttributeDataConversionHandler.java @@ -114,4 +114,14 @@ public interface IFormAttributeDataConversionHandler { return 1; } + /** + * 密码加密 + * @param source 属性原始数据 + * @param configObj 属性配置信息 + * @return 返回加密后的数据 + */ + default Object passwordEncryption(Object source, JSONObject configObj) { + return source; + } + } diff --git a/src/main/java/neatlogic/module/framework/form/attribute/handler/PasswordHandler.java b/src/main/java/neatlogic/module/framework/form/attribute/handler/PasswordHandler.java index bee2eff89e72f2a526d34e464411e31a61f5cd51..b445d40e5980792e6a7a050560ab512470d8bb3e 100644 --- a/src/main/java/neatlogic/module/framework/form/attribute/handler/PasswordHandler.java +++ b/src/main/java/neatlogic/module/framework/form/attribute/handler/PasswordHandler.java @@ -51,13 +51,7 @@ public class PasswordHandler extends FormHandlerBase { @Override public Object conversionDataType(Object source, String attributeLabel) { - if (source == null) { - return null; - } - if (source instanceof String) { - return RC4Util.encrypt((String) source); - } - throw new AttributeValidException(attributeLabel); + return convertToString(source, attributeLabel); } @Override @@ -157,4 +151,15 @@ public class PasswordHandler extends FormHandlerBase { public Object dataTransformationForExcel(AttributeDataVo attributeDataVo, JSONObject configObj) { return attributeDataVo.getDataObj(); } + + @Override + public Object passwordEncryption(Object source, JSONObject configObj) { + if (source == null) { + return null; + } + if (source instanceof String) { + return RC4Util.encrypt((String) source); + } + return source; + } } diff --git a/src/main/java/neatlogic/module/framework/form/attribute/handler/TableInputerHandler.java b/src/main/java/neatlogic/module/framework/form/attribute/handler/TableInputerHandler.java index 45d2e5458ecd005611a452ef8d560a61d1b49b3e..f5eff8e919592080c40652d687e817118ef5309b 100644 --- a/src/main/java/neatlogic/module/framework/form/attribute/handler/TableInputerHandler.java +++ b/src/main/java/neatlogic/module/framework/form/attribute/handler/TableInputerHandler.java @@ -18,6 +18,7 @@ package neatlogic.module.framework.form.attribute.handler; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import neatlogic.framework.common.constvalue.ParamType; +import neatlogic.framework.common.util.RC4Util; import neatlogic.framework.form.attribute.core.*; import neatlogic.framework.form.constvalue.FormConditionModel; import neatlogic.framework.form.constvalue.FormHandler; @@ -851,4 +852,50 @@ public class TableInputerHandler extends FormHandlerBase { } } } + + @Override + public Object passwordEncryption(Object source, JSONObject configObj) { + JSONArray dataArray = null; + if (source instanceof JSONArray) { + dataArray = (JSONArray) source; + } + if (CollectionUtils.isEmpty(dataArray)) { + return source; + } + JSONArray dataConfig = configObj.getJSONArray("dataConfig"); + if (CollectionUtils.isNotEmpty(dataConfig)) { + for (int i = 0; i < dataConfig.size(); i++) { + JSONObject attr = dataConfig.getJSONObject(i); + String handler = attr.getString("handler"); + if (Objects.equals(handler, FormHandler.FORMPASSWORD.getHandler())) { + String uuid = attr.getString("uuid"); + for (int j = 0; j < dataArray.size(); j++) { + JSONObject dataObj = dataArray.getJSONObject(j); + if (MapUtils.isNotEmpty(dataObj)) { + String data = dataObj.getString(uuid); + if (StringUtils.isNotBlank(data)) { + dataObj.put(uuid, RC4Util.encrypt(data)); + } + } + } + } else if (Objects.equals(handler, "formtable")) { + JSONObject config = attr.getJSONObject("config"); + if (MapUtils.isEmpty(config)) { + continue; + } + String uuid = attr.getString("uuid"); + for (int j = 0; j < dataArray.size(); j++) { + JSONObject dataObj = dataArray.getJSONObject(j); + if (MapUtils.isNotEmpty(dataObj)) { + JSONArray data = dataObj.getJSONArray(uuid); + if (CollectionUtils.isNotEmpty(data)) { + this.passwordEncryption(data, config); + } + } + } + } + } + } + return dataArray; + } }