import cn.reghao.dfs.store.DfsStoreApplication; import cn.reghao.dfs.store.db.mapper.DataBlockMapper; import cn.reghao.dfs.store.db.mapper.FileContentMapper; import cn.reghao.dfs.store.db.mapper.FileMetaMapper; import cn.reghao.dfs.store.model.po.DataBlock; import cn.reghao.dfs.store.model.po.FileContent; import cn.reghao.dfs.store.model.po.FileMeta; import cn.reghao.dfs.store.model.vo.ObjectMeta; import cn.reghao.dfs.store.redis.ds.RedisString; import cn.reghao.dfs.store.redis.ds.RedisStringObj; import cn.reghao.jutil.jdk.db.Page; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * @author reghao * @date 2023-03-22 16:19:12 */ @Slf4j @ActiveProfiles("dev") @SpringBootTest(classes = DfsStoreApplication.class) @RunWith(SpringRunner.class) public class RedisTest { String key = "dfs:store:object:"; @Autowired RedisStringObj redisString; @Autowired FileMetaMapper fileMetaMapper; @Autowired DataBlockMapper dataBlockMapper; @Test public void test() { int total = fileMetaMapper.count(); List list = fileMetaMapper.findAll(); list.forEach(fileMeta -> { String objectName = fileMeta.getObjectName(); String key1 = key + objectName; redisString.set(key1, fileMeta); }); } @Test public void test1() { int pageSize = 10000; int pageNumber = 1; Page page = new Page(pageNumber, pageSize); List list = fileMetaMapper.findObjectMetaByPage(page); while (!list.isEmpty()) { list.forEach(objectMeta -> { /*List list1 = dataBlockMapper.findByObjectId(objectMeta.getObjectId()); if (list1.isEmpty()) { return; }* String absolutePath = list1.get(0).getAbsolutePath(); objectMeta.setAbsolutePath(absolutePath);*/ String objectName = objectMeta.getObjectName(); String key1 = key + objectName; redisString.set(key1, objectMeta); }); pageNumber++; page = new Page(pageNumber, pageSize); list = fileMetaMapper.findObjectMetaByPage(page); log.info("page -> {}", pageNumber); } } @Autowired FileContentMapper fileContentMapper; @Test public void test2() { List list = fileMetaMapper.findAll(); list.forEach(fileMeta -> { String objectId = fileMeta.getObjectId(); List list1 = dataBlockMapper.findByObjectId(objectId); if (list1.isEmpty()) { log.info("{} 为空", objectId); return; } DataBlock dataBlock = list1.get(0); String contentId = UUID.randomUUID().toString().replace("-", ""); FileContent fileContent = new FileContent(contentId, objectId); dataBlock.setContentId(contentId); fileContentMapper.save(fileContent); dataBlockMapper.updateContentId(objectId, contentId); }); } @Test public void test3() { List list = fileMetaMapper.findAll(); list.forEach(fileMeta -> { String objectId = fileMeta.getObjectId(); String objectName = fileMeta.getObjectName(); ObjectMeta objectMeta = fileMetaMapper.findObjectMeta1(objectName); System.out.println(); }); } @Test public void test4() { String objectName = "audio/playback/rZ7EKPbG41.mp3"; List list = getParent(objectName); List fileMetas = new ArrayList<>(); list.forEach(parentName -> { FileMeta fileMeta = fileMetaMapper.findByObjectName(parentName); if (fileMeta == null) { fileMetas.add(new FileMeta(parentName, 2)); } }); if (!fileMetas.isEmpty()) { fileMetaMapper.saveAll(fileMetas); } } void addParent(String objectName) { List list = getParent(objectName); List fileMetas = new ArrayList<>(); list.forEach(parentName -> { FileMeta fileMeta = fileMetaMapper.findByObjectName(parentName); if (fileMeta == null) { fileMetas.add(new FileMeta(parentName, 2)); } }); if (!fileMetas.isEmpty()) { fileMetaMapper.saveAll(fileMetas); } } List getParent(String objectName) { String[] arr = objectName.split("/"); List list = new ArrayList<>(); list.add(arr[0] + "/"); for (int i = 1; i < arr.length-1; i++) { list.add(list.get(i-1) + arr[i] + "/"); } return list; } private String getUrl(String objectName) { String domain = "https://oss.reghao.cn/"; StringBuilder sb = new StringBuilder(); sb.append("?").append("Expires=").append("") .append("&OSSAccessId=").append("") .append("&Signature=").append(""); return domain + objectName + sb.toString(); } }