diff --git a/src/main/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationService.java b/src/main/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationService.java index 4819a6d..2f10402 100644 --- a/src/main/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationService.java +++ b/src/main/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationService.java @@ -154,12 +154,9 @@ public class CommercialBankIssuanceApplicationService { } @Transactional(readOnly = true) - public CommercialBankInventoryView getInventory(String bankCode) { - if (bankCode == null) { - throw new BusinessException(ErrorCode.VALIDATION_ERROR, "bank code must not be null"); - } - IssuanceBankInventory inventory = repository.findInventoryByBankCode(bankCode).orElseThrow(() -> - new BusinessException(ErrorCode.RESOURCE_NOT_FOUND, "issuance bank inventory was not found: " + bankCode)); + public CommercialBankInventoryView getInventory() { + IssuanceBankInventory inventory = repository.findBuiltInInventory().orElseThrow(() -> + new BusinessException(ErrorCode.RESOURCE_NOT_FOUND, "built-in issuance inventory was not found")); return new CommercialBankInventoryView(inventory.getBankCode(), inventory.getCurrentBalance(), inventory.getWarningThreshold(), inventory.getSuggestedSupplementAmount()); } diff --git a/src/main/java/com/yau/digitalrmb/issuance/domain/repository/IssuanceRequestRepository.java b/src/main/java/com/yau/digitalrmb/issuance/domain/repository/IssuanceRequestRepository.java index ef874ed..38637e4 100644 --- a/src/main/java/com/yau/digitalrmb/issuance/domain/repository/IssuanceRequestRepository.java +++ b/src/main/java/com/yau/digitalrmb/issuance/domain/repository/IssuanceRequestRepository.java @@ -15,5 +15,5 @@ public interface IssuanceRequestRepository { Optional findById(IssuanceApplicationId id); - Optional findInventoryByBankCode(String bankCode); + Optional findBuiltInInventory(); } diff --git a/src/main/java/com/yau/digitalrmb/issuance/infrastructure/persistence/repository/MybatisIssuanceRequestRepository.java b/src/main/java/com/yau/digitalrmb/issuance/infrastructure/persistence/repository/MybatisIssuanceRequestRepository.java index 6bf4a69..1394146 100644 --- a/src/main/java/com/yau/digitalrmb/issuance/infrastructure/persistence/repository/MybatisIssuanceRequestRepository.java +++ b/src/main/java/com/yau/digitalrmb/issuance/infrastructure/persistence/repository/MybatisIssuanceRequestRepository.java @@ -27,6 +27,7 @@ import java.util.UUID; @Repository public class MybatisIssuanceRequestRepository implements IssuanceRequestRepository { + private static final String BUILT_IN_INVENTORY_BANK_CODE = "BKCHCNBJ00001"; private final IssuanceRequestMapper requestMapper; private final IssuanceRequestDenominationMapper denominationMapper; private final IssuanceBankInventoryMapper inventoryMapper; @@ -98,8 +99,8 @@ public class MybatisIssuanceRequestRepository implements IssuanceRequestReposito } @Override - public Optional findInventoryByBankCode(String bankCode) { - IssuanceBankInventoryEntity inventory = inventoryMapper.selectById(bankCode); + public Optional findBuiltInInventory() { + IssuanceBankInventoryEntity inventory = inventoryMapper.selectById(BUILT_IN_INVENTORY_BANK_CODE); if (inventory == null) { return Optional.empty(); } diff --git a/src/main/java/com/yau/digitalrmb/issuance/interfaces/rest/CommercialBankIssuanceController.java b/src/main/java/com/yau/digitalrmb/issuance/interfaces/rest/CommercialBankIssuanceController.java index fc0ec6a..6991ad0 100644 --- a/src/main/java/com/yau/digitalrmb/issuance/interfaces/rest/CommercialBankIssuanceController.java +++ b/src/main/java/com/yau/digitalrmb/issuance/interfaces/rest/CommercialBankIssuanceController.java @@ -28,7 +28,7 @@ public class CommercialBankIssuanceController { private final CommercialBankIssuanceApplicationService service; public CommercialBankIssuanceController(CommercialBankIssuanceApplicationService service){this.service=service;} @GetMapping("/inventory") @Operation(summary="查询货币需求信息", description="商业银行端查询库存余额、预警阈值和建议补充金额") - public ApiResponse inventory(@RequestParam String bankCode){return ok(service.getInventory(bankCode));} + public ApiResponse inventory(){return ok(service.getInventory());} @PostMapping("/requests") @Operation(summary="创建发行申请", description="商业银行端创建数字货币发行申请草稿") public ApiResponse create(@Valid @RequestBody CreateIssuanceRequest request,@AuthenticationPrincipal Jwt jwt){return ok(service.create(new CreateIssuanceRequestCommand(request.getBankCode(),request.getOrganizationId(),request.getTotalAmount(),request.getCurrency(),items(request.getDenominations())),actor(jwt)));} @PutMapping("/requests/{id}") @Operation(summary="更新发行申请", description="商业银行端仅可更新草稿状态的发行申请") diff --git a/src/test/java/com/yau/digitalrmb/issuance/application/service/CentralBankIssuanceQueryServiceTest.java b/src/test/java/com/yau/digitalrmb/issuance/application/service/CentralBankIssuanceQueryServiceTest.java index 0d70fc0..761a128 100644 --- a/src/test/java/com/yau/digitalrmb/issuance/application/service/CentralBankIssuanceQueryServiceTest.java +++ b/src/test/java/com/yau/digitalrmb/issuance/application/service/CentralBankIssuanceQueryServiceTest.java @@ -68,7 +68,7 @@ class CentralBankIssuanceQueryServiceTest { } @Override - public Optional findInventoryByBankCode(String bankCode) { + public Optional findBuiltInInventory() { return Optional.empty(); } } diff --git a/src/test/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationServiceTest.java b/src/test/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationServiceTest.java index 6aa1d88..ff83817 100644 --- a/src/test/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationServiceTest.java +++ b/src/test/java/com/yau/digitalrmb/issuance/application/service/CommercialBankIssuanceApplicationServiceTest.java @@ -101,7 +101,7 @@ class CommercialBankIssuanceApplicationServiceTest { } @Override - public Optional findInventoryByBankCode(String bankCode) { + public Optional findBuiltInInventory() { return Optional.empty(); } } diff --git a/src/test/java/com/yau/digitalrmb/issuance/infrastructure/persistence/MybatisIssuanceRequestRepositoryTest.java b/src/test/java/com/yau/digitalrmb/issuance/infrastructure/persistence/MybatisIssuanceRequestRepositoryTest.java index 8d49820..6490d42 100644 --- a/src/test/java/com/yau/digitalrmb/issuance/infrastructure/persistence/MybatisIssuanceRequestRepositoryTest.java +++ b/src/test/java/com/yau/digitalrmb/issuance/infrastructure/persistence/MybatisIssuanceRequestRepositoryTest.java @@ -71,7 +71,7 @@ class MybatisIssuanceRequestRepositoryTest { @Test void readsSuggestedAmountAsThresholdMinusCurrentBalance() { - IssuanceBankInventory inventory = repository.findInventoryByBankCode("BKCHCNBJ00001") + IssuanceBankInventory inventory = repository.findBuiltInInventory() .orElseThrow(() -> new AssertionError("seeded bank inventory was not found")); assertThat(inventory.getCurrentBalance()).isEqualByComparingTo("49950000.00"); @@ -79,21 +79,6 @@ class MybatisIssuanceRequestRepositoryTest { assertThat(inventory.getSuggestedSupplementAmount()).isEqualByComparingTo("50000.00"); } - @Test - void clampsSuggestedAmountToZeroWhenBalanceExceedsThreshold() { - IssuanceBankInventoryEntity inventory = new IssuanceBankInventoryEntity(); - inventory.setBankCode("BKCLAMP00001"); - inventory.setCurrentBalance(new BigDecimal("60000000.00")); - inventory.setWarningThreshold(new BigDecimal("50000000.00")); - inventory.setUpdatedAt(java.time.LocalDateTime.now()); - inventoryMapper.insert(inventory); - - IssuanceBankInventory restored = repository.findInventoryByBankCode("BKCLAMP00001") - .orElseThrow(() -> new AssertionError("inventory was not restored")); - - assertThat(restored.getSuggestedSupplementAmount()).isEqualByComparingTo("0.00"); - } - @Test void savingChangedDraftReplacesRatherThanAccumulatesDenominations() { UUID id = UUID.randomUUID(); diff --git a/src/test/java/com/yau/digitalrmb/issuance/interfaces/rest/IssuanceControllerTest.java b/src/test/java/com/yau/digitalrmb/issuance/interfaces/rest/IssuanceControllerTest.java index cc3d6a0..1a9045c 100644 --- a/src/test/java/com/yau/digitalrmb/issuance/interfaces/rest/IssuanceControllerTest.java +++ b/src/test/java/com/yau/digitalrmb/issuance/interfaces/rest/IssuanceControllerTest.java @@ -52,6 +52,16 @@ class IssuanceControllerTest { .andExpect(status().isOk()).andExpect(jsonPath("$.data.receiveStatus").value("RECEIVED")); } + @Test + void readsBuiltInCurrencyDemandWithoutRequestParameters() throws Exception { + mockMvc.perform(get("/api/v1/commercial-banks/issuance/inventory") + .with(jwt().jwt(jwt -> jwt.subject("487").claim("preferred_username", "tzs001")))) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.currentBalance").value(49950000.00)) + .andExpect(jsonPath("$.data.warningThreshold").value(50000000.00)) + .andExpect(jsonPath("$.data.suggestedSupplementAmount").value(50000.00)); + } + @Test void swaggerDocumentsBothChineseIssuanceEnds() throws Exception { String apiDocs = new String(mockMvc.perform(get("/v3/api-docs"))