diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/PositionNameFormatProcess.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/PositionNameFormatProcess.java index 7995736d4..177d544f7 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/PositionNameFormatProcess.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/PositionNameFormatProcess.java @@ -7,6 +7,8 @@ import cn.stylefeng.roses.kernel.sys.api.PositionServiceApi; /** * 职位名称的格式化 + *

+ * 采用职位名称缓存,加速获取 * * @author fengshuonan * @since 2023/7/15 21:58 diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/cache/PositionMemoryCache.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/cache/PositionMemoryCache.java new file mode 100644 index 000000000..db33db303 --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/cache/PositionMemoryCache.java @@ -0,0 +1,26 @@ +package cn.stylefeng.roses.kernel.sys.modular.position.cache; + +import cn.hutool.cache.impl.TimedCache; +import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator; +import cn.stylefeng.roses.kernel.sys.modular.position.constants.PositionConstants; + +/** + * 职位信息缓存 + *

+ * key是职位id,value是职位名称 + * + * @author fengshuonan + * @since 2025/1/10 14:10 + */ +public class PositionMemoryCache extends AbstractMemoryCacheOperator { + + public PositionMemoryCache(TimedCache timedCache) { + super(timedCache); + } + + @Override + public String getCommonKeyPrefix() { + return PositionConstants.POSITION_CACHE_PREFIX; + } + +} \ No newline at end of file diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/cache/PositionRedisCache.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/cache/PositionRedisCache.java new file mode 100644 index 000000000..4fc84e33b --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/cache/PositionRedisCache.java @@ -0,0 +1,26 @@ +package cn.stylefeng.roses.kernel.sys.modular.position.cache; + +import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator; +import cn.stylefeng.roses.kernel.sys.modular.position.constants.PositionConstants; +import org.springframework.data.redis.core.RedisTemplate; + +/** + * 职位信息缓存 + *

+ * key是职位id,value是职位名称 + * + * @author fengshuonan + * @since 2025/1/10 14:10 + */ +public class PositionRedisCache extends AbstractRedisCacheOperator { + + public PositionRedisCache(RedisTemplate redisTemplate) { + super(redisTemplate); + } + + @Override + public String getCommonKeyPrefix() { + return PositionConstants.POSITION_CACHE_PREFIX; + } + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/constants/PositionConstants.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/constants/PositionConstants.java new file mode 100644 index 000000000..d297e42fe --- /dev/null +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/constants/PositionConstants.java @@ -0,0 +1,40 @@ +/* + * Copyright [2020-2030] [https://www.stylefeng.cn] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Guns源码头部的版权声明。 + * 3.请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns + * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns + * 6.若您的项目无法满足以上几点,可申请商业授权 + */ +package cn.stylefeng.roses.kernel.sys.modular.position.constants; + +/** + * 职位缓存 + * + * @author fengshuonan + * @since 2025/1/10 14:14 + */ +public interface PositionConstants { + + /** + * 职位缓存前缀 + */ + String POSITION_CACHE_PREFIX = "SYS:POSITION:INFO:"; + +} diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java index 1628b3ecd..5ba9b3c8a 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/position/service/impl/HrPositionServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; +import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; @@ -21,6 +22,7 @@ import cn.stylefeng.roses.kernel.sys.modular.position.service.HrPositionService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -38,6 +40,9 @@ import java.util.Set; @Service public class HrPositionServiceImpl extends ServiceImpl implements HrPositionService { + @Resource(name = "positionNameCache") + private CacheOperatorApi positionNameCache; + @Override public void add(HrPositionRequest hrPositionRequest) { HrPosition hrPosition = new HrPosition(); @@ -96,6 +101,9 @@ public class HrPositionServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(HrPosition::getPositionId, positionId); queryWrapper.select(HrPosition::getPositionName); @@ -153,6 +167,7 @@ public class HrPositionServiceImpl extends ServiceImpl positionNameCache() { + TimedCache cache = CacheUtil.newTimedCache(1000 * SysConstants.DEFAULT_SYS_CACHE_TIMEOUT_SECONDS); + return new PositionMemoryCache(cache); + } + +} diff --git a/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/position/PositionRedisCacheAutoConfiguration.java b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/position/PositionRedisCacheAutoConfiguration.java new file mode 100644 index 000000000..f3187617a --- /dev/null +++ b/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sys/starter/cache/position/PositionRedisCacheAutoConfiguration.java @@ -0,0 +1,58 @@ +/* + * Copyright [2020-2030] [https://www.stylefeng.cn] + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Guns源码头部的版权声明。 + * 3.请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns + * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns + * 6.若您的项目无法满足以上几点,可申请商业授权 + */ +package cn.stylefeng.roses.kernel.sys.starter.cache.position; + +import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; +import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil; +import cn.stylefeng.roses.kernel.sys.modular.position.cache.PositionRedisCache; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; + +/** + * 职位信息的缓存 + * + * @author fengshuonan + * @since 2025/1/10 14:18 + */ +@Configuration +@ConditionalOnClass(name = "org.springframework.data.redis.connection.RedisConnectionFactory") +public class PositionRedisCacheAutoConfiguration { + + /** + * 职位名称的缓存 + * + * @author fengshuonan + * @since 2025/1/10 14:23 + */ + @Bean + public CacheOperatorApi positionNameCache(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory); + return new PositionRedisCache(redisTemplate); + } + +} diff --git a/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories b/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories index b141f77fd..ef65f432a 100644 --- a/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -11,4 +11,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ cn.stylefeng.roses.kernel.sys.starter.cache.role.RoleMemoryCacheAutoConfiguration,\ cn.stylefeng.roses.kernel.sys.starter.cache.role.RoleRedisCacheAutoConfiguration,\ cn.stylefeng.roses.kernel.sys.starter.cache.menu.MenuCacheAutoConfiguration,\ - cn.stylefeng.roses.kernel.sys.starter.cache.menu.MenuRedisCacheAutoConfiguration + cn.stylefeng.roses.kernel.sys.starter.cache.menu.MenuRedisCacheAutoConfiguration,\ + cn.stylefeng.roses.kernel.sys.starter.cache.position.PositionMemoryCacheAutoConfiguration,\ + cn.stylefeng.roses.kernel.sys.starter.cache.position.PositionRedisCacheAutoConfiguration