feat: 风险规则增加上传按钮+对应后端接口(七牛云)
This commit is contained in:
@@ -17,6 +17,7 @@ import java.util.Map;
|
||||
public class RiskRuleController {
|
||||
|
||||
private final RiskRuleService riskRuleService;
|
||||
private final com.par.core.storage.CachedStorageService storageService;
|
||||
|
||||
@GetMapping("/api/v1/risk-rules/{siteType}")
|
||||
public ResponseEntity<?> getRules(@PathVariable String siteType,
|
||||
@@ -38,6 +39,19 @@ public class RiskRuleController {
|
||||
return ApiResponse.success();
|
||||
}
|
||||
|
||||
/** 发布风险规则到云存储 */
|
||||
@PostMapping("/api/v1/risk-rules/{siteType}/upload")
|
||||
public ApiResponse<Void> uploadRules(@PathVariable String siteType,
|
||||
@RequestBody Map<String, Object> payload) {
|
||||
@SuppressWarnings("unchecked")
|
||||
var rules = (List<Map<String, Object>>) payload.get("rules");
|
||||
if (rules == null || rules.isEmpty()) return ApiResponse.error(400, "rules is required");
|
||||
riskRuleService.saveRules(siteType, rules);
|
||||
String json = new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(rules);
|
||||
storageService.store("rules/" + siteType + ".json", json);
|
||||
return ApiResponse.success();
|
||||
}
|
||||
|
||||
@GetMapping("/api/v1/admin/risk-rules")
|
||||
public ApiResponse<List<Map<String, Object>>> adminList(HttpServletRequest request) {
|
||||
checkAdmin(request);
|
||||
@@ -93,6 +107,19 @@ public class RiskRuleController {
|
||||
return ApiResponse.success();
|
||||
}
|
||||
|
||||
/** 发布默认风险规则到云存储 */
|
||||
@PostMapping("/api/v1/admin/default-rules/{type}/upload")
|
||||
public ApiResponse<Void> uploadDefaultRules(
|
||||
@PathVariable String type, @RequestBody Map<String, Object> payload, HttpServletRequest request) {
|
||||
checkAdmin(request);
|
||||
@SuppressWarnings("unchecked")
|
||||
var rules = (List<Map<String, Object>>) payload.get("rules");
|
||||
riskRuleService.saveRules("default:" + type, rules != null ? rules : List.of());
|
||||
String json = new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(rules);
|
||||
storageService.store("rules/default/" + type + ".json", json);
|
||||
return ApiResponse.success();
|
||||
}
|
||||
|
||||
private void checkAdmin(HttpServletRequest request) {
|
||||
var level = request.getAttribute("trustLevel");
|
||||
if (level == null || !"ADMIN".equals(level.toString())) {
|
||||
|
||||
Reference in New Issue
Block a user