Browse Source

Configs增加缓存

chenw 6 năm trước cách đây
mục cha
commit
7691a513b3

+ 5 - 0
applications/commons/commons-api/pom.xml

@@ -32,5 +32,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>auth-client</artifactId>
         </dependency>
+      <dependency>
+        <groupId>org.springframework.data</groupId>
+        <artifactId>spring-data-redis</artifactId>
+        <version>RELEASE</version>
+      </dependency>
     </dependencies>
 </project>

+ 18 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/ConfigsApi.java

@@ -0,0 +1,18 @@
+package com.usoftchina.saas.commons.api;
+
+import com.usoftchina.saas.auth.client.interceptor.ServiceFeignInterceptor;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.po.Configs;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+@FeignClient(name = "commons-server", configuration = ServiceFeignInterceptor.class)
+public interface ConfigsApi {
+
+    @GetMapping("/configs/list/{companyId}")
+    Result<List<Configs>> getConfigsByCompanyId(@PathVariable("companyId") Long companyId);
+
+}

+ 99 - 0
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/cache/ConfigsCache.java

@@ -0,0 +1,99 @@
+package com.usoftchina.saas.commons.cache;
+
+
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.cache.RedisHashCache;
+import com.usoftchina.saas.commons.api.ConfigsApi;
+import com.usoftchina.saas.commons.po.Configs;
+import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.context.SpringContextHolder;
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.utils.JsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Supplier;
+
+/**
+ * @Description 系统参数配置
+ * @Author chenwei
+ * @Date 2019/01/14
+ */
+public class ConfigsCache extends RedisHashCache<String, String, String> {
+
+    /**
+     * 企业ID
+     */
+    private Long id;
+
+    @Autowired
+    private ConfigsApi configsApi;
+
+    private static final RedisTemplate<String, String> REDIS_TEMPLATE = SpringContextHolder.getBean("redisTemplate", RedisTemplate.class);
+
+    public ConfigsCache() {
+        super(() -> REDIS_TEMPLATE);
+    }
+
+    public static ConfigsCache of(Long id){
+        ConfigsCache cache = new ConfigsCache();
+        cache.id = id;
+        return cache;
+    }
+
+    /**
+     * 当前企业的缓存信息
+     *
+     * @return
+     */
+    public static ConfigsCache current() {
+        return of(BaseContextHolder.getCompanyId());
+    }
+
+    @Override
+    protected String field() {
+        return String.valueOf("companyId:" + id);
+    }
+
+    @Override
+    protected String key() {
+        return generatePublicKey("common", "configs");
+    }
+
+    @Override
+    protected Supplier<String> getSupplier() {
+        return () -> {
+            if (null == configsApi) {
+                configsApi = SpringContextHolder.getBean(ConfigsApi.class);
+            }
+            Result<List<Configs>> result = null;
+            if (null != id && id > 0) {
+                result = configsApi.getConfigsByCompanyId(id);
+            } else {
+                return null;
+            }
+            if (result.isSuccess()) {
+                return JsonUtils.toJsonString(result.getData());
+            }
+            throw new BizException(result.getCode(), result.getMessage());
+        };
+    }
+
+    public List<Configs> getConfigs(){
+        Optional<String> value = get();
+        if (value.isPresent()){
+            return JsonUtils.fromJsonArray(value.get(), Configs.class);
+        }
+        return null;
+    }
+
+    /**
+     * 是否启用B2B
+     * @return
+     */
+    public boolean enableB2B(){
+        return getConfigs().stream().filter(configs -> "enableB2B".equals(configs.getCode()) && "1".equals(configs.getData())).count() > 0;
+    }
+}

+ 5 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/ConfigsController.java

@@ -29,6 +29,11 @@ public class ConfigsController {
         return Result.success(listData);
     }
 
+    @GetMapping("/list/{companyId}")
+    public Result<List<Configs>> getListByConmapyId(@PathVariable("companyId") Long companyId){
+        return Result.success(configsService.getListByConmapyId(companyId));
+    }
+
     @GetMapping("/getConfigByCode")
     public Result<Configs> getConfigByCode(String code) {
         Configs data = configsService.getConfigByCode(code);

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/ConfigsService.java

@@ -16,4 +16,6 @@ public interface ConfigsService {
     DocBaseDTO save(Configs data);
 
     void update(List<Configs> data);
+
+    List<Configs> getListByConmapyId(Long companyId);
 }

+ 5 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ConfigsServiceImpl.java

@@ -45,6 +45,11 @@ public class ConfigsServiceImpl implements ConfigsService{
         return pageInfo;
     }
 
+    @Override
+    public List<Configs> getListByConmapyId(Long companyId){
+        return configsMapper.selectByCondition(null, companyId);
+    }
+
     @Override
     public Configs getConfigByCode(String code) {
         if (StringUtils.isEmpty(code)) {