From d022922ad3c2322ba809896f2f14fffd01e321a1 Mon Sep 17 00:00:00 2001 From: hanshaofeng Date: Mon, 28 Nov 2016 12:35:20 +0800 Subject: [PATCH] permission2 --- .../platform/biz/service/MongoSyncService.java | 26 ++++++++++++++++++---- .../lyms/platform/common/dao/BaseMongoDAOImpl.java | 7 +++++- .../lyms/platform/common/pojo/SyncDataModel.java | 11 ++++++++- .../lyms/platform/common/pojo/UpdateMultiData.java | 24 +++++++++++++++++++- 4 files changed, 61 insertions(+), 7 deletions(-) diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java index 9606be7..fbf47ed 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java @@ -58,10 +58,18 @@ public class MongoSyncService { Class cla = Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key)); // 批量修改的情况下,ID字段是要修改的CLASS Class updateClass = Class.forName(LymsEncodeUtil.aesDecrypt(id, mongo_crypto_key)); - Object obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); + Object obj = null; + try { + obj = SerializUtils.byteToObj(Base64.decodeBase64(json)); + } catch (Exception ee) { + obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); + } if (obj instanceof UpdateMultiData) { UpdateMultiData data = (UpdateMultiData) obj; - if (data.getQuery() != null && data.getUpdate() != null) { + if (data.getMongoQuery() != null && data.getMongoUpdate() != null) { + mongoTemplate.updateMulti(data.getMongoQuery(), data.getMongoUpdate(), updateClass); + return true; + } else if (data.getQuery() != null && data.getUpdate() != null) { MongoCondition c = null; for (String key:data.getQuery().keySet()) { if (c == null) { @@ -80,13 +88,23 @@ public class MongoSyncService { } } } else if ("ADD".equals(action)) { - Object entity = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key))); + Object entity = null; + try { + entity = SerializUtils.byteToObj(Base64.decodeBase64(json)); + } catch (Exception ee) { + entity = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key))); + } Assert.notNull(entity, "execute insert method must not null."); mongoTemplate.save(entity); return true; } else if ("UPDATE".equals(action)) { Class cla = Class.forName(LymsEncodeUtil.aesDecrypt(className, mongo_crypto_key)); - Object obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); + Object obj = null; + try { + obj = SerializUtils.byteToObj(Base64.decodeBase64(json)); + } catch (Exception ee) { + obj = JsonUtil.jkstr2Obj(LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), cla); + } Update update = MongoConvertHelper.convertToNativeUpdate(ReflectionUtils.getUpdateField(obj)); Assert.notNull(update, "execute update method must not null."); mongoTemplate.updateMulti(new MongoQuery(new MongoCondition("id", LymsEncodeUtil.aesDecrypt(id, mongo_crypto_key), MongoOper.IS)).convertToMongoQuery(), update, cla); diff --git a/platform-common/src/main/java/com/lyms/platform/common/dao/BaseMongoDAOImpl.java b/platform-common/src/main/java/com/lyms/platform/common/dao/BaseMongoDAOImpl.java index 5180165..efed239 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/dao/BaseMongoDAOImpl.java +++ b/platform-common/src/main/java/com/lyms/platform/common/dao/BaseMongoDAOImpl.java @@ -4,6 +4,7 @@ import com.lyms.platform.common.dao.operator.Page; import com.lyms.platform.common.pojo.SyncDataModel; import com.lyms.platform.common.pojo.UpdateMultiData; import com.lyms.platform.common.utils.*; +import org.apache.commons.codec.binary.Base64; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; @@ -11,6 +12,7 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.util.Assert; +import java.io.Serializable; import java.util.Collection; import java.util.Date; import java.util.List; @@ -142,6 +144,7 @@ public class BaseMongoDAOImpl implements BaseMongoDAO { // 数据上传 UpdateMultiData data = new UpdateMultiData(); data.setMongoQuery(query); + data.setMongoUpdate(update); data.setUpdate(ReflectionUtils.getUpdateField(obj)); // 批量修改的情况下,ID字段是要修改的CLASS addSyncData("UPDATEMULTI", data, obj.getClass().getName()); @@ -162,7 +165,8 @@ public class BaseMongoDAOImpl implements BaseMongoDAO { model.setAction(action); if (null != data) { model.setClassName(LymsEncodeUtil.aesEncrypt(data.getClass().getName(), mongo_crypto_key)); - model.setJsonData(LymsEncodeUtil.aesEncrypt(JsonUtil.obj2Str(data), mongo_crypto_key)); + model.setJsonData(Base64.encodeBase64String(SerializUtils.objToByte((Serializable)data))); + model.setType(1); } model.setCreated(new Date()); model.setModified(model.getCreated()); @@ -173,6 +177,7 @@ public class BaseMongoDAOImpl implements BaseMongoDAO { mongoTemplate.insert(model); } catch (Exception e) { e.printStackTrace(); + System.out.println(data); } } } diff --git a/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncDataModel.java b/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncDataModel.java index 0159d7c..eaeef7e 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncDataModel.java +++ b/platform-common/src/main/java/com/lyms/platform/common/pojo/SyncDataModel.java @@ -20,7 +20,16 @@ public class SyncDataModel extends BaseModel { private String className; private String jsonData; private String dataId; - private Integer status; + private Integer status; // 1:未同步 , 2:已同步 + private Integer type; // null:旧版本(JSON),1:jsonData 为 SerializData + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } public Integer getStatus() { return status; diff --git a/platform-common/src/main/java/com/lyms/platform/common/pojo/UpdateMultiData.java b/platform-common/src/main/java/com/lyms/platform/common/pojo/UpdateMultiData.java index 32e3e5d..4b00f2e 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/pojo/UpdateMultiData.java +++ b/platform-common/src/main/java/com/lyms/platform/common/pojo/UpdateMultiData.java @@ -4,17 +4,38 @@ import com.mongodb.DBObject; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** * Created by riecard on 2016/10/30. */ -public class UpdateMultiData { +public class UpdateMultiData implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; private Map query; private Map update; + private Query mongoQuery; + private Update mongoUpdate; + + public Update getMongoUpdate() { + return mongoUpdate; + } + + public void setMongoUpdate(Update mongoUpdate) { + this.mongoUpdate = mongoUpdate; + } + + public Query getMongoQuery() { + return mongoQuery; + } + public void setQuery(Map query) { this.query = query; } @@ -24,6 +45,7 @@ public class UpdateMultiData { } public void setMongoQuery(Query query) { + this.mongoQuery = query; DBObject dbObject = query.getQueryObject(); this.query = new HashMap<>(); for (String key:dbObject.keySet()) { -- 1.8.3.1