zcloud-gbs-primeport/口门信息管理 - 后端需求文档.md

28 KiB
Raw Blame History

口门信息管理 - 后端需求文档

一、模块概述

1.1 模块名称

口门信息管理(后端)

1.2 所属模块

监管端 → 一级口门管理

1.3 功能描述

管理口门的基础信息,包括口门的增删改查、口门属性配置,以及口门关联的通道、闸机、摄像头设备的管理功能。

1.4 用户角色

  • 监管端超级管理员
  • 监管端系统管理员

1.5 数据表

表名 说明
mkmj 门口信息管理表(主表)
mkmj_passage 口门门禁通道表
mkmj_gate 门口闸机表
video 摄像头表

二、数据字典(前端静态配置)

以下数据字典由前端静态配置,无需后端提供接口:

2.1 口门级别 (mkmj_level)

名称
1 一级
2 二级

2.2 口门类型 (mkmj_type)

名称
1 人行
2 车行
3 综合

2.3 口门状态 (mkmj_status)

名称
1 停用
2 正常
3 暂时管理

2.4 所属港区 (hg_auth_area)

名称
qianwan 前湾港区
dongjiakou 董家口港区
huangdao 黄岛港区
other 其他港区

2.5 闸机状态 (gate_status)

名称
1 停用
2 正常

2.6 通道类型 (passage_type)

名称
1 人行
2 车行
3 综合

2.7 通道状态 (passage_status)

名称
1 停用
2 正常

2.8 摄像头类型 (video_type)

名称
1 移动
2 平台

2.9 设备类型 (device_type)

名称
1 口门
2 闸机

三、口门管理接口

3.1 查询口门列表

接口: GET /api/mkmj/list

描述: 分页查询口门列表,支持条件筛选

请求参数:

参数名 类型 必填 说明
page int 页码,默认 1
pageSize int 每页条数,默认 20最大 100
mkmjName String 口门名称,模糊查询
hgAuthArea String 所属港区编码
mkmjStatus Integer 口门状态
mkmjLevel Integer 口门级别

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 101,
        "mkmjName": "一号口门",
        "hgAuthArea": "qianwan",
        "hgAuthAreaName": "前湾港区",
        "mkmjLevel": 1,
        "mkmjType": "3",
        "mkmjTypeName": "综合",
        "mkmjStatus": 2,
        "mkmjStatusName": "正常",
        "longitude": "120.123456",
        "latitude": "36.123456",
         "passageCount": 5,
         "gateCount": 10,
         "videoCount": 8
      }
    ],
    "total": 50,
    "page": 1,
    "pageSize": 20
  }
}

实现逻辑:

  1. 根据条件动态构建查询语句
  2. hgAuthAreaNamemkmjTypeNamemkmjStatusName 根据数据字典转换
  3. 仅查询 delete_enum = 'FALSE' 的记录
  4. passageCount、gateCount、videoCount 是统计的相关联的表统计出来的。

3.2 获取口门详情

接口: GET /api/mkmj/detail/{id}

描述: 获取口门详细信息及关联设备统计

路径参数:

参数名 类型 说明
id Long 口门 ID

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 101,
    "mkmjName": "一号口门",
    "hgAuthArea": "qianwan",
    "hgAuthAreaName": "前湾港区",
    "mkmjLevel": 1,
    "mkmjLevelName": "一级",
    "mkmjType": "3",
    "mkmjTypeName": "综合",
    "mkmjStatus": 2,
    "mkmjStatusName": "正常",
    "inDirectionArea": null,
    "inDirectionAreaName": null,
    "outDirectionArea": null,
    "outDirectionAreaName": null,
    "longitude": "120.123456",
    "latitude": "36.123456",
    "remarks": "备注信息",
    "createName": "管理员",
    "createTime": "2026-03-01 10:00:00",
    "updateName": "管理员",
    "updateTime": "2026-03-05 14:30:00"
  
  }
}

