refactor: use only siteId for risk rule storage, drop type-level fallback
This commit is contained in:
@@ -22,16 +22,9 @@ public class RiskRuleServiceImpl implements RiskRuleService {
|
||||
private final com.par.core.storage.CachedStorageService storageService;
|
||||
private static final ObjectMapper om = new ObjectMapper();
|
||||
|
||||
/** Find by siteId first, fallback to siteType for backward compat */
|
||||
private RiskRule findByIdentifier(String identifier) {
|
||||
// Try siteId first
|
||||
RiskRule rr = mapper.selectOne(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteId, identifier).eq(RiskRule::getDeleted, 0)
|
||||
.orderByDesc(RiskRule::getId).last("limit 1"));
|
||||
if (rr != null) return rr;
|
||||
// Fallback to siteType
|
||||
return mapper.selectOne(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteType, identifier).eq(RiskRule::getDeleted, 0)
|
||||
.eq(RiskRule::getSiteId, identifier).eq(RiskRule::getDeleted, 0)
|
||||
.orderByDesc(RiskRule::getId).last("limit 1"));
|
||||
}
|
||||
|
||||
@@ -84,11 +77,6 @@ public class RiskRuleServiceImpl implements RiskRuleService {
|
||||
var list = mapper.selectList(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteId, siteType).eq(RiskRule::getDeleted, 0)
|
||||
.orderByDesc(RiskRule::getId));
|
||||
if (list.isEmpty()) {
|
||||
list = mapper.selectList(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteType, siteType).eq(RiskRule::getDeleted, 0)
|
||||
.orderByDesc(RiskRule::getId));
|
||||
}
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
for (var r : list) {
|
||||
result.add(Map.of("version", r.getVersion(), "createdAt", r.getCreatedAt() != null ? r.getCreatedAt().toString() : ""));
|
||||
@@ -101,11 +89,6 @@ public class RiskRuleServiceImpl implements RiskRuleService {
|
||||
var r = mapper.selectOne(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteId, siteType).eq(RiskRule::getVersion, version)
|
||||
.eq(RiskRule::getDeleted, 0));
|
||||
if (r == null) {
|
||||
r = mapper.selectOne(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteType, siteType).eq(RiskRule::getVersion, version)
|
||||
.eq(RiskRule::getDeleted, 0));
|
||||
}
|
||||
return r != null ? r.getRulesJson() : null;
|
||||
}
|
||||
|
||||
@@ -113,8 +96,6 @@ public class RiskRuleServiceImpl implements RiskRuleService {
|
||||
public void deleteRules(String siteType) {
|
||||
mapper.delete(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteId, siteType).eq(RiskRule::getDeleted, 0));
|
||||
mapper.delete(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<RiskRule>()
|
||||
.eq(RiskRule::getSiteType, siteType).eq(RiskRule::getDeleted, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,9 +11,6 @@
|
||||
<template #default="s">{{ (s.row.names||[]).join('/') || '-' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="siteType" label="类型" width="100" />
|
||||
<el-table-column label="来源" width="80" align="center">
|
||||
<template #default="s">{{ s.row.source || '—' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="规则数" width="80" align="center">
|
||||
<template #default="s"><el-tag size="small">{{ s.row.ruleCount || 0 }}</el-tag></template>
|
||||
</el-table-column>
|
||||
@@ -336,13 +333,11 @@ const ruleText = (r) => {
|
||||
return `${typeLabel(r.type)}:${val} → <span style="color:#f56c6c;font-weight:500">封号/删除账号</span>${appText}`
|
||||
}
|
||||
const merged = computed(() => (Array.isArray(sites.value)?sites.value:[]).map(s => {
|
||||
// 优先站点级,兜底类型级
|
||||
const entry = rulesMap.value[s.siteId] || rulesMap.value[s.siteType] || {}
|
||||
const entry = rulesMap.value[s.siteId] || {}
|
||||
return {
|
||||
siteId: s.siteId, names: s.names, siteType: s.siteType,
|
||||
ruleCount: entry.ruleCount || 0, version: entry.version || null,
|
||||
updatedAt: entry.updatedAt || null, rulesJson: entry.rulesJson || null,
|
||||
source: rulesMap.value[s.siteId] ? '站点级' : entry.ruleCount ? '类型级' : null,
|
||||
}
|
||||
}))
|
||||
|
||||
@@ -356,7 +351,8 @@ const fetchAll = async () => {
|
||||
const map = {}
|
||||
for (const r of rulesData) {
|
||||
const cnt = (() => { try { return JSON.parse(r.rulesJson||'[]').length } catch { return 0 } })()
|
||||
const key = r.siteId || r.siteType // siteId is the new key, fallback to siteType
|
||||
const key = r.siteId
|
||||
if (!key) continue
|
||||
if (!map[key] || r.version > map[key].version)
|
||||
map[key] = { ruleCount: cnt, version: r.version, updatedAt: r.updatedAt, rulesJson: r.rulesJson }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user