package com.yeqifu.sys.cache; import com.yeqifu.bus.entity.Customer; import com.yeqifu.bus.entity.Goods; import com.yeqifu.bus.entity.Provider; import com.yeqifu.bus.mapper.CustomerMapper; import com.yeqifu.bus.mapper.GoodsMapper; import com.yeqifu.bus.mapper.ProviderMapper; import com.yeqifu.sys.common.SpringUtil; import com.yeqifu.sys.entity.Dept; import com.yeqifu.sys.entity.User; import com.yeqifu.sys.mapper.DeptMapper; import com.yeqifu.sys.mapper.UserMapper; import java.util.HashMap; import java.util.List; import java.util.Map; /** * CachePool 类用于处理缓存操作,模拟类似 Redis 的缓存管理功能。 * 提供了添加缓存、删除缓存、清空缓存和同步缓存等功能。 * 主要用于缓存部门、用户、客户、供应商、商品等信息。 * * @Author: 落亦- * @Date: 2019/12/20 18:05 */ public class CachePool { /** * 缓存容器,用于存放所有缓存数据,键值对存储。 * 这个容器类似于 Redis,存储了不同实体的缓存数据。 */ public static volatile Map CACHE_CONTAINER = new HashMap<>(); /** * 根据指定的键删除缓存数据。 * * @param key 键,缓存的唯一标识符 */ public static void removeCacheByKey(String key) { // 判断缓存容器中是否包含指定的键 if (CACHE_CONTAINER.containsKey(key)) { // 删除指定键的缓存数据 CACHE_CONTAINER.remove(key); } } /** * 清空所有缓存数据。 * 该方法会清除缓存容器中的所有条目。 */ public static void removeAll() { // 清空缓存容器 CACHE_CONTAINER.clear(); } /** * 同步数据到缓存。 * 从数据库中获取部门、用户、客户、供应商、商品等数据,并将其放入缓存容器。 */ public static void syncData() { // 同步部门数据 DeptMapper deptMapper = SpringUtil.getBean(DeptMapper.class); List deptList = deptMapper.selectList(null); for (Dept dept : deptList) { // 将部门数据存入缓存容器 CACHE_CONTAINER.put("dept:" + dept.getId(), dept); } // 同步用户数据 UserMapper userMapper = SpringUtil.getBean(UserMapper.class); List userList = userMapper.selectList(null); for (User user : userList) { // 将用户数据存入缓存容器 CACHE_CONTAINER.put("user:" + user.getId(), user); } // 同步客户数据 CustomerMapper customerMapper = SpringUtil.getBean(CustomerMapper.class); List customerList = customerMapper.selectList(null); for (Customer customer : customerList) { // 将客户数据存入缓存容器 CACHE_CONTAINER.put("customer:" + customer.getId(), customer); } // 同步供应商数据 ProviderMapper providerMapper = SpringUtil.getBean(ProviderMapper.class); List providerList = providerMapper.selectList(null); for (Provider provider : providerList) { // 将供应商数据存入缓存容器 CACHE_CONTAINER.put("provider:" + provider.getId(), provider); } // 同步商品数据 GoodsMapper goodsMapper = SpringUtil.getBean(GoodsMapper.class); List goodsList = goodsMapper.selectList(null); for (Goods goods : goodsList) { // 将商品数据存入缓存容器 CACHE_CONTAINER.put("goods:" + goods.getId(), goods); } } }