实现逻辑:

  1. 查询口门基本信息
  2. 统计关联的通道、闸机、摄像头数量(delete_enum = 'FALSE'
  3. 数据字典字段转换名称

3.3 新增口门

接口: POST /api/mkmj/add

描述: 新增口门信息

请求参数:

{
  "mkmjName": "一号口门",
  "hgAuthArea": "qianwan",
  "hgAuthAreaName": "前湾港区",
  "mkmjLevel": 1,
  "mkmjType": "3",
  "mkmjStatus": 2,
  "inDirectionArea": null,
  "inDirectionAreaName": null,
  "outDirectionArea": null,
  "outDirectionAreaName": null,
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "备注信息"
}

请求参数说明:

参数名 类型 必填 说明
mkmjName String 口门名称2-50 字符
hgAuthArea String 所属港区编码
hgAuthAreaName String 所属港区名称
mkmjLevel Integer 口门级别1-一级2-二级
mkmjType String 口门类型1-人行2-车行3-综合
mkmjStatus Integer 口门状态1-停用2-正常3-暂时管理
inDirectionArea Long 入方向区域 ID
inDirectionAreaName String 入方向区域名称
outDirectionArea Long 出方向区域 ID
outDirectionAreaName String 出方向区域名称
longitude String 经度,-180~180
latitude String 纬度,-90~90
remarks String 备注≤255 字符

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 101
  }
}

实现逻辑:

  1. 校验必填参数

3.4 编辑口门

接口: PUT /api/mkmj/update

描述: 编辑口门信息

请求参数:

{
  "id": 101,
  "mkmjName": "一号口门",
  "hgAuthArea": "qianwan",
  "hgAuthAreaName": "前湾港区",
  "mkmjLevel": 1,
  "mkmjType": "3",
  "mkmjStatus": 2,
  "inDirectionArea": null,
  "inDirectionAreaName": null,
  "outDirectionArea": null,
  "outDirectionAreaName": null,
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "更新备注"
}

响应数据:

{
  "code": 200,
  "message": "success"
}

实现逻辑:

  1. 校验 ID 存在性
  2. 校验口门名称唯一性(排除当前记录)
  3. 校验经度、纬度范围
  4. 填充更新字段:
    • update_time = 当前时间
    • update_id = 当前用户 ID
    • update_name = 当前用户姓名
  5. 更新数据库

3.5 删除口门

接口: DELETE /api/mkmj/delete/{id}

描述: 删除口门(软删除),同步停用关联设备

路径参数:

参数名 类型 说明
id Long 口门 ID

响应数据:

{
  "code": 200,
  "message": "success"
}

实现逻辑:

  1. 校验 ID 存在性
  2. 检查关联数据:
    • 查询关联通道数量(mkmj_passagemkmj_id = iddelete_enum = 'FALSE'
    • 查询关联闸机数量(mkmj_gatemkmj_id = iddelete_enum = 'FALSE'
    • 查询关联摄像头数量(videoforeign_id = iddevice_type = 1delete_enum = 'FALSE'
    • 查询关联审批人数量(mkmj_approval_usermkmj_id = iddelete_enum = 'FALSE'
  3. 如存在关联数据,返回错误码 2002 及关联详情
  4. 执行软删除:update mkmj set delete_enum = 'TRUE' where id = ?
  5. 同步停用关联的通道、闸机、摄像头(更新 delete_enum = 'TRUE'
  6. 记录操作日志

错误响应(有关联数据时):

{
  "code": 2002,
  "message": "该口门下有关联数据,无法删除",
  "data": {
    "passageCount": 5,
    "gateCount": 10,
    "videoCount": 8,
    "approvalUserCount": 3
  }
}

3.6 口门名称唯一性校验

接口: GET /api/mkmj/check-name

描述: 校验口门名称是否重复

请求参数:

参数名 类型 必填 说明
mkmjName String 口门名称
id Long 当前口门 ID编辑时传

响应数据:

{
  "code": 200,
  "data": {
    "available": true
  }
}

实现逻辑:

  1. 查询 mkmj 表,条件:mkmjName = ? AND delete_enum = 'FALSE'
  2. 如传入 id,则排除该记录:AND id != ?
  3. 查询结果为空则 available = true,否则 available = false

四、通道管理接口

4.1 查询通道列表

接口: GET /api/mkmj/passage/list

描述: 分页查询通道列表,支持按口门筛选

请求参数:

参数名 类型 必填 说明
page int 页码,默认 1
pageSize int 每页条数,默认 20
mkmjId Long 口门 ID
passageName String 通道名称,模糊查询
passageType Integer 通道类型
passageStatus Integer 通道状态

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 1001,
        "mkmjId": 101,
        "mkmjName": "一号口门",
        "passageName": "A 通道",
        "passageType": 1,
        "passageTypeName": "人行",
        "passageStatus": 2,
        "passageStatusName": "正常",
        "longitude": "120.123456",
        "latitude": "36.123456",
        "createName": "管理员",
        "createTime": "2026-03-01 10:00:00"
      }
    ],
    "total": 50,
    "page": 1,
    "pageSize": 20
  }
}

4.2 获取通道详情

接口: GET /api/mkmj/passage/detail/{id}

描述: 获取通道详细信息

路径参数:

参数名 类型 说明
id Long 通道 ID

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1001,
    "mkmjId": 101,
    "mkmjName": "一号口门",
    "passageName": "A 通道",
    "passageType": 1,
    "passageTypeName": "人行",
    "passageStatus": 2,
    "passageStatusName": "正常",
    "longitude": "120.123456",
    "latitude": "36.123456",
    "remarks": "备注信息",
    "createName": "管理员",
    "createTime": "2026-03-01 10:00:00",
    "updateName": "管理员",
    "updateTime": "2026-03-05 14:30:00"
  }
}

