package com.linhelp.notice; import com.linhelp.common.api.ApiResponse; import com.linhelp.common.security.AuthService; import com.linhelp.common.security.CurrentUser; import com.linhelp.common.security.RequireRole; 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.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; @RestController public class BannerController { private final BannerService bannerService; private final AuthService authService; public BannerController(BannerService bannerService, AuthService authService) { this.bannerService = bannerService; this.authService = authService; } @RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN"}) @GetMapping("/api/admin/banners") public ApiResponse> adminList() { CurrentUser user = authService.currentUser(); return ApiResponse.ok(bannerService.listAdmin(user.getCommunityId())); } @RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN"}) @PostMapping("/api/admin/banners") public ApiResponse create(@Valid @RequestBody BannerRequest request) { CurrentUser user = authService.currentUser(); request.setTenantId(user.getTenantId()); request.setCommunityId(user.getCommunityId()); return ApiResponse.ok(bannerService.create(request)); } @RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN"}) @PutMapping("/api/admin/banners/{id}") public ApiResponse update(@PathVariable Long id, @Valid @RequestBody BannerRequest request) { CurrentUser user = authService.currentUser(); request.setTenantId(user.getTenantId()); request.setCommunityId(user.getCommunityId()); return ApiResponse.ok(bannerService.update(id, request)); } @RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN"}) @DeleteMapping("/api/admin/banners/{id}") public ApiResponse delete(@PathVariable Long id) { bannerService.delete(id); return ApiResponse.ok(); } @GetMapping("/api/mini/banners") public ApiResponse> miniList() { return ApiResponse.ok(bannerService.listEnabled(1L)); } }