feat: implement automated Swiper slider seeding and integrate slider component into training details page

This commit is contained in:
2026-07-28 09:54:51 +07:00
parent bc27a9ea9c
commit 01a3b83672
23 changed files with 10726 additions and 230 deletions
@@ -0,0 +1,72 @@
package com.sisvietnamvn.web;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.sisvietnamvn.web.repository.PostRepository;
import com.sisvietnamvn.web.repository.TagRepository;
import com.sisvietnamvn.web.service.SettingService;
import com.sisvietnamvn.web.plugins.swiperslider.SwiperSliderAdminController.SliderGroup;
import com.sisvietnamvn.web.plugins.swiperslider.SwiperSliderAdminController.SliderItem;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
@SpringBootTest
public class SliderSeederTest {
@Autowired
private PostRepository postRepository;
@Autowired
private TagRepository tagRepository;
@Autowired
private SettingService settingService;
@Autowired
private ObjectMapper objectMapper;
@Test
public void testSeedSlider() throws Exception {
java.util.Optional<com.sisvietnamvn.web.domain.Tag> tagOpt = tagRepository.findByName("Đào tạo");
if (tagOpt.isEmpty()) {
java.util.List<com.sisvietnamvn.web.domain.Tag> possible = tagRepository.findByNameContainingIgnoreCase("Đào tạo");
if (!possible.isEmpty()) {
tagOpt = java.util.Optional.of(possible.get(0));
}
}
if (tagOpt.isEmpty()) {
System.out.println("Tag 'Đào tạo' not found!");
return;
}
java.util.List<com.sisvietnamvn.web.domain.Post> posts = postRepository.findByTagId(tagOpt.get().getId(), org.springframework.data.domain.PageRequest.of(0, 10));
java.util.List<SliderItem> items = posts.stream().map(post -> {
String imageUrl = post.getFeaturedImage() != null ? post.getFeaturedImage() : "";
String linkUrl = "/dao-tao/" + post.getSlug();
return new SliderItem(post.getTitle(), imageUrl, linkUrl, "");
}).collect(java.util.stream.Collectors.toList());
SliderGroup newGroup = new SliderGroup(
"chuong-trinh-khac",
"Chương trình khác",
"card",
"",
"",
"Tự động tạo từ thẻ " + tagOpt.get().getName(),
items
);
String json = settingService.getValue("plugin_swiper_slider_data", "[]");
java.util.List<SliderGroup> groups = new java.util.ArrayList<>();
try {
groups = objectMapper.readValue(json, new TypeReference<>() {});
} catch (Exception e) {}
groups.removeIf(g -> "chuong-trinh-khac".equals(g.slug()));
groups.add(newGroup);
String newJson = objectMapper.writeValueAsString(groups);
settingService.setValue("plugin_swiper_slider_data", newJson);
System.out.println("=== SWIPER SLIDER SEEDED SUCCESSFULLY ===");
}
}