4.3 新增通道

接口: POST /api/mkmj/passage/add

描述: 新增通道信息

请求参数:

{
  "mkmjId": 101,
  "passageName": "A 通道",
  "passageType": 1,
  "passageStatus": 2,
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "备注信息"
}

请求参数说明:

参数名 类型 必填 说明
mkmjId Long 所属口门 ID
passageName String 通道名称2-50 字符
passageType Integer 通道类型1-人行2-车行3-综合
passageStatus Integer 通道状态1-停用2-正常
longitude String 经度
latitude String 纬度
remarks String 备注≤255 字符

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1001
  }
}

实现逻辑:

  1. 校验必填参数
  2. 校验口门 ID 存在性(mkmj 表,delete_enum = 'FALSE'
  3. 校验通道名称在同一口门下唯一
  4. 填充公共字段
  5. 插入数据库

4.4 编辑通道

接口: PUT /api/mkmj/passage/update

描述: 编辑通道信息

请求参数:

{
  "id": 1001,
  "mkmjId": 101,
  "passageName": "A 通道",
  "passageType": 1,
  "passageStatus": 2,
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "更新备注"
}

响应数据:

{
  "code": 200,
  "message": "success"
}

4.5 删除通道

接口: DELETE /api/mkmj/passage/delete/{id}

描述: 删除通道(软删除),同步停用关联闸机

路径参数:

参数名 类型 说明
id Long 通道 ID

响应数据:

{
  "code": 200,
  "message": "success"
}

实现逻辑:

  1. 校验 ID 存在性
  2. 检查关联的闸机数量(mkmj_gatepassage_id = iddelete_enum = 'FALSE'
  3. 如存在关联闸机,返回错误
  4. 执行软删除
  5. 同步停用关联的闸机

4.6 按口门查询通道列表(简化版)

接口: GET /api/mkmj/passage/by-mkmj/{mkmjId}

描述: 获取指定口门下的所有通道(用于下拉选择)

路径参数:

参数名 类型 说明
mkmjId Long 口门 ID

响应数据:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1001,
      "passageName": "A 通道",
      "passageType": 1,
      "passageTypeName": "人行"
    },
    {
      "id": 1002,
      "passageName": "B 通道",
      "passageType": 2,
      "passageTypeName": "车行"
    }
  ]
}

五、闸机管理接口

5.1 查询闸机列表

接口: GET /api/mkmj/gate/list

描述: 分页查询闸机列表,支持按口门、通道筛选

请求参数:

参数名 类型 必填 说明
page int 页码,默认 1
pageSize int 每页条数,默认 20
mkmjId Long 口门 ID
passageId String 通道 ID
gateName String 闸机名称,模糊查询
gateType String 闸机类型
gateStatus Integer 闸机状态

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 2001,
        "mkmjId": 101,
        "mkmjName": "一号口门",
        "passageId": "1001",
        "passageName": "A 通道",
        "gateNumber": "GATE-001",
        "gateName": "1 号闸机",
        "gateType": "1",
        "gateTypeName": "人行闸机",
        "gateStatus": 2,
        "gateStatusName": "正常",
        "gateCategory": "tripod",
        "gateCategoryName": "三辊闸",
        "gateModel": "ZK-100",
        "gatePosition": "入口处",
        "longitude": "120.123456",
        "latitude": "36.123456",
        "createName": "管理员",
        "createTime": "2026-03-01 10:00:00"
      }
    ],
    "total": 100,
    "page": 1,
    "pageSize": 20
  }
}

