You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
warehouse/src/main/java/com/yeqifu/sys/cache/CachePool.java

103 lines
3.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String, Object> 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<Dept> deptList = deptMapper.selectList(null);
for (Dept dept : deptList) {
// 将部门数据存入缓存容器
CACHE_CONTAINER.put("dept:" + dept.getId(), dept);
}
// 同步用户数据
UserMapper userMapper = SpringUtil.getBean(UserMapper.class);
List<User> userList = userMapper.selectList(null);
for (User user : userList) {
// 将用户数据存入缓存容器
CACHE_CONTAINER.put("user:" + user.getId(), user);
}
// 同步客户数据
CustomerMapper customerMapper = SpringUtil.getBean(CustomerMapper.class);
List<Customer> customerList = customerMapper.selectList(null);
for (Customer customer : customerList) {
// 将客户数据存入缓存容器
CACHE_CONTAINER.put("customer:" + customer.getId(), customer);
}
// 同步供应商数据
ProviderMapper providerMapper = SpringUtil.getBean(ProviderMapper.class);
List<Provider> providerList = providerMapper.selectList(null);
for (Provider provider : providerList) {
// 将供应商数据存入缓存容器
CACHE_CONTAINER.put("provider:" + provider.getId(), provider);
}
// 同步商品数据
GoodsMapper goodsMapper = SpringUtil.getBean(GoodsMapper.class);
List<Goods> goodsList = goodsMapper.selectList(null);
for (Goods goods : goodsList) {
// 将商品数据存入缓存容器
CACHE_CONTAINER.put("goods:" + goods.getId(), goods);
}
}
}