package com.iplatform.base.config; import com.iplatform.base.CategoryCacheProvider; import com.iplatform.base.NotificationTemplateCache; import com.iplatform.base.PushCacheProvider; import com.iplatform.base.SystemGroupCache; import com.iplatform.base.UserCacheProvider; import com.iplatform.base.UserLoginCache; import com.iplatform.base.cache.LocalCaptchaCacheProvider; import com.iplatform.base.cache.LocalCategoryCacheProvider; import com.iplatform.base.cache.LocalDeptCacheProvider; import com.iplatform.base.cache.LocalHostCacheProvider; import com.iplatform.base.cache.LocalNotificationTemplateCache; import com.iplatform.base.cache.LocalPushCacheProvider; import com.iplatform.base.cache.LocalSystemGroupCache; import com.iplatform.base.cache.LocalUserCacheProvider; import com.iplatform.base.cache.LocalUserLoginCache; import com.iplatform.base.cache.LocalUserOnlineProvider; import com.iplatform.base.service.CategoryServiceImpl; import com.iplatform.base.service.ConfigArgumentServiceImpl; import com.iplatform.base.service.DeptServiceImpl; import com.iplatform.base.service.GroupServiceImpl; import com.iplatform.base.service.NotificationServiceImpl; import com.iplatform.base.service.UserServiceImpl; import com.iplatform.base.support.DatabaseArgumentsManager; import com.iplatform.model.po.S_host; import com.walker.cache.CacheProvider; import com.walker.jdbc.service.PubService; import com.walker.web.UserOnlineProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @ConditionalOnProperty(prefix = "iplatform.cache", name = "redis-enabled", havingValue = "false", matchIfMissing = true) //@ConditionalOnMissingClass("com.walker.support.redis.cache.RedisCacheProvider") public class LocalCacheConfig extends CacheConfiguration { /** * 通知提醒模板配置缓存。 * @param notificationService * @return * @date 2023-08-25 */ @Bean public NotificationTemplateCache notificationTemplateCache(NotificationServiceImpl notificationService){ LocalNotificationTemplateCache cache = new LocalNotificationTemplateCache(); cache.setNotificationService(notificationService); return cache; } /** * 用户登录记录缓存,用于判断登录策略。 * @return * @date 2023-07-11 */ @Bean public UserLoginCache userLoginCache(){ LocalUserLoginCache cache = new LocalUserLoginCache(); return cache; } @Bean public SystemGroupCache systemGroupCache(GroupServiceImpl groupService){ LocalSystemGroupCache cache = new LocalSystemGroupCache(); cache.setGroupService(groupService); return cache; } /** * 平台分类数据,本地缓存实现。 * @param categoryService * @return * @date 2023-05-17 */ @Bean public CategoryCacheProvider localCategoryCacheProvider(CategoryServiceImpl categoryService){ LocalCategoryCacheProvider categoryCacheProvider = new LocalCategoryCacheProvider(); categoryCacheProvider.setCategoryService(categoryService); return categoryCacheProvider; } /** * 推送提醒临时数据缓存定义。 * @return * @date 2023-04-27 */ @Bean public PushCacheProvider pushCacheProvider(){ return new LocalPushCacheProvider(); } @Bean public UserOnlineProvider userOnlineProvider(){ return new LocalUserOnlineProvider(); } @Bean("captchaCacheProvider") public CacheProvider cacheProviderCaptchaLocal(){ return new LocalCaptchaCacheProvider(); } /** * 创建基于内存的机构缓存管理器。 * @param deptService * @return * @date 2022-12-05 */ @Bean public LocalDeptCacheProvider localDeptCacheProvider(DeptServiceImpl deptService){ LocalDeptCacheProvider localDeptCacheProvider = new LocalDeptCacheProvider(); localDeptCacheProvider.setDeptService(deptService); return localDeptCacheProvider; } /** * 基于内存实现的 ArgumentsManager 管理器。 * @param configArgumentService * @return * @date 2022-11-29 */ @Bean public DatabaseArgumentsManager databaseArgumentsManager(ConfigArgumentServiceImpl configArgumentService){ DatabaseArgumentsManager databaseArgumentsManager = new DatabaseArgumentsManager(); databaseArgumentsManager.setConfigArgumentService(configArgumentService); return databaseArgumentsManager; } /** * 加载本地用户缓存 * @param userService * @return * @date 2022-11-06 */ @Bean public UserCacheProvider userCacheProviderForLocal(UserServiceImpl userService){ LocalUserCacheProvider localUserCacheProvider = new LocalUserCacheProvider(); localUserCacheProvider.setUserService(userService); return localUserCacheProvider; } /** * 默认加载缓存(内存方式) * @param pubService * @return * @throws Exception * @date 2022-09-20 */ @Bean public CacheProvider cacheProviderHostLocal(PubService pubService) throws Exception{ LocalHostCacheProvider localHostCacheProvider = new LocalHostCacheProvider(); localHostCacheProvider.setPubService(pubService); /** 注意:这里无需手动调用FactoryBean的初始化方法,spring会自动调用 2022-09-20 */ // hostLocalCacheProvider.afterPropertiesSet(); logger.info("初始化缓存: HostLocalCacheProvider"); return localHostCacheProvider; } // /** // * 如果存在配置项(打开redis缓存),同时存在包(walker-support-redis)则使用redis缓存对象。 // * @param pubService // * @return // * @throws Exception // * @date 2022-09-20 // */ // @Bean // @ConditionalOnProperty(prefix = "iplatform.cache", name = "redis-enabled", havingValue = "true", matchIfMissing = false) // @ConditionalOnClass({RedisCacheProvider.class}) // public CacheProvider cacheProviderHostRedis(PubService pubService) throws Exception{ // HostRedisCacheProvider hostRedisCacheProvider = new HostRedisCacheProvider(); // hostRedisCacheProvider.setPubService(pubService); //// hostRedisCacheProvider.afterPropertiesSet(); // logger.info("初始化缓存: HostRedisCacheProvider"); // return hostRedisCacheProvider; // } }