5.2 获取闸机详情

接口: GET /api/mkmj/gate/detail/{id}

描述: 获取闸机详细信息

路径参数:

参数名 类型 说明
id Long 闸机 ID

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 2001,
    "mkmjId": 101,
    "mkmjName": "一号口门",
    "passageId": "1001",
    "passageName": "A 通道",
    "gateNumber": "GATE-001",
    "gateName": "1 号闸机",
    "gateType": "1",
    "gateTypeName": "人行闸机",
    "gateStatus": 2,
    "gateStatusName": "正常",
    "gateCategory": "tripod",
    "gateCategoryName": "三辊闸",
    "gateModel": "ZK-100",
    "gatePosition": "入口处",
    "longitude": "120.123456",
    "latitude": "36.123456",
    "remarks": "备注信息",
    "createName": "管理员",
    "createTime": "2026-03-01 10:00:00",
    "updateName": "管理员",
    "updateTime": "2026-03-05 14:30:00"
  }
}

5.3 新增闸机

接口: POST /api/mkmj/gate/add

描述: 新增闸机信息

请求参数:

{
  "mkmjId": 101,
  "passageId": "1001",
  "gateNumber": "GATE-001",
  "gateName": "1 号闸机",
  "gateType": "1",
  "gateStatus": 2,
  "gateCategory": "tripod",
  "gateCategoryName": "三辊闸",
  "gateModel": "ZK-100",
  "gatePosition": "入口处",
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "备注信息"
}

请求参数说明:

参数名 类型 必填 说明
mkmjId Long 所属口门 ID
passageId String 所属通道 ID
gateNumber String 闸机标识,唯一
gateName String 闸机名称2-50 字符
gateType String 闸机类型
gateStatus Integer 闸机状态1-停用2-正常
gateCategory String 闸机类别编码
gateCategoryName String 闸机类别名称
gateModel String 闸机型号≤255 字符
gatePosition String 闸机位置≤255 字符
longitude String 经度
latitude String 纬度
remarks String 备注≤255 字符

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 2001
  }
}

实现逻辑:

  1. 校验必填参数
  2. 校验口门 ID 存在性
  3. 校验通道 ID 存在性(且属于该口门)
  4. 校验闸机标识唯一性(gateNumber
  5. 填充公共字段
  6. 插入数据库

5.4 编辑闸机

接口: PUT /api/mkmj/gate/update

描述: 编辑闸机信息

请求参数:

{
  "id": 2001,
  "mkmjId": 101,
  "passageId": "1001",
  "gateNumber": "GATE-001",
  "gateName": "1 号闸机",
  "gateType": "1",
  "gateStatus": 2,
  "gateCategory": "tripod",
  "gateCategoryName": "三辊闸",
  "gateModel": "ZK-100",
  "gatePosition": "入口处",
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "更新备注"
}

响应数据:

{
  "code": 200,
  "message": "success"
}

5.5 删除闸机

接口: DELETE /api/mkmj/gate/delete/{id}

描述: 删除闸机(软删除),同步停用关联摄像头

路径参数:

参数名 类型 说明
id Long 闸机 ID

响应数据:

{
  "code": 200,
  "message": "success"
}

实现逻辑:

  1. 校验 ID 存在性
  2. 检查关联的摄像头数量(videoforeign_id = iddevice_type = 2delete_enum = 'FALSE'
  3. 如存在关联摄像头,返回错误
  4. 执行软删除
  5. 同步停用关联的摄像头

5.6 闸机标识唯一性校验

接口: GET /api/mkmj/gate/check-number

描述: 校验闸机标识是否重复

请求参数:

参数名 类型 必填 说明
gateNumber String 闸机标识
id Long 当前闸机 ID编辑时传

响应数据:

{
  "code": 200,
  "data": {
    "available": true
  }
}

5.7 按口门/通道查询闸机列表(简化版)

接口: GET /api/mkmj/gate/by-passage

描述: 获取指定通道下的所有闸机(用于下拉选择)

请求参数:

参数名 类型 必填 说明
passageId String 通道 ID

响应数据:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 2001,
      "gateNumber": "GATE-001",
      "gateName": "1 号闸机",
      "gateType": "1",
      "gateTypeName": "人行闸机"
    },
    {
      "id": 2002,
      "gateNumber": "GATE-002",
      "gateName": "2 号闸机",
      "gateType": "1",
      "gateTypeName": "人行闸机"
    }
  ]
}

