补齐第二期流水模型参数映射
This commit is contained in:
@@ -35,7 +35,10 @@ public class BankTagRuleConfigResolver {
|
||||
Map.entry("FOREX_SELL_AMT", Set.of("SINGLE_SETTLEMENT_AMOUNT")),
|
||||
Map.entry("WITHDRAW_CNT", Set.of("WITHDRAW_CNT")),
|
||||
Map.entry("STOCK_TFR_LARGE", Set.of("STOCK_TFR_LARGE")),
|
||||
Map.entry("LARGE_STOCK_TRADING", Set.of("STOCK_TFR_LARGE"))
|
||||
Map.entry("LARGE_STOCK_TRADING", Set.of("STOCK_TFR_LARGE")),
|
||||
Map.entry("MULTI_PARTY_GAMBLING_TRANSFER", Set.of("MULTI_PARTY_AMT_MIN", "MULTI_PARTY_AMT_MAX")),
|
||||
Map.entry("MONTHLY_FIXED_INCOME", Set.of("MONTHLY_FIXED_INCOME")),
|
||||
Map.entry("FIXED_COUNTERPARTY_TRANSFER", Set.of("FIXED_COUNTERPARTY_TRANSFER_MIN", "FIXED_COUNTERPARTY_TRANSFER_MAX"))
|
||||
);
|
||||
|
||||
@Resource
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.slf4j.LoggerFactory;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertAll;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -163,6 +164,52 @@ class BankTagRuleConfigResolverTest {
|
||||
assertRuleHasNoThresholds("SUSPICIOUS_PURCHASE", "LARGE_PURCHASE_TRANSACTION");
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolve_shouldSupportPhaseTwoThresholdRulesAndKeepNoParamRulesEmpty() {
|
||||
CcdiProject project = new CcdiProject();
|
||||
project.setProjectId(40L);
|
||||
project.setConfigType("default");
|
||||
when(projectMapper.selectById(40L)).thenReturn(project);
|
||||
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "SUSPICIOUS_GAMBLING")).thenReturn(List.of(
|
||||
buildParam("SUSPICIOUS_GAMBLING", "MULTI_PARTY_AMT_MIN", "500"),
|
||||
buildParam("SUSPICIOUS_GAMBLING", "MULTI_PARTY_AMT_MAX", "5000")
|
||||
));
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "SUSPICIOUS_PART_TIME")).thenReturn(List.of(
|
||||
buildParam("SUSPICIOUS_PART_TIME", "MONTHLY_FIXED_INCOME", "5000"),
|
||||
buildParam("SUSPICIOUS_PART_TIME", "FIXED_COUNTERPARTY_TRANSFER_MIN", "3000"),
|
||||
buildParam("SUSPICIOUS_PART_TIME", "FIXED_COUNTERPARTY_TRANSFER_MAX", "15000")
|
||||
));
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "ABNORMAL_TRANSACTION")).thenReturn(List.of(
|
||||
buildParam("ABNORMAL_TRANSACTION", "IGNORED_PARAM", "999")
|
||||
));
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "SUSPICIOUS_PURCHASE")).thenReturn(List.of(
|
||||
buildParam("SUSPICIOUS_PURCHASE", "IGNORED_PARAM", "999")
|
||||
));
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "SUSPICIOUS_PROPERTY")).thenReturn(List.of(
|
||||
buildParam("SUSPICIOUS_PROPERTY", "IGNORED_PARAM", "999")
|
||||
));
|
||||
when(modelParamMapper.selectByProjectAndModel(0L, "ABNORMAL_BEHAVIOR")).thenReturn(List.of(
|
||||
buildParam("ABNORMAL_BEHAVIOR", "IGNORED_PARAM", "999")
|
||||
));
|
||||
|
||||
assertAll(
|
||||
() -> assertRuleThresholds("SUSPICIOUS_GAMBLING", "MULTI_PARTY_GAMBLING_TRANSFER",
|
||||
Map.of("MULTI_PARTY_AMT_MIN", "500", "MULTI_PARTY_AMT_MAX", "5000")),
|
||||
() -> assertRuleThresholds("SUSPICIOUS_PART_TIME", "MONTHLY_FIXED_INCOME",
|
||||
Map.of("MONTHLY_FIXED_INCOME", "5000")),
|
||||
() -> assertRuleThresholds("SUSPICIOUS_PART_TIME", "FIXED_COUNTERPARTY_TRANSFER",
|
||||
Map.of("FIXED_COUNTERPARTY_TRANSFER_MIN", "3000", "FIXED_COUNTERPARTY_TRANSFER_MAX", "15000")),
|
||||
() -> assertRuleHasNoThresholds("ABNORMAL_TRANSACTION", "LOW_INCOME_RELATIVE_LARGE_TRANSACTION"),
|
||||
() -> assertRuleHasNoThresholds("SUSPICIOUS_PURCHASE", "SUPPLIER_CONCENTRATION"),
|
||||
() -> assertRuleHasNoThresholds("SUSPICIOUS_PROPERTY", "HOUSE_REGISTRATION_MISMATCH"),
|
||||
() -> assertRuleHasNoThresholds("SUSPICIOUS_PROPERTY", "PROPERTY_FEE_REGISTRATION_MISMATCH"),
|
||||
() -> assertRuleHasNoThresholds("SUSPICIOUS_PROPERTY", "TAX_ASSET_REGISTRATION_MISMATCH"),
|
||||
() -> assertRuleHasNoThresholds("ABNORMAL_BEHAVIOR", "SALARY_QUICK_TRANSFER"),
|
||||
() -> assertRuleHasNoThresholds("ABNORMAL_BEHAVIOR", "SALARY_UNUSED")
|
||||
);
|
||||
}
|
||||
|
||||
private CcdiModelParam buildParam(String paramCode, String paramValue) {
|
||||
CcdiModelParam param = new CcdiModelParam();
|
||||
param.setProjectId(0L);
|
||||
@@ -201,6 +248,16 @@ class BankTagRuleConfigResolverTest {
|
||||
assertTrue(config.getThresholdValues().isEmpty());
|
||||
}
|
||||
|
||||
private void assertRuleThresholds(String modelCode, String ruleCode, Map<String, String> expectedThresholds) {
|
||||
CcdiBankTagRule ruleMeta = new CcdiBankTagRule();
|
||||
ruleMeta.setModelCode(modelCode);
|
||||
ruleMeta.setRuleCode(ruleCode);
|
||||
|
||||
BankTagRuleExecutionConfig config = resolver.resolve(40L, ruleMeta);
|
||||
|
||||
assertEquals(expectedThresholds, config.getThresholdValues());
|
||||
}
|
||||
|
||||
private CcdiModelParam buildParam(String modelCode, String paramCode, String paramValue) {
|
||||
CcdiModelParam param = new CcdiModelParam();
|
||||
param.setProjectId(0L);
|
||||
|
||||
Reference in New Issue
Block a user