Prechádzať zdrojové kódy

feat(config): 添加风险控制配置属性并支持动态刷新- 在 AlienSecondApplication 中启用 properties 配置扫描
- 为 ImageModerationUtil 添加 @RefreshScope 支持配置动态刷新
- 引入 spring-cloud-context 依赖以支持配置刷新功能
- 新增 RiskControlProperties 配置类用于管理风控规则- 配置项包括洗钱嫌疑、账号异常、交易欺诈和异常发布规则- 所有配置项均提供默认值并可通过配置文件覆盖

wxd 1 mesiac pred
rodič
commit
a45b1ce30a

+ 70 - 0
alien-config/src/main/java/shop/alien/config/properties/RiskControlProperties.java

@@ -0,0 +1,70 @@
+package shop.alien.config.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@RefreshScope
+@ConfigurationProperties(prefix = "risk-control")
+public class RiskControlProperties {
+
+    /**
+     * 洗钱嫌疑规则配置
+     */
+    private MoneyLaundering moneyLaundering = new MoneyLaundering();
+
+    /**
+     * 账号异常规则配置
+     */
+    private AccountAbnormal accountAbnormal = new AccountAbnormal();
+
+    /**
+     * 交易欺诈规则配置
+     */
+    private TradeFraud tradeFraud = new TradeFraud();
+
+    /**
+     * 异常发布规则配置
+     */
+    private AbnormalPublish abnormalPublish = new AbnormalPublish();
+
+    @Data
+    public static class MoneyLaundering {
+        /**
+         * 每天交易次数阈值
+         */
+        private int dailyCount = 5;
+
+        /**
+         * 每笔交易金额阈值(元)
+         */
+        private double amountThreshold = 200.0;
+    }
+
+    @Data
+    public static class AccountAbnormal {
+        /**
+         * 24小时内同一设备/mac注册账号数量阈值
+         */
+        private int regCount24h = 3;
+    }
+
+    @Data
+    public static class TradeFraud {
+        /**
+         * 24小时内发布成功记录次数阈值
+         */
+        private int publishCount24h = 3;
+    }
+
+    @Data
+    public static class AbnormalPublish {
+        /**
+         * 24小时内发布同类商品数量阈值
+         */
+        private int sameCategoryCount24h = 10;
+    }
+}

+ 1 - 0
alien-second/src/main/java/shop/alien/second/AlienSecondApplication.java

@@ -16,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
         "shop.alien.config.http",
         "shop.alien.config.databases",
         "shop.alien.config.feign",
+        "shop.alien.config.properties",
         "shop.alien.config.redis"})
 @MapperScan({
         "shop.alien.mapper",

+ 5 - 0
alien-util/pom.xml

@@ -323,6 +323,11 @@
             <version>3.17.4</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-context</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 2 - 0
alien-util/src/main/java/shop/alien/util/common/safe/ImageModerationUtil.java

@@ -8,6 +8,7 @@ import com.aliyun.teautil.models.RuntimeOptions;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
@@ -18,6 +19,7 @@ import java.util.UUID;
 
 @Slf4j
 @Component
+@RefreshScope
 public class ImageModerationUtil {
 
     @Value("${ali.yundun.accessKeyID}")