本文引用的文件
本文面向后端接口使用者、前端对接人员和调查分析人员,说明以下四类通话数据接口的请求参数、响应字段、分页方式及在调查工作中的使用方式:
这些接口统一通过控制器暴露 HTTP 端点,服务层负责动态表名、默认查询条件和业务预处理,数据访问层通过 MyBatis Mapper 执行数据库查询。
| 模块 | 控制器 | 基础路径 | 主要接口 | 返回类型 |
|---|---|---|---|---|
| 通话记录 | CallRecordController |
/cr |
POST /cr/getCallRecord |
分页通话记录 |
| 夜间通话 | CallNightController |
/call/night |
POST /call/night/statFirstCallNight |
分页夜间汇总 |
| 夜间通话 | CallNightController |
/call/night |
POST /call/night/statSecondCallNight |
夜间明细汇总 |
| 连续通话 | CallContinuousController |
/call/continuous |
POST /call/continuous/statFirstCallContinuous |
分页连续汇总 |
| 连续通话 | CallContinuousController |
/call/continuous |
POST /call/continuous/statSecondCallContinuous |
分页详细连续汇总 |
| 敏感通话 | CallSensitiveController |
/call/sensitive |
POST /call/sensitive/statFirstCallSensitive |
分页敏感汇总 |
| 敏感通话 | CallSensitiveController |
/call/sensitive |
POST /call/sensitive/statSecondCallSensitive |
分页敏感明细 |
所有接口均使用 POST 方法,请求体为 JSON,统一由后端封装为 Result 对象返回。
章节来源
后端控制器将业务结果包装为 Result,其中包含成功标志、数据和错误信息。调用方应优先判断整体是否成功,再读取具体数据字段。
查询参数类继承通用 Query 基类,因此通常支持以下通用分页字段:
page:页码limit:每页条数实际分页实现依赖各 Controller 和服务层构造的 MyBatis-Plus Page 对象。
所有通话相关查询都会通过 GovernConfService.getCallTableName() 设置动态表名。这意味着:
夜间通话、连续通话和敏感通话的服务层会在未提供人员姓名列表时,自动填充系统已知人员姓名集合。这样可以在不指定具体人员的情况下进行全局扫描。
flowchart TD
Client["调用方"] --> Controller["通话数据控制器"]
Controller --> Service["通话数据服务层"]
Service --> Config["治理配置服务<br/>获取通话表名"]
Service --> Person["人员基本信息服务<br/>获取人员姓名列表"]
Service --> Mapper["MyBatis Mapper"]
Mapper --> Database["通话数据表"]
图示来源
章节来源
POST/cr/getCallRecordCallRecordQueryCallRecord| 字段 | 类型 | 必填 | 含义 |
|---|---|---|---|
id |
Long |
否 | 单条通话记录主键 |
ids |
List<Long> |
否 | 多条通话记录主键列表 |
fileId |
Long |
否 | 关联文件标识 |
sheetId |
Long |
否 | 关联工作表标识 |
personPhones |
List<String> |
否 | 本方号码列表 |
operatorId |
String |
否 | 运营商 |
personPhoneArea |
String |
否 | 本方号码归属地 |
personCertNo |
String |
否 | 本方证件号码 |
personRegionId |
String |
否 | 本方基站大区号 |
personCellId |
String |
否 | 本方基站小区号 |
duration |
Integer |
否 | 通话时长 |
callDirection |
String |
否 | 主被叫标识 |
callType |
String |
否 | 通话类型 |
otherName |
String |
否 | 对方户名 |
otherPhones |
List<String> |
否 | 对方号码列表 |
otherPhone |
String |
否 | 单个对方号码 |
startTime |
String |
否 | 开始时间 |
endTime |
String |
否 | 结束时间 |
symbol |
String |
否 | 比较符号,默认值为“ge” |
page |
Long |
否 | 页码 |
limit |
Long |
否 | 每页大小 |
| 字段 | 类型 | 含义 |
|---|---|---|
personName |
String |
本方姓名 |
personPhone |
String |
本方号码 |
operatorId |
String |
运营商 |
personPhoneArea |
String |
本方号码归属地 |
personCertNo |
String |
本方证件号码 |
personRegionId |
String |
本方基站大区号 |
personCellId |
String |
本方基站小区号 |
personStationName |
String |
本方基站名称 |
personStationLongitude |
String |
本方基站经度 |
personStationLatitude |
String |
本方基站纬度 |
callDateTime |
LocalDateTime |
通话日期时间 |
callDate |
LocalDate |
通话日期 |
callTime |
LocalTime |
通话时间 |
duration |
Integer |
通话时长 |
callDirection |
String |
主被叫标识 |
callType |
String |
通话类型 |
otherName |
String |
对方户名 |
otherPhone |
String |
对方号码 |
otherPhoneArea |
String |
对方号码归属地 |
otherCertNo |
String |
对方证件号码 |
remark |
String |
备注 |
personLibId |
String |
关联人卡库 |
callLocal |
String |
本地通话标识 |
章节来源
POST/call/night/statFirstCallNightCallNightQueryCallNightDTO该接口用于按时间段汇总夜间通话次数,适合先做宏观分析,例如查看某人在哪些夜间时段频繁通话。
| 字段 | 类型 | 必填 | 含义 |
|---|---|---|---|
nightStart |
Integer |
否 | 夜间起始小时 |
nightEnd |
Integer |
否 | 夜间结束小时 |
monthVal |
Integer |
否 | 月份阈值 |
otherName |
String |
否 | 对方姓名 |
otherPhone |
String |
否 | 对方号码 |
personNames |
List<String> |
否 | 人员姓名列表;为空时自动填充全部人员 |
page |
Long |
否 | 页码 |
limit |
Long |
否 | 每页大小 |
| 字段 | 类型 | 含义 |
|---|---|---|
time |
String |
时间段标识,如“22:00-23:00” |
otherName |
String |
对方姓名 |
personName |
String |
本方姓名 |
otherPhone |
String |
对方号码集合 |
callCount |
Integer |
通话总次数 |
totalMonthCount |
Integer |
跨越的月份总数 |
startHour |
String |
起始小时 |
endHour |
String |
结束小时 |
ids |
String |
关联标识集合 |
POST/call/night/statSecondCallNightCallNightQueryList<CallNightDTO>该接口不再分页,返回更详细的夜间通话统计信息,适合在第一层筛选后进一步展开。
章节来源
POST/call/continuous/statFirstCallContinuousCallContinuousQueryCallContinuousDTO该接口用于识别长期持续联系的对象,适合发现稳定联系人。
| 字段 | 类型 | 必填 | 含义 |
|---|---|---|---|
monthVal |
Integer |
否 | 连续月份阈值 |
otherName |
String |
否 | 对方姓名 |
otherPhone |
String |
否 | 对方号码 |
personNames |
List<String> |
否 | 人员姓名列表;为空时自动填充全部人员 |
page |
Long |
否 | 页码 |
limit |
Long |
否 | 每页大小 |
| 字段 | 类型 | 含义 |
|---|---|---|
personName |
String |
本方姓名 |
personPhone |
String |
本方手机号 |
otherPhone |
String |
合并后的对方手机号 |
otherPhones |
String |
对方号码集合 |
otherName |
String |
对方姓名 |
pairContMonthCount |
Integer |
持续月份 |
pairTotalCalls |
Integer |
通话总次数 |
continuousStartMonth |
String |
连续通话开始月份 |
continuousEndMonth |
String |
连续通话结束月份 |
POST/call/continuous/statSecondCallContinuousCallContinuousQueryCallContinuousDTO该层级进一步区分具体对方号码,适合从“稳定联系人”下钻到具体号码组合。
章节来源
POST/call/sensitive/statFirstCallSensitiveCallSensitiveQueryCallSensitiveDTO该接口用于发现高风险或重点关注的通话对象。
| 字段 | 类型 | 必填 | 含义 |
|---|---|---|---|
otherPhone |
String |
否 | 对方号码 |
otherName |
String |
否 | 对方姓名 |
personNames |
List<String> |
否 | 人员姓名列表;为空时自动填充全部人员 |
page |
Long |
否 | 页码 |
limit |
Long |
否 | 每页大小 |
| 字段 | 类型 | 含义 |
|---|---|---|
personName |
String |
本方姓名 |
otherName |
String |
对方姓名 |
otherPhone |
String |
对方号码 |
callCount |
Integer |
通话次数 |
POST/call/sensitive/statSecondCallSensitiveCallSensitiveQueryCallRecord该接口直接返回敏感通话的具体记录,便于结合时间、地点、主被叫方向等字段进行核查。
章节来源
适用于原始数据核对、证据调取、线索交叉验证。可基于号码、时间范围、主被叫方向、通话类型、基站信息等条件检索。
典型用途:
适用于分析作息异常、隐蔽联络、非工作时间活动。
典型用途:
适用于发现长期稳定联系关系。
典型用途:
适用于风险预警和重点对象筛查。
典型用途:
治理树或治理配置决定当前查询使用哪张通话数据表,从而把通话数据纳入案件、数据源或组织维度的治理边界。
graph TB
CallRecord["通话记录"] --> Person["人员档案"]
CallRecord --> Track["轨迹数据"]
CallRecord --> Governance["治理配置<br/>治理树与数据表映射"]
NightCall["夜间通话"] --> CallRecord
ContinuousCall["连续通话"] --> CallRecord
SensitiveCall["敏感通话"] --> CallRecord
图示来源
POST /cr/getCallRecordpersonPhones:目标本方号码startTime:开始时间endTime:结束时间page:1limit:100适用场景:案件时间范围内拉取目标号码通话清单。
POST /call/night/statFirstCallNightnightStart:22nightEnd:6personNames:目标人员姓名列表page:1limit:50适用场景:分析目标人员在夜间的时间段分布。
POST /call/continuous/statFirstCallContinuousmonthVal:大于等于期望的连续月数personNames:目标人员姓名列表适用场景:识别稳定联系人。
POST /call/sensitive/statSecondCallSensitiveotherPhone:可疑对方号码personNames:目标人员姓名列表page:1limit:200适用场景:对敏感联系人进行逐条核查。
Page 传递页码和每页大小。章节来源
可能原因:
排查建议:
personPhones、otherPhone、otherName 是否为空。可能原因:
排查建议:
可能原因:
排查建议:
otherPhone 字段。可能原因:
personNames,服务层自动填充全部人员。排查建议:
可能原因:
排查建议:
classDiagram
class CallRecordController {
+getCallRecord(query) Result
}
class CallNightController {
+statFirstCallNight(query) Result
+statSecondCallNight(query) Result
}
class CallContinuousController {
+statFirstCallContinuous(query) Result
+statSecondCallContinuous(query) Result
}
class CallSensitiveController {
+statFirstCallSensitive(query) Result
+statSecondCallSensitive(query) Result
}
class CallRecordService {
+getCallRecord(query) Page
}
class CallNightService {
+statFirstCallNight(query) Page
+statSecondCallNight(query) List
}
class CallContinuousService {
+statFirstCallContinuous(query) Page
+statSecondCallContinuous(query) Page
}
class CallSensitiveService {
+statFirstCallSensitive(query) Page
+statSecondCallSensitive(query) Page
}
class CallRecordMapper {
+selectCallRecordPage(page, query) Page
}
class CallNightMapper {
+statFirstCallNight(page, query) Page
+statSecondCallNight(query) List
}
class CallContinuousMapper {
+statFirstCallContinuous(page, query) Page
+statSecondCallContinuous(page, query) Page
}
class CallSensitiveMapper {
+statFirstCallSensitive(page, query) Page
+statSecondCallSensitive(page, query) Page
}
CallRecordController --> CallRecordService : "调用"
CallNightController --> CallNightService : "调用"
CallContinuousController --> CallContinuousService : "调用"
CallSensitiveController --> CallSensitiveService : "调用"
CallRecordService --> CallRecordMapper : "查询"
CallNightService --> CallNightMapper : "查询"
CallContinuousService --> CallContinuousMapper : "查询"
CallSensitiveService --> CallSensitiveMapper : "查询"
图示来源