六、摄像头管理接口

6.1 查询摄像头列表

接口: GET /api/mkmj/video/list

描述: 分页查询摄像头列表,支持按口门、闸机筛选

请求参数:

参数名 类型 必填 说明
page int 页码,默认 1
pageSize int 每页条数,默认 20
foreignId Long 关联 ID口门 ID 或闸机 ID
deviceType Integer 设备类型1-口门2-闸机
videoResourceName String 摄像头名称,模糊查询
videoType Integer 摄像头类型

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 3001,
        "foreignId": 101,
        "deviceType": 1,
        "deviceTypeName": "口门",
        "videoResourceId": "CAM-001",
        "videoResourceName": "1 号口门摄像头",
        "videoType": 2,
        "videoTypeName": "平台",
        "longitude": "120.123456",
        "latitude": "36.123456",
        "createName": "管理员",
        "createTime": "2026-03-01 10:00:00"
      }
    ],
    "total": 200,
    "page": 1,
    "pageSize": 20
  }
}

6.2 获取摄像头详情

接口: GET /api/mkmj/video/detail/{id}

描述: 获取摄像头详细信息

路径参数:

参数名 类型 说明
id Long 摄像头 ID

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 3001,
    "foreignId": 101,
    "deviceType": 1,
    "deviceTypeName": "口门",
    "mkmjName": "一号口门",
    "gateName": null,
    "videoResourceId": "CAM-001",
    "videoResourceName": "1 号口门摄像头",
    "videoType": 2,
    "videoTypeName": "平台",
    "longitude": "120.123456",
    "latitude": "36.123456",
    "remarks": "备注信息",
    "createName": "管理员",
    "createTime": "2026-03-01 10:00:00",
    "updateName": "管理员",
    "updateTime": "2026-03-05 14:30:00"
  }
}

6.3 新增摄像头

接口: POST /api/mkmj/video/add

描述: 新增摄像头信息

请求参数:

{
  "foreignId": 101,
  "deviceType": 1,
  "videoResourceId": "CAM-001",
  "videoResourceName": "1 号口门摄像头",
  "videoType": 2,
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "备注信息"
}

请求参数说明:

参数名 类型 必填 说明
foreignId Long 关联 ID口门 ID 或闸机 ID
deviceType Integer 设备类型1-口门2-闸机
videoResourceId String 摄像头 ID唯一
videoResourceName String 摄像头名称2-50 字符
videoType Integer 摄像头类型1-移动2-平台
longitude String 经度
latitude String 纬度
remarks String 备注≤255 字符

响应数据:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 3001
  }
}

实现逻辑:

  1. 校验必填参数
  2. 校验关联 ID 存在性(根据 deviceType 查询 mkmjmkmj_gate 表)
  3. 校验摄像头 ID 唯一性(videoResourceId
  4. 填充公共字段
  5. 插入数据库

6.4 编辑摄像头

接口: PUT /api/mkmj/video/update

描述: 编辑摄像头信息

请求参数:

{
  "id": 3001,
  "foreignId": 101,
  "deviceType": 1,
  "videoResourceId": "CAM-001",
  "videoResourceName": "1 号口门摄像头",
  "videoType": 2,
  "longitude": "120.123456",
  "latitude": "36.123456",
  "remarks": "更新备注"
}

响应数据:

{
  "code": 200,
  "message": "success"
}

6.5 删除摄像头

接口: DELETE /api/mkmj/video/delete/{id}

描述: 删除摄像头(软删除)

路径参数:

参数名 类型 说明
id Long 摄像头 ID

响应数据:

{
  "code": 200,
  "message": "success"
}

实现逻辑:

  1. 校验 ID 存在性
  2. 执行软删除:update video set delete_enum = 'TRUE' where id = ?

6.6 摄像头 ID 唯一性校验

接口: GET /api/mkmj/video/check-id

描述: 校验摄像头 ID 是否重复

请求参数:

参数名 类型 必填 说明
videoResourceId String 摄像头 ID
id Long 当前摄像头 ID编辑时传

响应数据:

{
  "code": 200,
  "data": {
    "available": true
  }
}

6.7 按设备查询摄像头列表(简化版)

接口: GET /api/mkmj/video/by-device

描述: 获取指定设备下的所有摄像头(用于展示或下拉选择)

请求参数:

参数名 类型 必填 说明
foreignId Long 关联 ID口门 ID 或闸机 ID
deviceType Integer 设备类型1-口门2-闸机

响应数据:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 3001,
      "videoResourceId": "CAM-001",
      "videoResourceName": "1 号摄像头",
      "videoType": 2,
      "videoTypeName": "平台"
    },
    {
      "id": 3002,
      "videoResourceId": "CAM-002",
      "videoResourceName": "2 号摄像头",
      "videoType": 2,
      "videoTypeName": "平台"
    }
  ]
}

