WANG 5 жил өмнө
parent
commit
5a046eca74

+ 71 - 0
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/cache/OrgPropertyCache.java

@@ -0,0 +1,71 @@
+package cn.com.qmth.examcloud.core.basic.service.cache;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.commons.helpers.DynamicEnum;
+import cn.com.qmth.examcloud.commons.helpers.DynamicEnumManager;
+import cn.com.qmth.examcloud.core.basic.dao.OrgPropertyRepo;
+import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
+import cn.com.qmth.examcloud.core.basic.dao.entity.OrgEntity;
+import cn.com.qmth.examcloud.core.basic.dao.entity.OrgPropertyEntity;
+import cn.com.qmth.examcloud.core.basic.dao.enums.OrgProperty;
+import cn.com.qmth.examcloud.support.cache.bean.OrgPropertyCacheBean;
+import cn.com.qmth.examcloud.web.cache.RandomObjectRedisCache;
+import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
+
+@Service
+public class OrgPropertyCache extends RandomObjectRedisCache<OrgPropertyCacheBean> {
+
+	@Autowired
+	OrgRepo orgRepo;
+
+	@Autowired
+	OrgPropertyRepo orgPropertyRepo;
+
+	@Override
+	public OrgPropertyCacheBean loadFromResource(Object... keys) {
+		Long orgId = (Long) keys[0];
+		String key = (String) keys[1];
+
+		OrgEntity orgEntity = null;
+		if (null != orgId) {
+			orgEntity = GlobalHelper.getEntity(orgRepo, orgId, OrgEntity.class);
+			if (null == orgEntity) {
+				throw new StatusException("001250", "orgId is wrong");
+			}
+		} else {
+			throw new StatusException("001253", "orgId and domainName are all null");
+		}
+
+		DynamicEnumManager manager = OrgProperty.getDynamicEnumManager();
+		DynamicEnum de = manager.getByName(key);
+		OrgPropertyEntity one = orgPropertyRepo.findByOrgIdAndKeyId(orgEntity.getId(), de.getId());
+
+		OrgPropertyCacheBean b = new OrgPropertyCacheBean();
+		b.setOrgId(orgId);
+		b.setKey(key);
+
+		if (null == one) {
+			b.setHasValue(false);
+			return b;
+		}
+
+		b.setValue(one.getValue());
+
+		return b;
+	}
+
+	@Override
+	protected String getKeyPrefix() {
+		return "B_ORG_PROP:";
+	}
+
+	@Override
+	protected int getTimeout() {
+		// 60分钟
+		return 60 * 60;
+	}
+
+}

+ 10 - 0
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/OrgServiceImpl.java

@@ -38,6 +38,7 @@ import cn.com.qmth.examcloud.core.basic.dao.enums.OrgProperty;
 import cn.com.qmth.examcloud.core.basic.service.OrgService;
 import cn.com.qmth.examcloud.core.basic.service.bean.OrgInfo;
 import cn.com.qmth.examcloud.core.basic.service.cache.OrgCache;
+import cn.com.qmth.examcloud.core.basic.service.cache.OrgPropertyCache;
 import cn.com.qmth.examcloud.core.basic.service.cache.RootOrgCache;
 import cn.com.qmth.examcloud.task.api.DataSyncCloudService;
 import cn.com.qmth.examcloud.task.api.request.SyncOrgReq;
@@ -76,6 +77,9 @@ public class OrgServiceImpl implements OrgService {
 	@Autowired
 	DataSyncCloudService dataSyncCloudService;
 
+	@Autowired
+	OrgPropertyCache orgPropertyCache;
+
 	private static final String[] EXCEL_HEADER = new String[]{"机构名称", "机构代码", "联系人", "联系电话"};
 
 	/*
@@ -273,6 +277,7 @@ public class OrgServiceImpl implements OrgService {
 		GlobalHelper.getPresentEntity(orgRepo, orgId, OrgEntity.class);
 
 		Map<DynamicEnum, String> map = checkAndGetOrgProperties(properties);
+
 		for (Entry<DynamicEnum, String> entry : map.entrySet()) {
 			DynamicEnum de = entry.getKey();
 			String value = entry.getValue();
@@ -290,6 +295,11 @@ public class OrgServiceImpl implements OrgService {
 
 			orgPropertyRepo.save(entity);
 		}
+
+		for (String key : properties.keySet()) {
+			orgPropertyCache.remove(orgId, key);
+		}
+
 	}
 
 	/**