优化
This commit is contained in:
+87
@@ -0,0 +1,87 @@
|
||||
package com.baiyue.lastleg.financefee.controller;
|
||||
|
||||
import com.baiyue.common.core.api.ApiResponse;
|
||||
import com.baiyue.common.security.AuthenticatedUser;
|
||||
import com.baiyue.lastleg.financefee.dto.OverseasFeeSourceDtos.ActionRequest;
|
||||
import com.baiyue.lastleg.financefee.dto.OverseasFeeSourceDtos.AdjustRequest;
|
||||
import com.baiyue.lastleg.financefee.dto.OverseasFeeSourceDtos.ReviewRequest;
|
||||
import com.baiyue.lastleg.financefee.dto.OverseasFeeSourceDtos.SaveRequest;
|
||||
import com.baiyue.lastleg.financefee.dto.OverseasFeeSourceDtos.VoidRequest;
|
||||
import com.baiyue.lastleg.financefee.entity.OverseasFeeSource;
|
||||
import com.baiyue.lastleg.financefee.service.OverseasFeeSourceService;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
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.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/platform/v1/last-leg/finance-fee-sources")
|
||||
public class PlatformOverseasFeeSourceController {
|
||||
private final OverseasFeeSourceService service;
|
||||
|
||||
@GetMapping
|
||||
@PreAuthorize("hasAuthority('platform:finance:customer-arap:list')")
|
||||
public ApiResponse<List<OverseasFeeSource>> list(@AuthenticationPrincipal AuthenticatedUser user,
|
||||
@RequestParam(required = false) String customerId,
|
||||
@RequestParam(required = false) String businessType,
|
||||
@RequestParam(required = false) String businessNo) {
|
||||
requirePlatform(user); return ApiResponse.success(service.list(customerId, businessType, businessNo));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('platform:finance:fee-source:edit')")
|
||||
public ApiResponse<OverseasFeeSource> create(@AuthenticationPrincipal AuthenticatedUser user,
|
||||
@RequestHeader("Idempotency-Key") String key, @Valid @RequestBody SaveRequest request) {
|
||||
requirePlatform(user); return ApiResponse.success(service.create(operator(user), key, request));
|
||||
}
|
||||
|
||||
@PostMapping("/{sourceFeeId}/submit")
|
||||
@PreAuthorize("hasAuthority('platform:finance:fee-source:edit')")
|
||||
public ApiResponse<OverseasFeeSource> submit(@AuthenticationPrincipal AuthenticatedUser user,
|
||||
@PathVariable long sourceFeeId, @Valid @RequestBody ActionRequest request) {
|
||||
requirePlatform(user); return ApiResponse.success(service.submit(sourceFeeId, operator(user), request.idempotencyKey()));
|
||||
}
|
||||
|
||||
@PostMapping("/{sourceFeeId}/review")
|
||||
@PreAuthorize("hasAuthority('platform:finance:fee-source:review')")
|
||||
public ApiResponse<OverseasFeeSource> review(@AuthenticationPrincipal AuthenticatedUser user,
|
||||
@PathVariable long sourceFeeId, @Valid @RequestBody ReviewRequest request) {
|
||||
requirePlatform(user); return ApiResponse.success(service.review(sourceFeeId, operator(user), request));
|
||||
}
|
||||
|
||||
@PostMapping("/{sourceFeeId}/adjust")
|
||||
@PreAuthorize("hasAuthority('platform:finance:fee-source:edit')")
|
||||
public ApiResponse<OverseasFeeSource> adjust(@AuthenticationPrincipal AuthenticatedUser user,
|
||||
@PathVariable long sourceFeeId, @Valid @RequestBody AdjustRequest request) {
|
||||
requirePlatform(user); return ApiResponse.success(service.adjust(sourceFeeId, operator(user), request));
|
||||
}
|
||||
|
||||
@PostMapping("/{sourceFeeId}/void")
|
||||
@PreAuthorize("hasAuthority('platform:finance:fee-source:review')")
|
||||
public ApiResponse<OverseasFeeSource> voidSource(@AuthenticationPrincipal AuthenticatedUser user,
|
||||
@PathVariable long sourceFeeId, @Valid @RequestBody VoidRequest request) {
|
||||
requirePlatform(user); return ApiResponse.success(service.voidSource(sourceFeeId, operator(user), request));
|
||||
}
|
||||
|
||||
private static void requirePlatform(AuthenticatedUser user) {
|
||||
if (user == null || user.tenantId() == null) throw new ResponseStatusException(HttpStatus.UNAUTHORIZED);
|
||||
if (!"PLATFORM".equals(user.appCode()) || user.tenantId() != 0L)
|
||||
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "Platform identity is required");
|
||||
}
|
||||
private static String operator(AuthenticatedUser user) {
|
||||
return user.userId() == null ? user.username() : String.valueOf(user.userId());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user