七、数据校验规则

7.1 通用校验

字段 规则 错误码 错误提示
名称类字段 必填2-50 字符 400 名称长度为 2-50 个字符
备注 ≤255 字符 400 备注长度不能超过 255 字符
经度 -180~180支持小数 400 请输入有效的经度(-180~180
纬度 -90~90支持小数 400 请输入有效的纬度(-90~90

7.2 口门校验

字段 规则 错误码 错误提示
mkmjName 唯一性 2001 该口门名称已存在
mkmjLevel 固定值校验 400 口门级别无效
hgAuthArea 有效性 400 所属港区无效

7.3 通道校验

字段 规则 错误码 错误提示
mkmjId 存在性 2003 所属口门不存在
passageName 同口门下唯一 2004 该口门下通道名称已存在

7.4 闸机校验

字段 规则 错误码 错误提示
mkmjId 存在性 2003 所属口门不存在
passageId 存在性且属于该口门 2005 所属通道不存在或不属于该口门
gateNumber 唯一性 2006 该闸机标识已存在

7.5 摄像头校验

字段 规则 错误码 错误提示
foreignId 存在性(根据 deviceType 2007 关联设备不存在
videoResourceId 唯一性 2008 该摄像头 ID 已存在

八、删除关联检查逻辑

8.1 删除口门检查

-- 检查关联通道
SELECT COUNT(*) FROM mkmj_passage WHERE mkmj_id = ? AND delete_enum = 'FALSE';

-- 检查关联闸机
SELECT COUNT(*) FROM mkmj_gate WHERE mkmj_id = ? AND delete_enum = 'FALSE';

-- 检查关联摄像头(口门类)
SELECT COUNT(*) FROM video WHERE foreign_id = ? AND device_type = 1 AND delete_enum = 'FALSE';

-- 检查关联审批人
SELECT COUNT(*) FROM mkmj_approval_user WHERE mkmj_id = ? AND delete_enum = 'FALSE';

8.2 删除通道检查

-- 检查关联闸机
SELECT COUNT(*) FROM mkmj_gate WHERE passage_id = ? AND delete_enum = 'FALSE';

8.3 删除闸机检查

-- 检查关联摄像头(闸机类)
SELECT COUNT(*) FROM video WHERE foreign_id = ? AND device_type = 2 AND delete_enum = 'FALSE';

九、错误码定义


十、公共字段处理

10.1 查询条件

所有列表查询必须附加条件:delete_enum = 'FALSE'


十一、实现注意事项

11.1 事务处理

  • 新增、编辑、删除操作需使用事务
  • 删除口门时,同步停用关联数据需在同一事务中完成

11.2 级联删除

  • 删除口门 → 停用通道、闸机、摄像头、审批人
  • 删除通道 → 停用闸机
  • 删除闸机 → 停用摄像头

11.4 性能优化

  • 列表查询使用分页

11.5 日志记录

  • 关键操作(新增、编辑、删除)记录操作日志
  • 日志内容:操作人、操作时间、操作类型、操作对象 ID、变更内容

十二、附录

12.1 相关文档

12.2 表结构参考

  • mkmj - 门口信息管理表
  • mkmj_passage - 口门门禁通道表
  • mkmj_gate - 门口闸机表
  • video - 摄像头表

文档版本: V1.0
最后更新: 2026-03-09