Quellcode durchsuchen

增加机构信息缓存

宋悦 vor 7 Jahren
Ursprung
Commit
29b843fb9a

+ 1 - 1
core-api/src/main/java/cn/com/qmth/examcloud/service/core/api/OrgApi.java

@@ -89,7 +89,7 @@ public class OrgApi {
     @ApiOperation(value = "按ID查询机构", notes = "ID查询")
     @GetMapping("/{id}")
     public ResponseEntity<Org> getOrgById(@PathVariable Long id) {
-        return new ResponseEntity(orgRepo.findOne(id), HttpStatus.OK);
+        return new ResponseEntity(orgService.findOne(id), HttpStatus.OK);
     }
 
     @ApiOperation(value = "查询下属机构不带分页", notes = "不分页")

+ 19 - 0
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/OrgService.java

@@ -13,6 +13,7 @@ import cn.com.qmth.examcloud.service.core.enums.UserScope;
 import cn.com.qmth.examcloud.service.core.enums.UserType;
 import cn.com.qmth.examcloud.service.core.params.UserParam;
 import cn.com.qmth.examcloud.service.core.repo.ExamSiteRepo;
+import cn.com.qmth.examcloud.service.core.repo.memory.OrgMemRepo;
 import cn.com.qmth.examcloud.service.core.service.sync.DataSendService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +47,9 @@ public class OrgService {
 	@Autowired
 	DataSendService dataSendService;
 
+	@Autowired
+	OrgMemRepo orgMemRepo;
+
     @Transactional
 	public List<ExcelError> importLearnCenter(Long orgId, InputStream inputStream) {
 		ExcelReader excelReader = new ExcelReader(OrgDto.class);
@@ -205,6 +209,8 @@ public class OrgService {
 		org.setCreateTime(new Date());
 		Org reOrg = orgRepo.save(org);
 		dataSendService.sendOrg(reOrg);
+		//删除缓存
+		orgMemRepo.remove(reOrg.getId());
 		return reOrg;
 	}
 
@@ -223,7 +229,20 @@ public class OrgService {
 		org.setUpdateTime(new Date());
 		Org reOrg = orgRepo.save(org);
 		dataSendService.sendOrg(reOrg);
+		//删除缓存
+		orgMemRepo.remove(reOrg.getId());
 		return reOrg;
 	}
 
+	public Org findOne(Long id){
+		Org cacheOrg = orgMemRepo.get(id);
+		if(cacheOrg != null){
+			return cacheOrg;
+		}else{
+			Org org = orgRepo.findOne(id);
+			orgMemRepo.set(id,org);
+			return org;
+		}
+	}
+
 }

+ 6 - 3
core-api/src/main/java/cn/com/qmth/examcloud/service/core/service/UserService.java

@@ -56,6 +56,9 @@ public class UserService {
     @Autowired
     OrgRepo orgRepo;
 
+    @Autowired
+    OrgService orgService;
+
     @Autowired
     UserRoleRepo userRoleRepo;
 
@@ -313,7 +316,7 @@ public class UserService {
     public void createAccessUser(String token,User user,Long studentId)throws Exception{
         AccessUser accessUser = new AccessUser();
         Set<UserRole> userRoleSet = new HashSet<UserRole>(user.getUserRoles());
-        Org org = orgRepo.findOne(user.getRootOrgId());
+        Org org = orgService.findOne(user.getRootOrgId());
         Map<String,Set<String>> rolesMap = userRoleSet.stream()
                 .collect(Collectors.groupingBy(UserRole::getAppCode,
                         Collectors.mapping(UserRole::getRoleCode,Collectors.toSet())));
@@ -339,8 +342,8 @@ public class UserService {
      */
     public UserInfo getUserInfo(User user,String token)throws Exception{
         UserInfo userInfo = new UserInfo();
-        Org org = orgRepo.findOne(user.getOrgId());
-        Org rootOrg = orgRepo.findOne(user.getRootOrgId());
+        Org org = orgService.findOne(user.getOrgId());
+        Org rootOrg = orgService.findOne(user.getRootOrgId());
         userInfo.setUserId(user.getId());
         userInfo.setOrgId(user.getOrgId());
         userInfo.setRootOrgId(user.getRootOrgId());

+ 17 - 0
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/repo/BaseMemRepository.java

@@ -0,0 +1,17 @@
+package cn.com.qmth.examcloud.service.core.repo;
+
+import org.springframework.data.repository.Repository;
+
+import java.io.Serializable;
+
+/**
+ * Created by songyue on 18/1/19.
+ */
+public interface BaseMemRepository<T, ID extends Serializable> extends Repository<T, ID> {
+
+    void set(ID id, T entity);
+
+    T get(ID id);
+
+    void remove(ID id);
+}

+ 30 - 0
core-domain/src/main/java/cn/com/qmth/examcloud/service/core/repo/memory/OrgMemRepo.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.examcloud.service.core.repo.memory;
+
+import cn.com.qmth.examcloud.service.core.entity.Org;
+import cn.com.qmth.examcloud.service.core.repo.BaseMemRepository;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Created by songyue on 18/1/22.
+ */
+public class OrgMemRepo implements BaseMemRepository<Org,Long>{
+
+    private static final Map<Long,Org> orgMap = new ConcurrentHashMap<>(256);
+
+    @Override
+    public void set(Long id, Org entity) {
+        orgMap.put(id,entity);
+    }
+
+    @Override
+    public Org get(Long id) {
+        return orgMap.get(id);
+    }
+
+    @Override
+    public void remove(Long id) {
+        orgMap.remove(id);
+    }
+}