feat: implement automated Swiper slider seeding and integrate slider component into training details page
This commit is contained in:
@@ -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 ===");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user