package com.tcm.training.admin.system.controller; import com.tcm.training.admin.common.ApiResponse; import com.tcm.training.admin.common.PageResponse; import com.tcm.training.admin.system.dto.SystemBannerBatchDeleteRequest; import com.tcm.training.admin.system.dto.SystemBannerPublishStatusRequest; import com.tcm.training.admin.system.dto.SystemBannerSaveRequest; import com.tcm.training.admin.system.service.SystemBannerAppService; import com.tcm.training.admin.system.vo.SystemBannerCourseOptionVO; import com.tcm.training.admin.system.vo.SystemBannerDetailVO; import com.tcm.training.admin.system.vo.SystemBannerListItemVO; import com.tcm.training.admin.system.vo.SystemBannerPublishStatusVO; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; @Validated @RestController @RequestMapping({"/api/v1", "/api"}) public class SystemBannerController { private final SystemBannerAppService systemBannerAppService; public SystemBannerController(SystemBannerAppService systemBannerAppService) { this.systemBannerAppService = systemBannerAppService; } @GetMapping("/system-banners") public ApiResponse> page( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "10") int pageSize, @RequestParam(required = false) String title, @RequestParam(required = false) Integer status) { return ApiResponse.ok(systemBannerAppService.page(page, pageSize, title, status)); } @GetMapping("/system-banners/{id}") public ApiResponse detail(@PathVariable("id") Long id) { return ApiResponse.ok(systemBannerAppService.detail(id)); } @PostMapping("/system-banners") public ApiResponse create(@Valid @RequestBody SystemBannerSaveRequest request) { return ApiResponse.ok(systemBannerAppService.create(request)); } @PutMapping("/system-banners/{id}") public ApiResponse update(@PathVariable("id") Long id, @Valid @RequestBody SystemBannerSaveRequest request) { return ApiResponse.ok(systemBannerAppService.update(id, request)); } @DeleteMapping("/system-banners/{id}") public ApiResponse delete(@PathVariable("id") Long id) { systemBannerAppService.delete(id); return ApiResponse.ok(null); } @DeleteMapping("/system-banners/batch") public ApiResponse batchDelete(@Valid @RequestBody SystemBannerBatchDeleteRequest request) { systemBannerAppService.batchDelete(request); return ApiResponse.ok(null); } @PatchMapping("/system-banners/{id}/publish-status") public ApiResponse patchPublishStatus(@PathVariable("id") Long id, @Valid @RequestBody SystemBannerPublishStatusRequest request) { return ApiResponse.ok(systemBannerAppService.patchPublishStatus(id, request)); } @GetMapping("/system-banners/health-course-options") public ApiResponse> healthCourseOptions(@RequestParam(required = false) String keyword) { return ApiResponse.ok(systemBannerAppService.healthCourseOptions(keyword)); } @GetMapping("/system-banners/live-course-options") public ApiResponse> liveCourseOptions(@RequestParam(required = false) String keyword) { return ApiResponse.ok(systemBannerAppService.liveCourseOptions(keyword)); } }