补齐第二期流水模型参数映射
This commit is contained in:
@@ -35,7 +35,10 @@ public class BankTagRuleConfigResolver {
|
|||||||
Map.entry("FOREX_SELL_AMT", Set.of("SINGLE_SETTLEMENT_AMOUNT")),
|
Map.entry("FOREX_SELL_AMT", Set.of("SINGLE_SETTLEMENT_AMOUNT")),
|
||||||
Map.entry("WITHDRAW_CNT", Set.of("WITHDRAW_CNT")),
|
Map.entry("WITHDRAW_CNT", Set.of("WITHDRAW_CNT")),
|
||||||
Map.entry("STOCK_TFR_LARGE", Set.of("STOCK_TFR_LARGE")),
|
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
|
@Resource
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
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.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -163,6 +164,52 @@ class BankTagRuleConfigResolverTest {
|
|||||||
assertRuleHasNoThresholds("SUSPICIOUS_PURCHASE", "LARGE_PURCHASE_TRANSACTION");
|
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) {
|
private CcdiModelParam buildParam(String paramCode, String paramValue) {
|
||||||
CcdiModelParam param = new CcdiModelParam();
|
CcdiModelParam param = new CcdiModelParam();
|
||||||
param.setProjectId(0L);
|
param.setProjectId(0L);
|
||||||
@@ -201,6 +248,16 @@ class BankTagRuleConfigResolverTest {
|
|||||||
assertTrue(config.getThresholdValues().isEmpty());
|
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) {
|
private CcdiModelParam buildParam(String modelCode, String paramCode, String paramValue) {
|
||||||
CcdiModelParam param = new CcdiModelParam();
|
CcdiModelParam param = new CcdiModelParam();
|
||||||
param.setProjectId(0L);
|
param.setProjectId(0L);
|
||||||
|
|||||||
Reference in New Issue
Block a user