Files
LinHelp/backend/src/main/java/com/linhelp/notice/BannerController.java
2026-07-07 15:24:14 +08:00

65 lines
2.5 KiB
Java

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<List<BannerResponse>> adminList() {
CurrentUser user = authService.currentUser();
return ApiResponse.ok(bannerService.listAdmin(user.getCommunityId()));
}
@RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN"})
@PostMapping("/api/admin/banners")
public ApiResponse<BannerResponse> 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<BannerResponse> 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<Void> delete(@PathVariable Long id) {
bannerService.delete(id);
return ApiResponse.ok();
}
@GetMapping("/api/mini/banners")
public ApiResponse<List<BannerResponse>> miniList() {
return ApiResponse.ok(bannerService.listEnabled(1L));
}
}