1
This commit is contained in:
+2
-4
@@ -26,11 +26,9 @@ public class PlatformCustomerOverseasStorageFeeController {
|
||||
throw new com.baiyue.common.core.exception.BizException(
|
||||
com.baiyue.common.core.api.ResultCode.VALIDATION_FAILED, "客户ID与路径不一致");
|
||||
}
|
||||
if (request.tiers() == null || request.tiers().size() != 9
|
||||
|| request.tiers().stream().filter(t -> "STORAGE".equals(t.feeType())).count() != 5
|
||||
|| request.tiers().stream().filter(t -> "RETURN_STORAGE".equals(t.feeType())).count() != 4) {
|
||||
if (request.tiers() == null || request.tiers().isEmpty()) {
|
||||
throw new com.baiyue.common.core.exception.BizException(
|
||||
com.baiyue.common.core.api.ResultCode.VALIDATION_FAILED, "客户费用必须包含仓租5档和退货仓储费4档");
|
||||
com.baiyue.common.core.api.ResultCode.VALIDATION_FAILED, "客户费用至少需要包含1个档位");
|
||||
}
|
||||
OverseasStorageFeeDtos.View view = service.detailByTenant(tenantId);
|
||||
service.update(view.id(), request); return ApiResponse.success(null);
|
||||
|
||||
+26
@@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -127,6 +128,31 @@ class OverseasStorageFeeServiceTest {
|
||||
verify(repository, never()).updateRule(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void replacesExistingTiersWhenAddingOrRemovingAGroupTier() {
|
||||
OverseasStorageFeeRuleEntity rule = rule();
|
||||
when(repository.find(10L)).thenReturn(rule);
|
||||
List<OverseasStorageFeeDtos.TierRequest> tiers = List.of(
|
||||
typedTier("STORAGE", "CBM", 1, 30),
|
||||
typedTier("STORAGE", "CBM", 31, null),
|
||||
typedTier("RETURN_STORAGE", "PALLET", 1, 60),
|
||||
typedTier("RETURN_STORAGE", "PALLET", 61, null));
|
||||
OverseasStorageFeeDtos.UpdateRequest request = new OverseasStorageFeeDtos.UpdateRequest(
|
||||
10001L, "绀轰緥瀹㈡埛", "USD", tiers, 1);
|
||||
when(repository.updateRule(any())).thenReturn(1);
|
||||
|
||||
service.update(10L, request);
|
||||
|
||||
var calls = inOrder(repository);
|
||||
calls.verify(repository).updateRule(rule);
|
||||
calls.verify(repository).deleteTiers(10L);
|
||||
calls.verify(repository).insertTiers(org.mockito.ArgumentMatchers.argThat(saved ->
|
||||
saved.size() == 4
|
||||
&& saved.stream().filter(tier -> "STORAGE".equals(tier.getFeeType())).count() == 2
|
||||
&& saved.stream().filter(tier -> "RETURN_STORAGE".equals(tier.getFeeType())).count() == 2
|
||||
&& saved.stream().anyMatch(tier -> tier.getStartDay() == 31 && tier.getEndDay() == null)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void initializesNineDefaultTiersIdempotently() {
|
||||
doAnswer(invocation -> { OverseasStorageFeeRuleEntity rule = invocation.getArgument(0); rule.setId(77L); return null; })
|
||||
|
||||
Reference in New Issue
Block a user