家用智能充电桩管理系统 - MySQL 表结构参照文档

适配数据库 :MySQL 8.0+数据库引擎 :InnoDB字符集 / 排序规则 :utf8mb4 / utf8mb4_unicode_ci外键约束规则 :ON DELETE RESTRICT ON UPDATE CASCADE文档用途 :开发、测试、运维的表结构标准参考,支持直接复制到 Word 整理为正式文档更新时间:2026-02-02

目录

  1. 基础支撑表1.1 sequence(序列生成表)
  2. 系统管理表2.1 sys_user(用户信息主表)2.2 sys_role(角色表)2.3 sys_permission(权限表)2.4 sys_role_perm(角色权限关联中间表)2.5 sys_perm_change_log(权限变更日志表)2.6 sys_operate_log(用户操作日志表)
  3. 设备管理表3.1 charging_pile(充电桩设备主表)3.2 pile_protect_param(设备保护参数表)3.3 pile_firmware_upgrade(设备固件升级记录表)
  4. 充电控制表4.1 charge_mode_config(充电模式配置表)4.2 timed_charge_task(定时充电任务表)4.3 charge_power_control(充电功率控制表)4.4 charge_record(充电记录主表)4.5 charge_real_time_data(充电实时数据表)4.6 charge_control_command(充电远程控制指令表)
  5. 告警与日志表5.1 device_alarm(设备告警表)5.2 data_warning(数据异常预警表)
  6. 计费与订单表6.1 price_config(全局电价配置表)6.2 charge_order(充电订单表)6.3 refund_record(退款记录表)
  7. 通知管理表7.1 notify_template(通知模板表)7.2 notify_record(通知推送记录表)
  8. 系统参数配置表8.1 sys_param(全局系统参数表)
  9. 附录9.1 表关联关系总览9.2 核心字段枚举值说明9.3 数据库初始化基础数据

通用字段说明

文档中所有表统一使用以下通用字段,含义、约束保持一致:

  • create_time:数据创建时间,自动赋值,无需手动插入
  • update_time:数据更新时间,修改数据时自动刷新
  • xxx_user_id:操作人 ID,均关联sys_user.id,记录数据操作主体
  • 自增主键均从 1 开始,标识为AUTO_INCREMENT=1
  • 索引命名规则:唯一索引idx_表名_字段名、普通索引idx_字段名、联合索引idx_表名_字段1_字段2

1. 基础支撑表

1.1 sequence(序列生成表)

表注释

生成全库唯一业务编号(充电记录号、告警号、订单号等),通过自定义函数get_sequence原子性获取序列值,避免并发重复,为全库基础支撑表

建表语句

mysql

复制代码
CREATE TABLE `sequence` (
  `seq_name` VARCHAR(50) NOT NULL COMMENT '序列名称,唯一标识序列类型',
  `current_val` INT(11) NOT NULL DEFAULT 1 COMMENT '当前序列值,调用函数后自动递增',
  `increment_val` INT(11) NOT NULL DEFAULT 1 COMMENT '序列步长,每次获取的增量值',
  PRIMARY KEY (`seq_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='序列生成表,用于生成唯一业务编号';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
seq_name VARCHAR(50) NOT NULL - 主键 50 序列名称,唯一标识序列类型 如 charge_record_no、alarm_no
current_val INT(11) NOT NULL 1 - 11 当前序列值,调用函数后递增 初始值根据业务需求设置
increment_val INT(11) NOT NULL 1 - 11 序列步长,每次获取的增量值 默认为 1,保证编号连续

关联函数(原子性获取序列)

mysql

复制代码
DELIMITER //
CREATE FUNCTION `get_sequence`(seq_name VARCHAR(50)) RETURNS INT
DETERMINISTIC COMMENT '原子性获取序列值,避免并发重复'
BEGIN
    UPDATE sequence SET current_val = current_val + increment_val WHERE seq_name = seq_name;
    RETURN (SELECT current_val FROM sequence WHERE seq_name = seq_name);
END //
DELIMITER ;

初始化数据

seq_name current_val increment_val 业务用途
charge_record_no 10000000 1 充电记录编号(8 位起始)
alarm_no 100000 1 设备告警编号(6 位起始)
notify_no 100000 1 通知推送编号(6 位起始)
refund_no 100000 1 退款单号(6 位起始)
order_no 10000000 1 充电订单编号(8 位起始)

2. 系统管理表

2.1 sys_user(用户信息主表)

表注释

存储系统所有用户核心信息,为系统双核心主表之一,所有业务表的用户关联均基于此表,敏感信息(密码、身份证)AES 加密存储

建表语句

mysql

复制代码
CREATE TABLE `sys_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户主键ID,系统内唯一标识',
  `user_phone` VARCHAR(20) NOT NULL COMMENT '用户手机号,登录账号,唯一',
  `user_password` VARCHAR(100) NOT NULL COMMENT '登录密码,AES加密存储',
  `user_name` VARCHAR(50) DEFAULT NULL COMMENT '用户真实姓名',
  `user_avatar` VARCHAR(255) DEFAULT NULL COMMENT '用户头像URL地址',
  `user_address` VARCHAR(255) DEFAULT NULL COMMENT '用户家庭地址,充电桩安装地址',
  `id_card` VARCHAR(20) DEFAULT NULL COMMENT '身份证号,AES加密存储,实名认证用',
  `wechat_openid` VARCHAR(100) DEFAULT NULL COMMENT '微信OpenID,微信登录/支付关联',
  `alipay_openid` VARCHAR(100) DEFAULT NULL COMMENT '支付宝OpenID,支付宝登录/支付关联',
  `role_id` INT(11) NOT NULL DEFAULT 2 COMMENT '角色ID,关联sys_role.id',
  `user_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '用户状态:0=禁用,1=正常',
  `notify_type` TINYINT(2) NOT NULL DEFAULT 1 COMMENT '通知方式:1=仅APP,2=仅短信,3=APP+短信',
  `last_login_time` DATETIME DEFAULT NULL COMMENT '用户最后登录时间',
  `password_update_time` DATETIME DEFAULT NULL COMMENT '密码最后修改时间',
  `login_error_count` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '连续登录错误次数,≥5次锁定',
  `login_lock_time` DATETIME DEFAULT NULL COMMENT '账号锁定时间,锁定后至该时间前无法登录',
  `session_timeout` TINYINT(2) NOT NULL DEFAULT 30 COMMENT '登录超时时间,单位:分钟',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '用户信息更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_user_user_phone` (`user_phone`),
  UNIQUE KEY `idx_sys_user_wechat_openid` (`wechat_openid`),
  UNIQUE KEY `idx_sys_user_alipay_openid` (`alipay_openid`),
  KEY `idx_role_id` (`role_id`),
  KEY `idx_user_status` (`user_status`),
  CONSTRAINT `fk_sys_user_role_id` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户信息主表,存储系统所有用户核心信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 用户主键 ID,系统内唯一标识 自增起始值 1,唯一标识每个用户
user_phone VARCHAR(20) NOT NULL - 唯一索引 20 用户手机号,登录账号,唯一 支持国内 / 国际手机号,作为唯一登录凭证
user_password VARCHAR(100) NOT NULL - - 100 登录密码,AES 加密存储 不可逆加密,密码长度要求≥6 位
user_name VARCHAR(50) NULL NULL - 50 用户真实姓名 用于身份展示、设备绑定审核
user_avatar VARCHAR(255) NULL NULL - 255 用户头像 URL 地址 存储远程文件地址,如 OSS/CDN 地址
user_address VARCHAR(255) NULL NULL - 255 用户家庭地址,充电桩安装地址 便于售后维护、设备定位
id_card VARCHAR(20) NULL NULL - 20 身份证号,AES 加密存储,实名认证用 设备绑定、退款审核时需校验
wechat_openid VARCHAR(100) NULL NULL 唯一索引 100 微信 OpenID,微信登录 / 支付关联 微信扫码登录、微信支付的唯一标识
alipay_openid VARCHAR(100) NULL NULL 唯一索引 100 支付宝 OpenID,支付宝登录 / 支付关联 支付宝扫码登录、支付宝支付的唯一标识
role_id INT(11) NOT NULL 2 普通索引、外键 11 角色 ID,关联 sys_role.id 1 = 管理员,2 = 普通用户(默认)
user_status TINYINT(1) NOT NULL 1 普通索引 1 用户状态:0 = 禁用,1 = 正常 禁用后用户无法登录系统
notify_type TINYINT(2) NOT NULL 1 - 2 通知方式:1 = 仅 APP,2 = 仅短信,3=APP + 短信 系统推送消息的首选方式
last_login_time DATETIME NULL NULL - - 用户最后登录时间 每次登录成功后刷新
password_update_time DATETIME NULL NULL - - 密码最后修改时间 用于密码有效期校验、安全提醒
login_error_count TINYINT(1) NOT NULL 0 - 1 连续登录错误次数,≥5 次锁定 登录成功后重置为 0
login_lock_time DATETIME NULL NULL - - 账号锁定时间,锁定后至该时间前无法登录 锁定时间默认 24 小时,管理员可手动解锁
session_timeout TINYINT(2) NOT NULL 30 - 2 登录超时时间,单位:分钟 无操作超时后自动退出登录
create_time DATETIME NOT NULL 系统当前时间 - - 用户创建时间 自动赋值,无需手动插入
update_time DATETIME NOT NULL 系统当前时间 - - 用户信息更新时间 修改数据时自动刷新

关联关系

  • 多对一关联sys_role表:通过role_id外键,一个角色对应多个用户,一个用户仅属于一个角色
  • 一对多关联所有业务表:作为user_id/xxx_user_id外键源表,一个用户对应多条业务记录

2.2 sys_role(角色表)

表注释

存储系统用户角色,实现基于角色的权限控制(RBAC),仅维护核心角色信息,权限分配通过中间表sys_role_perm实现

建表语句

mysql

复制代码
CREATE TABLE `sys_role` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '角色主键ID,系统内唯一标识',
  `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称,唯一',
  `role_desc` VARCHAR(255) DEFAULT NULL COMMENT '角色描述,说明权限范围',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '角色创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '角色信息更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_role_role_name` (`role_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='角色表,存储系统用户角色';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 角色主键 ID,系统内唯一标识 1 = 管理员,2 = 普通用户
role_name VARCHAR(50) NOT NULL - 唯一索引 50 角色名称,唯一 如 "管理员""普通用户",不可重复
role_desc VARCHAR(255) NULL NULL - 255 角色描述,说明权限范围 用于后台角色管理展示
create_time DATETIME NOT NULL 系统当前时间 - - 角色创建时间 自动赋值,无需手动插入
update_time DATETIME NOT NULL 系统当前时间 - - 角色信息更新时间 修改数据时自动刷新

关联关系

  • 一对多关联sys_user表:通过id作为sys_user.role_id外键,一个角色对应多个用户
  • 多对多关联sys_permission表:通过中间表sys_role_perm关联,一个角色对应多个权限

2.3 sys_permission(权限表)

表注释

存储系统所有操作权限,分为菜单权限和按钮权限,支持自关联实现父子层级(菜单下挂按钮),权限标识perm_key为业务层权限校验核心

建表语句

mysql

复制代码
CREATE TABLE `sys_permission` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '权限主键ID,系统内唯一标识',
  `perm_name` VARCHAR(100) NOT NULL COMMENT '权限名称,用于前端展示',
  `perm_key` VARCHAR(100) NOT NULL COMMENT '权限标识,业务层校验核心,格式:模块:操作',
  `perm_type` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '权限类型:1=菜单权限,2=按钮权限',
  `parent_id` INT(11) DEFAULT NULL COMMENT '父权限ID,关联自身id,NULL为顶级权限',
  `perm_desc` VARCHAR(255) DEFAULT NULL COMMENT '权限描述,说明操作范围',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '权限创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '权限信息更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_perm_perm_name` (`perm_name`),
  UNIQUE KEY `idx_sys_perm_perm_key` (`perm_key`),
  KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限表,存储系统所有操作权限';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 权限主键 ID,系统内唯一标识 自增起始值 1
perm_name VARCHAR(100) NOT NULL - 唯一索引 100 权限名称,用于前端展示 如 "设备查询""启动充电",不可重复
perm_key VARCHAR(100) NOT NULL - 唯一索引 100 权限标识,业务层校验核心,格式:模块:操作 如 device:query、charge:start,后端鉴权用
perm_type TINYINT(1) NOT NULL 1 - 1 权限类型:1 = 菜单权限,2 = 按钮权限 1 对应前端导航菜单,2 对应页面操作按钮
parent_id INT(11) NULL NULL 普通索引 11 父权限 ID,关联自身 id,NULL 为顶级权限 实现权限父子层级,如 "设备管理" 菜单下挂 "设备查询" 按钮
perm_desc VARCHAR(255) NULL NULL - 255 权限描述,说明操作范围 用于后台权限管理展示
create_time DATETIME NOT NULL 系统当前时间 - - 权限创建时间 自动赋值,无需手动插入
update_time DATETIME NOT NULL 系统当前时间 - - 权限信息更新时间 修改数据时自动刷新

关联关系

  • 自关联:通过parent_id关联自身id,实现权限的父子层级结构
  • 多对多关联sys_role表:通过中间表sys_role_perm关联,一个权限可分配给多个角色

2.4 sys_role_perm(角色权限关联中间表)

表注释

角色 - 权限多对多关联中间表,维护角色与权限的关联关系,通过联合唯一索引避免重复分配,记录权限分配操作人

建表语句

mysql

复制代码
CREATE TABLE `sys_role_perm` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '关联主键ID,中间表唯一标识',
  `role_id` INT(11) NOT NULL COMMENT '角色ID,关联sys_role.id',
  `perm_id` INT(11) NOT NULL COMMENT '权限ID,关联sys_permission.id',
  `create_user_id` INT(11) NOT NULL COMMENT '创建人ID,关联sys_user.id,记录权限分配人',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '关联创建时间,即权限分配时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_role_perm_role_perm` (`role_id`,`perm_id`),
  KEY `idx_role_id` (`role_id`),
  KEY `idx_perm_id` (`perm_id`),
  CONSTRAINT `fk_sys_role_perm_role_id` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_sys_role_perm_perm_id` FOREIGN KEY (`perm_id`) REFERENCES `sys_permission` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_sys_role_perm_create_user` FOREIGN KEY (`create_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联中间表,实现角色与权限的多对多关联';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 关联主键 ID,中间表唯一标识 自增起始值 1
role_id INT(11) NOT NULL - 普通索引、外键、联合索引 11 角色 ID,关联 sys_role.id 外键约束,主表记录删除时禁止删除
perm_id INT(11) NOT NULL - 普通索引、外键、联合索引 11 权限 ID,关联 sys_permission.id 外键约束,主表记录删除时禁止删除
create_user_id INT(11) NOT NULL - 外键 11 创建人 ID,关联 sys_user.id,记录权限分配人 记录哪个管理员分配了该权限
create_time DATETIME NOT NULL 系统当前时间 - - 关联创建时间,即权限分配时间 自动赋值,无需手动插入

关联关系

  • 多对一关联sys_role表:role_id为外键,多个关联记录对应一个角色
  • 多对一关联sys_permission表:perm_id为外键,多个关联记录对应一个权限
  • 多对一关联sys_user表:create_user_id为外键,记录权限分配操作人

2.5 sys_perm_change_log(权限变更日志表)

表注释

记录角色权限的所有变更操作(新增 / 删除 / 修改),保存变更前后的权限对比,用于权限审计和问题追溯,数据仅新增不修改 / 删除

建表语句

mysql

复制代码
CREATE TABLE `sys_perm_change_log` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '日志主键ID,系统内唯一标识',
  `role_id` INT(11) NOT NULL COMMENT '角色ID,关联sys_role.id,记录变更的角色',
  `change_user_id` INT(11) NOT NULL COMMENT '变更人ID,关联sys_user.id,记录操作人',
  `change_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '权限变更时间',
  `before_perm` VARCHAR(500) NOT NULL COMMENT '变更前权限,perm_key以英文逗号分隔',
  `after_perm` VARCHAR(500) NOT NULL COMMENT '变更后权限,perm_key以英文逗号分隔',
  `change_type` TINYINT(2) NOT NULL COMMENT '变更类型:1=新增权限,2=删除权限,3=修改权限',
  `change_remark` VARCHAR(255) DEFAULT NULL COMMENT '变更备注,说明变更原因',
  PRIMARY KEY (`id`),
  KEY `idx_role_id` (`role_id`),
  KEY `idx_change_user_id` (`change_user_id`),
  KEY `idx_change_time` (`change_time`),
  CONSTRAINT `fk_sys_perm_log_role_id` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_sys_perm_log_user_id` FOREIGN KEY (`change_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限变更日志表,记录角色权限的所有变更操作';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 日志主键 ID,系统内唯一标识 自增起始值 1
role_id INT(11) NOT NULL - 普通索引、外键 11 角色 ID,关联 sys_role.id,记录变更的角色 外键约束,主表记录删除时禁止删除
change_user_id INT(11) NOT NULL - 普通索引、外键 11 变更人 ID,关联 sys_user.id,记录操作人 外键约束,记录哪个管理员执行了变更
change_time DATETIME NOT NULL 系统当前时间 - - 权限变更时间 自动赋值,无需手动插入
before_perm VARCHAR(500) NOT NULL - - 500 变更前权限,perm_key 以英文逗号分隔 如 device:query,charge:start
after_perm VARCHAR(500) NOT NULL - - 500 变更后权限,perm_key 以英文逗号分隔 变更后最新的权限集合
change_type TINYINT(2) NOT NULL - - 2 变更类型:1 = 新增,2 = 删除,3 = 修改 标识权限变更的具体操作类型
change_remark VARCHAR(255) NULL NULL - 255 变更备注,说明变更原因 便于后续审计、问题追溯

关联关系

  • 多对一关联sys_role表:role_id为外键,一个角色对应多条变更日志
  • 多对一关联sys_user表:change_user_id为外键,一个用户对应多条操作日志

2.6 sys_operate_log(用户操作日志表)

表注释

记录系统所有用户的操作行为(登录 / 退出 / 模块操作),记录操作 IP / 设备 / 执行结果,用于系统审计、操作追溯和问题排查,数据仅新增不修改

建表语句

mysql

复制代码
CREATE TABLE `sys_operate_log` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '日志主键ID,系统内唯一标识',
  `user_id` INT(11) NOT NULL COMMENT '操作人ID,关联sys_user.id,匿名操作记0',
  `operate_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作执行时间',
  `operate_type` TINYINT(2) NOT NULL COMMENT '操作类型:1=登录,2=退出,3=新增,4=修改,5=删除,6=查询',
  `operate_module` VARCHAR(50) NOT NULL COMMENT '操作模块,如用户管理、设备管理',
  `operate_content` VARCHAR(255) NOT NULL COMMENT '操作内容,简明描述操作行为',
  `operate_ip` VARCHAR(50) DEFAULT NULL COMMENT '操作IP地址,支持IPv4/IPv6',
  `operate_device` VARCHAR(100) DEFAULT NULL COMMENT '操作设备,如Chrome/Windows10、微信小程序',
  `is_success` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '操作是否成功:0=失败,1=成功',
  `fail_reason` VARCHAR(255) DEFAULT NULL COMMENT '失败原因,操作失败时记录',
  `operate_detail` TEXT DEFAULT NULL COMMENT '操作详情,存储请求参数/响应结果,用于问题排查',
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_operate_time` (`operate_time`),
  KEY `idx_operate_type` (`operate_type`),
  KEY `idx_operate_module` (`operate_module`),
  KEY `idx_is_success` (`is_success`),
  CONSTRAINT `fk_sys_operate_log_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户操作日志表,记录系统所有用户的操作行为';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 日志主键 ID,系统内唯一标识 自增起始值 1
user_id INT(11) NOT NULL - 普通索引、外键 11 操作人 ID,关联 sys_user.id,匿名操作记 0 外键约束,记录操作主体,匿名操作(如游客访问)记 0
operate_time DATETIME NOT NULL 系统当前时间 - - 操作执行时间 自动赋值,精确到秒
operate_type TINYINT(2) NOT NULL - 普通索引 2 操作类型:1 = 登录,2 = 退出,3 = 新增,4 = 修改,5 = 删除,6 = 查询 标识操作的核心类型
operate_module VARCHAR(50) NOT NULL - 普通索引 50 操作模块,如用户管理、设备管理 便于按模块筛选日志
operate_content VARCHAR(255) NOT NULL - - 255 操作内容,简明描述操作行为 如 "新增用户:13800138000""启动充电桩:SN10001"
operate_ip VARCHAR(50) NULL NULL - 50 操作 IP 地址,支持 IPv4/IPv6 记录用户操作的终端 IP,用于溯源
operate_device VARCHAR(100) NULL NULL - 100 操作设备,如 Chrome/Windows10、微信小程序 记录用户操作的终端设备 / 浏览器
is_success TINYINT(1) NOT NULL 1 普通索引 1 操作是否成功:0 = 失败,1 = 成功 标识操作执行结果
fail_reason VARCHAR(255) NULL NULL - 255 失败原因,操作失败时记录 如 "密码错误""权限不足""设备离线"
operate_detail TEXT NULL NULL - 不限 操作详情,存储请求参数 / 响应结果 存储 JSON 格式的请求 / 响应数据,便于问题排查

关联关系

  • 多对一关联sys_user表:user_id为外键,一个用户对应多条操作日志,无反向关联

3. 设备管理表

3.1 charging_pile(充电桩设备主表)

表注释

存储充电桩设备核心信息,为系统双核心主表之一,所有设备相关业务表均关联此表,记录设备绑定状态、在线状态、运行状态等核心属性

建表语句

mysql

复制代码
CREATE TABLE `charging_pile` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '设备主键ID,系统内唯一标识',
  `pile_sn` VARCHAR(50) NOT NULL COMMENT '充电桩序列号,设备唯一标识',
  `pile_imei` VARCHAR(50) NOT NULL COMMENT '充电桩IMEI码,物联网卡唯一标识',
  `pile_name` VARCHAR(50) DEFAULT NULL COMMENT '设备自定义名称,用户可修改',
  `user_id` INT(11) DEFAULT NULL COMMENT '绑定用户ID,关联sys_user.id,未绑定为NULL',
  `bind_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '绑定状态:0=未绑定,1=已绑定',
  `bind_time` DATETIME DEFAULT NULL COMMENT '设备绑定时间',
  `bind_audit_type` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '绑定审核类型:1=自动,2=手动',
  `bind_audit_user_id` INT(11) DEFAULT NULL COMMENT '绑定审核人ID,关联sys_user.id,自动审核为NULL',
  `bind_audit_time` DATETIME DEFAULT NULL COMMENT '绑定审核时间',
  `online_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '在线状态:0=离线,1=在线',
  `run_status` TINYINT(2) NOT NULL DEFAULT 0 COMMENT '运行状态:0=待机,1=充电中,2=故障,3=休眠',
  `gun_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '枪头状态:0=未插入,1=已插入',
  `gun_temp` INT(3) DEFAULT NULL COMMENT '枪头温度,单位:℃',
  `lightning_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '防雷模块状态:0=故障,1=正常',
  `ground_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '接地状态:0=异常,1=正常',
  `rated_power` DECIMAL(5,1) NOT NULL DEFAULT 7.0 COMMENT '设备额定功率,单位:kW',
  `max_power` DECIMAL(5,1) NOT NULL DEFAULT 7.0 COMMENT '设备最大充电功率,单位:kW',
  `voltage_range` VARCHAR(50) NOT NULL DEFAULT '220V' COMMENT '充电电压范围',
  `current_range` VARCHAR(50) NOT NULL DEFAULT '32A' COMMENT '充电电流范围',
  `network_type` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '网络模式:1=WiFi,2=4G',
  `wifi_ssid` VARCHAR(100) DEFAULT NULL COMMENT 'WiFi账号,网络模式为WiFi时填写',
  `wifi_password` VARCHAR(100) DEFAULT NULL COMMENT 'WiFi密码,AES加密存储',
  `apn_param` VARCHAR(100) DEFAULT NULL COMMENT '4G APN参数,网络模式为4G时填写',
  `firmware_version` VARCHAR(50) NOT NULL DEFAULT 'V1.0.0' COMMENT '设备当前固件版本',
  `last_online_time` DATETIME DEFAULT NULL COMMENT '设备最后在线时间',
  `offline_reason` VARCHAR(50) DEFAULT NULL COMMENT '设备离线原因,如网络故障、断电',
  `refresh_frequency` TINYINT(2) NOT NULL DEFAULT 10 COMMENT '设备状态刷新频率,单位:秒',
  `time_zone` VARCHAR(50) NOT NULL DEFAULT 'Asia/Shanghai' COMMENT '设备时区设置',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '设备注册时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '设备信息更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_charging_pile_sn` (`pile_sn`),
  UNIQUE KEY `idx_charging_pile_imei` (`pile_imei`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_bind_status` (`bind_status`),
  KEY `idx_online_status` (`online_status`),
  KEY `idx_run_status` (`run_status`),
  KEY `idx_gun_status` (`gun_status`),
  CONSTRAINT `fk_charging_pile_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charging_pile_audit_user` FOREIGN KEY (`bind_audit_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电桩设备主表,存储设备核心信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 设备主键 ID,系统内唯一标识 自增起始值 1
pile_sn VARCHAR(50) NOT NULL - 唯一索引 50 充电桩序列号,设备唯一标识 设备出厂唯一编号,不可重复
pile_imei VARCHAR(50) NOT NULL - 唯一索引 50 充电桩 IMEI 码,物联网卡唯一标识 设备网络通信的唯一标识
pile_name VARCHAR(50) NULL NULL - 50 设备自定义名称,用户可修改 如 "客厅充电桩",便于用户区分多设备
user_id INT(11) NULL NULL 普通索引、外键 11 绑定用户 ID,关联 sys_user.id,未绑定为 NULL 未绑定设备该字段为 NULL
bind_status TINYINT(1) NOT NULL 0 普通索引 1 绑定状态:0 = 未绑定,1 = 已绑定 标识设备是否被用户绑定
bind_time DATETIME NULL NULL - - 设备绑定时间 绑定成功后自动赋值
bind_audit_type TINYINT(1) NOT NULL 1 - 1 绑定审核类型:1 = 自动,2 = 手动 自动审核无需管理员干预,手动审核需管理员确认
bind_audit_user_id INT(11) NULL NULL 外键 11 绑定审核人 ID,关联 sys_user.id,自动审核为 NULL 手动审核时记录审核的管理员 ID
bind_audit_time DATETIME NULL NULL - - 绑定审核时间 审核完成后自动赋值
online_status TINYINT(1) NOT NULL 0 普通索引 1 在线状态:0 = 离线,1 = 在线 标识设备是否与系统建立网络连接
run_status TINYINT(2) NOT NULL 0 普通索引 2 运行状态:0 = 待机,1 = 充电中,2 = 故障,3 = 休眠 设备核心运行状态,关联业务逻辑
gun_status TINYINT(1) NOT NULL 0 普通索引 1 枪头状态:0 = 未插入,1 = 已插入 枪头插入车辆后才可启动充电
gun_temp INT(3) NULL NULL - 3 枪头温度,单位:℃ 实时采集,超过阈值触发告警
lightning_status TINYINT(1) NOT NULL 1 - 1 防雷模块状态:0 = 故障,1 = 正常 故障时禁止充电,保障安全
ground_status TINYINT(1) NOT NULL 1 - 1 接地状态:0 = 异常,1 = 正常 异常时禁止充电,保障安全
rated_power DECIMAL(5,1) NOT NULL 7.0 - 5,1 设备额定功率,单位:kW 设备设计的标准充电功率
max_power DECIMAL(5,1) NOT NULL 7.0 - 5,1 设备最大充电功率,单位:kW 设备支持的最大充电功率,不可超过
voltage_range VARCHAR(50) NOT NULL 220V - 50 充电电压范围 如 "220V""380V",适配不同电网
current_range VARCHAR(50) NOT NULL 32A - 50 充电电流范围 如 "32A",标识设备最大输出电流
network_type TINYINT(1) NOT NULL 1 - 1 网络模式:1=WiFi,2=4G 设备与系统通信的网络方式
wifi_ssid VARCHAR(100) NULL NULL - 100 WiFi 账号,网络模式为 WiFi 时填写 设备连接的 WiFi 名称
wifi_password VARCHAR(100) NULL NULL - 100 WiFi 密码,AES 加密存储 加密存储,防止泄露
apn_param VARCHAR(100) NULL NULL - 100 4G APN 参数,网络模式为 4G 时填写 物联网卡的 APN 配置参数
firmware_version VARCHAR(50) NOT NULL V1.0.0 - 50 设备当前固件版本 如 V1.0.0,用于固件升级判断
last_online_time DATETIME NULL NULL - - 设备最后在线时间 设备离线后记录最后一次在线的时间
offline_reason VARCHAR(50) NULL NULL - 50 设备离线原因,如网络故障、断电 设备离线时自动记录原因
refresh_frequency TINYINT(2) NOT NULL 10 - 2 设备状态刷新频率,单位:秒 设备向系统上报状态的时间间隔
time_zone VARCHAR(50) NOT NULL Asia/Shanghai - 50 设备时区设置 默认为东八区,保证时间同步
create_time DATETIME NOT NULL 系统当前时间 - - 设备注册时间 设备首次接入系统时自动赋值
update_time DATETIME NOT NULL 系统当前时间 - - 设备信息更新时间 修改数据时自动刷新

关联关系

  • 多对一关联sys_user表:user_id(绑定用户)、bind_audit_user_id(审核人)为外键,一个用户可绑定多个设备
  • 核心主表,一对多关联所有设备相关业务表:pile_protect_parampile_firmware_upgradecharge_record
  • 一对一关联pile_protect_paramcharge_mode_configcharge_power_control

3.2 pile_protect_param(设备保护参数表)

表注释

存储充电桩设备安全保护阈值参数,与设备主表一对一关联,一个设备仅对应一套保护参数,参数超过阈值时触发设备保护并告警

建表语句

mysql

复制代码
CREATE TABLE `pile_protect_param` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '保护参数主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `over_voltage` DECIMAL(5,1) NOT NULL DEFAULT 250.0 COMMENT '过压保护阈值,单位:V',
  `under_voltage` DECIMAL(5,1) NOT NULL DEFAULT 180.0 COMMENT '欠压保护阈值,单位:V',
  `over_current` DECIMAL(5,1) NOT NULL DEFAULT 32.0 COMMENT '过流保护阈值,单位:A',
  `over_temp` INT(3) NOT NULL DEFAULT 60 COMMENT '过温保护阈值,单位:℃',
  `leakage_current` DECIMAL(4,2) NOT NULL DEFAULT 0.03 COMMENT '漏电保护阈值,单位:A',
  `ground_threshold` DECIMAL(4,2) NOT NULL DEFAULT 0.05 COMMENT '接地保护阈值,单位:A',
  `voltage_fluctuation` DECIMAL(4,1) NOT NULL DEFAULT 10.0 COMMENT '电压波动保护阈值,单位:V',
  `current_fluctuation` DECIMAL(4,1) NOT NULL DEFAULT 5.0 COMMENT '电流波动保护阈值,单位:A',
  `update_user_id` INT(11) NOT NULL COMMENT '更新人ID,关联sys_user.id,记录参数修改人',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '参数更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_pile_protect_param_pile_id` (`pile_id`),
  CONSTRAINT `fk_pile_protect_param_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_pile_protect_param_user_id` FOREIGN KEY (`update_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='设备保护参数表,存储设备安全保护阈值参数';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 保护参数主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 唯一索引、外键 11 设备 ID,关联 charging_pile.id 一对一关联,一个设备仅对应一套参数
over_voltage DECIMAL(5,1) NOT NULL 250.0 - 5,1 过压保护阈值,单位:V 电压超过该值触发过压保护,停止充电
under_voltage DECIMAL(5,1) NOT NULL 180.0 - 5,1 欠压保护阈值,单位:V 电压低于该值触发欠压保护,停止充电
over_current DECIMAL(5,1) NOT NULL 32.0 - 5,1 过流保护阈值,单位:A 电流超过该值触发过流保护,停止充电
over_temp INT(3) NOT NULL 60 - 3 过温保护阈值,单位:℃ 设备 / 枪头温度超过该值触发过温保护
leakage_current DECIMAL(4,2) NOT NULL 0.03 - 4,2 漏电保护阈值,单位:A 漏电流超过该值触发漏电保护,切断电源
ground_threshold DECIMAL(4,2) NOT NULL 0.05 - 4,2 接地保护阈值,单位:A 接地异常电流超过该值触发接地保护
voltage_fluctuation DECIMAL(4,1) NOT NULL 10.0 - 4,1 电压波动保护阈值,单位:V 电压波动超过该值触发保护
current_fluctuation DECIMAL(4,1) NOT NULL 5.0 - 4,1 电流波动保护阈值,单位:A 电流波动超过该值触发保护
update_user_id INT(11) NOT NULL - 外键 11 更新人 ID,关联 sys_user.id,记录参数修改人 记录哪个管理员 / 用户修改了保护参数
update_time DATETIME NOT NULL 系统当前时间 - - 参数更新时间 修改数据时自动刷新

关联关系

  • 一对一关联charging_pile表:pile_id为唯一索引,一个设备仅对应一套保护参数
  • 多对一关联sys_user表:update_user_id为外键,记录参数更新操作人

3.3 pile_firmware_upgrade(设备固件升级记录表)

表注释

存储充电桩设备固件升级的所有记录,与设备主表一对多关联,一个设备可对应多条升级记录,记录升级版本、进度、结果等信息

建表语句

mysql

复制代码
CREATE TABLE `pile_firmware_upgrade` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '升级记录主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `firmware_version_old` VARCHAR(50) NOT NULL COMMENT '升级前固件版本',
  `firmware_version_new` VARCHAR(50) NOT NULL COMMENT '升级后固件版本',
  `upgrade_package` VARCHAR(255) NOT NULL COMMENT '固件升级包URL地址',
  `upgrade_size` DECIMAL(10,2) DEFAULT NULL COMMENT '升级包大小,单位:MB',
  `upgrade_type` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '升级类型:1=单个设备,2=批量设备',
  `upgrade_status` TINYINT(2) NOT NULL DEFAULT 0 COMMENT '升级状态:0=未开始,1=升级中,2=成功,3=失败',
  `upgrade_progress` INT(3) NOT NULL DEFAULT 0 COMMENT '升级进度,单位:%',
  `upgrade_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '升级开始时间',
  `complete_time` DATETIME DEFAULT NULL COMMENT '升级完成时间',
  `fail_reason` VARCHAR(255) DEFAULT NULL COMMENT '升级失败原因,如网络故障、包损坏',
  `rollback_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '回滚状态:0=未回滚,1=已回滚',
  `rollback_time` DATETIME DEFAULT NULL COMMENT '回滚执行时间',
  `operate_user_id` INT(11) NOT NULL COMMENT '操作人ID,关联sys_user.id,记录升级操作人',
  PRIMARY KEY (`id`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_upgrade_status` (`upgrade_status`),
  KEY `idx_upgrade_time` (`upgrade_time`),
  CONSTRAINT `fk_pile_firmware_upgrade_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_pile_firmware_upgrade_user_id` FOREIGN KEY (`operate_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='设备固件升级记录表,存储设备固件升级信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 升级记录主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 一对多关联,一个设备可对应多条升级记录
firmware_version_old VARCHAR(50) NOT NULL - - 50 升级前固件版本 如 V1.0.0,记录升级前的版本号
firmware_version_new VARCHAR(50) NOT NULL - - 50 升级后固件版本 如 V1.1.0,记录升级后的目标版本号
upgrade_package VARCHAR(255) NOT NULL - - 255 固件升级包 URL 地址 存储升级包的远程地址,如 OSS/CDN 地址
upgrade_size DECIMAL(10,2) NULL NULL - 10,2 升级包大小,单位:MB 记录升级包的文件大小,便于展示
upgrade_type TINYINT(1) NOT NULL 1 - 1 升级类型:1 = 单个设备,2 = 批量设备 标识是单设备升级还是多设备批量升级
upgrade_status TINYINT(2) NOT NULL 0 普通索引 2 升级状态:0 = 未开始,1 = 升级中,2 = 成功,3 = 失败 标识升级的当前执行状态
upgrade_progress INT(3) NOT NULL 0 - 3 升级进度,单位:% 0-100,升级中实时刷新进度
upgrade_time DATETIME NOT NULL 系统当前时间 - - 升级开始时间 启动升级时自动赋值
complete_time DATETIME NULL NULL - - 升级完成时间 升级成功 / 失败后自动赋值
fail_reason VARCHAR(255) NULL NULL - 255 升级失败原因,如网络故障、包损坏 升级失败时记录具体原因,便于排查
rollback_status TINYINT(1) NOT NULL 0 - 1 回滚状态:0 = 未回滚,1 = 已回滚 升级失败后可执行版本回滚,标识回滚状态
rollback_time DATETIME NULL NULL - - 回滚执行时间 回滚操作完成后自动赋值
operate_user_id INT(11) NOT NULL - 外键 11 操作人 ID,关联 sys_user.id,记录升级操作人 记录哪个管理员执行了升级操作

关联关系

  • 多对一关联charging_pile表:pile_id为外键,一个设备可对应多条升级记录
  • 多对一关联sys_user表:operate_user_id为外键,记录升级操作人

4. 充电控制表

4.1 charge_mode_config(充电模式配置表)

表注释

存储充电桩设备的充电模式及峰谷电价配置,与设备主表一对一关联,一个设备仅对应一套配置,支持立即、定时、峰谷三种充电模式

建表语句

mysql

复制代码
CREATE TABLE `charge_mode_config` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '配置主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `default_mode` TINYINT(2) NOT NULL DEFAULT 1 COMMENT '默认充电模式:1=立即充电,2=定时充电,3=峰谷充电',
  `peak_start` TIME DEFAULT NULL COMMENT '峰时开始时间,峰谷模式时生效',
  `peak_end` TIME DEFAULT NULL COMMENT '峰时结束时间,峰谷模式时生效',
  `valley_start` TIME DEFAULT NULL COMMENT '谷时开始时间,峰谷模式时生效',
  `valley_end` TIME DEFAULT NULL COMMENT '谷时结束时间,峰谷模式时生效',
  `peak_price` DECIMAL(4,2) DEFAULT NULL COMMENT '峰时电价,单位:元/kWh,峰谷模式时生效',
  `valley_price` DECIMAL(4,2) DEFAULT NULL COMMENT '谷时电价,单位:元/kWh,峰谷模式时生效',
  `holiday_peak_price` DECIMAL(4,2) DEFAULT NULL COMMENT '节假日峰时电价,单位:元/kWh',
  `holiday_valley_price` DECIMAL(4,2) DEFAULT NULL COMMENT '节假日谷时电价,单位:元/kWh',
  `workday_type` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '工作日区分:1=周一至周五,2=自定义',
  `workday_detail` VARCHAR(50) DEFAULT NULL COMMENT '自定义工作日,如1,2,3,4,5(1=周一)',
  `update_user_id` INT(11) NOT NULL COMMENT '更新人ID,关联sys_user.id,记录配置修改人',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '配置更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_charge_mode_config_pile_id` (`pile_id`),
  CONSTRAINT `fk_charge_mode_config_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_mode_config_user_id` FOREIGN KEY (`update_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电模式配置表,存储设备充电模式及峰谷电价配置';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 配置主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 唯一索引、外键 11 设备 ID,关联 charging_pile.id 一对一关联,一个设备仅对应一套配置
default_mode TINYINT(2) NOT NULL 1 - 2 默认充电模式:1 = 立即,2 = 定时,3 = 峰谷 设备默认采用的充电模式
peak_start TIME NULL NULL - - 峰时开始时间,峰谷模式时生效 如 08:00:00,峰谷模式下的峰时起始时间
peak_end TIME NULL NULL - - 峰时结束时间,峰谷模式时生效 如 22:00:00,峰谷模式下的峰时结束时间
valley_start TIME NULL NULL - - 谷时开始时间,峰谷模式时生效 如 22:00:00,峰谷模式下的谷时起始时间
valley_end TIME NULL NULL - - 谷时结束时间,峰谷模式时生效 如 08:00:00,峰谷模式下的谷时结束时间
peak_price DECIMAL(4,2) NULL NULL - 4,2 峰时电价,单位:元 /kWh,峰谷模式时生效 峰时充电的单价,高于谷时电价
valley_price DECIMAL(4,2) NULL NULL - 4,2 谷时电价,单位:元 /kWh,峰谷模式时生效 谷时充电的单价,低于峰时电价
holiday_peak_price DECIMAL(4,2) NULL NULL - 4,2 节假日峰时电价,单位:元 /kWh 节假日峰时的充电单价
holiday_valley_price DECIMAL(4,2) NULL NULL - 4,2 节假日谷时电价,单位:元 /kWh 节假日谷时的充电单价
workday_type TINYINT(1) NOT NULL 1 - 1 工作日区分:1 = 周一至周五,2 = 自定义 标识工作日的判断规则
workday_detail VARCHAR(50) NULL NULL - 50 自定义工作日,如 1,2,3,4,5(1 = 周一) workday_type=2 时生效,逗号分隔数字
update_user_id INT(11) NOT NULL - 外键 11 更新人 ID,关联 sys_user.id,记录配置修改人 记录哪个管理员 / 用户修改了充电模式配置
update_time DATETIME NOT NULL 系统当前时间 - - 配置更新时间 修改数据时自动刷新

关联关系

  • 一对一关联charging_pile表:pile_id为唯一索引,一个设备仅对应一套充电模式配置
  • 多对一关联sys_user表:update_user_id为外键,记录配置更新操作人
  • 业务关联price_config表:无物理外键,设备本地配置优先级高于全局电价配置

4.2 timed_charge_task(定时充电任务表)

表注释

存储用户创建的定时充电任务,与设备主表一对多关联,一个设备可创建多个任务(受系统参数限制),任务执行后生成充电记录

建表语句

mysql

复制代码
CREATE TABLE `timed_charge_task` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '任务主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `task_name` VARCHAR(50) DEFAULT NULL COMMENT '任务自定义名称,用户可修改',
  `start_time` TIME NOT NULL COMMENT '充电开始时间',
  `end_time` TIME NOT NULL COMMENT '充电结束时间',
  `cycle_type` TINYINT(2) NOT NULL DEFAULT 1 COMMENT '循环类型:1=每天,2=工作日,3=周末,4=自定义',
  `cycle_detail` VARCHAR(50) DEFAULT NULL COMMENT '自定义循环详情,如1,3,5(1=周一)',
  `target_energy` DECIMAL(5,2) DEFAULT NULL COMMENT '目标充电电量,单位:kWh,达到后停止',
  `target_battery` DECIMAL(3,1) DEFAULT NULL COMMENT '目标电池电量,单位:%,达到后停止',
  `remind_time` TINYINT(2) NOT NULL DEFAULT 10 COMMENT '任务执行提醒时间,单位:分钟,执行前提醒',
  `task_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '任务状态:0=禁用,1=启用',
  `create_user_id` INT(11) NOT NULL COMMENT '创建人ID,关联sys_user.id,记录任务创建人',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '任务创建时间',
  `update_user_id` INT(11) DEFAULT NULL COMMENT '更新人ID,关联sys_user.id,记录任务修改人',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '任务更新时间',
  `delete_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除状态:0=未删除,1=已删除(逻辑删除)',
  PRIMARY KEY (`id`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_cycle_type` (`cycle_type`),
  KEY `idx_task_status` (`task_status`),
  KEY `idx_delete_status` (`delete_status`),
  CONSTRAINT `fk_timed_charge_task_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_timed_charge_task_create_user` FOREIGN KEY (`create_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_timed_charge_task_update_user` FOREIGN KEY (`update_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='定时充电任务表,存储用户创建的定时充电任务';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 任务主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 一对多关联,一个设备可创建多个任务
task_name VARCHAR(50) NULL NULL - 50 任务自定义名称,用户可修改 如 "夜间充电",便于用户区分多任务
start_time TIME NOT NULL - - - 充电开始时间 如 23:00:00,任务执行的起始时间
end_time TIME NOT NULL - - - 充电结束时间 如 07:00:00,任务执行的结束时间
cycle_type TINYINT(2) NOT NULL 1 普通索引 2 循环类型:1 = 每天,2 = 工作日,3 = 周末,4 = 自定义 任务的执行周期规则
cycle_detail VARCHAR(50) NULL NULL - 50 自定义循环详情,如 1,3,5(1 = 周一) cycle_type=4 时生效,逗号分隔数字
target_energy DECIMAL(5,2) NULL NULL - 5,2 目标充电电量,单位:kWh,达到后停止 如 10.00,充电量达到该值后自动停止
target_battery DECIMAL(3,1) NULL NULL - 3,1 目标电池电量,单位:%,达到后停止 如 80.0,电池电量达到该值后自动停止
remind_time TINYINT(2) NOT NULL 10 - 2 任务执行提醒时间,单位:分钟,执行前提醒 如 10,任务执行前 10 分钟推送提醒
task_status TINYINT(1) NOT NULL 1 普通索引 1 任务状态:0 = 禁用,1 = 启用 禁用的任务不会执行
create_user_id INT(11) NOT NULL - 外键 11 创建人 ID,关联 sys_user.id,记录任务创建人 记录哪个用户创建了该任务
create_time DATETIME NOT NULL 系统当前时间 - - 任务创建时间 自动赋值,无需手动插入
update_user_id INT(11) NULL NULL 外键 11 更新人 ID,关联 sys_user.id,记录任务修改人 任务修改时记录操作人
update_time DATETIME NOT NULL 系统当前时间 - - 任务更新时间 修改数据时自动刷新
delete_status TINYINT(1) NOT NULL 0 普通索引 1 删除状态:0 = 未删除,1 = 已删除(逻辑删除) 逻辑删除,便于数据追溯

关联关系

  • 多对一关联charging_pile表:pile_id为外键,一个设备可创建多个定时任务(受系统参数MAX_TASK_NUM限制)
  • 多对一关联sys_user表:create_user_id/update_user_id为外键,记录任务操作人
  • 业务关联charge_record表:无物理外键,任务执行后生成对应的充电记录

4.3 charge_power_control(充电功率控制表)

表注释

存储充电桩设备的充电功率控制参数,与设备主表一对一关联,一个设备仅对应一套参数,支持手动 / 自动功率调节,保障充电安全

建表语句

mysql

复制代码
CREATE TABLE `charge_power_control` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '控制参数主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `min_power` DECIMAL(5,1) NOT NULL DEFAULT 1.0 COMMENT '最小充电功率,单位:kW',
  `max_power` DECIMAL(5,1) NOT NULL DEFAULT 7.0 COMMENT '最大充电功率,单位:kW',
  `step_power` DECIMAL(2,1) NOT NULL DEFAULT 0.1 COMMENT '功率调节步进,单位:kW/步',
  `auto_adjust_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '自动调节状态:0=关闭,1=开启',
  `grid_load_threshold` DECIMAL(5,1) NOT NULL DEFAULT 5.0 COMMENT '电网负荷阈值,单位:kW,自动调节时生效',
  `temp_adjust_threshold` INT(3) NOT NULL DEFAULT 50 COMMENT '温度调节阈值,单位:℃,自动调节时生效',
  `update_user_id` INT(11) NOT NULL COMMENT '更新人ID,关联sys_user.id,记录参数修改人',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '参数更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_charge_power_control_pile_id` (`pile_id`),
  CONSTRAINT `fk_charge_power_control_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_power_control_user_id` FOREIGN KEY (`update_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电功率控制表,存储设备充电功率控制参数';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 控制参数主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 唯一索引、外键 11 设备 ID,关联 charging_pile.id 一对一关联,一个设备仅对应一套参数
min_power DECIMAL(5,1) NOT NULL 1.0 - 5,1 最小充电功率,单位:kW 设备支持的最小充电功率,不可低于
max_power DECIMAL(5,1) NOT NULL 7.0 - 5,1 最大充电功率,单位:kW 设备支持的最大充电功率,不可超过
step_power DECIMAL(2,1) NOT NULL 0.1 - 2,1 功率调节步进,单位:kW / 步 每次调节的功率增量,如 0.1kW / 步
auto_adjust_status TINYINT(1) NOT NULL 1 - 1 自动调节状态:0 = 关闭,1 = 开启 开启后设备根据电网负荷 / 温度自动调节功率
grid_load_threshold DECIMAL(5,1) NOT NULL 5.0 - 5,1 电网负荷阈值,单位:kW,自动调节时生效 电网负荷超过该值时自动降低充电功率
temp_adjust_threshold INT(3) NOT NULL 50 - 3 温度调节阈值,单位:℃,自动调节时生效 设备温度超过该值时自动降低充电功率
update_user_id INT(11) NOT NULL - 外键 11 更新人 ID,关联 sys_user.id,记录参数修改人 记录哪个管理员 / 用户修改了功率参数
update_time DATETIME NOT NULL 系统当前时间 - - 参数更新时间 修改数据时自动刷新

关联关系

  • 一对一关联charging_pile表:pile_id为唯一索引,一个设备仅对应一套功率控制参数
  • 多对一关联sys_user表:update_user_id为外键,记录参数更新操作人

4.4 charge_record(充电记录主表)

表注释

存储每笔充电的核心详情,为充电业务核心主表,与设备主表一对多关联,一笔充电记录对应一个充电订单,是计费、统计的核心依据

建表语句

mysql

复制代码
CREATE TABLE `charge_record` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '充电记录主键ID,系统内唯一标识',
  `record_no` VARCHAR(50) NOT NULL COMMENT '充电记录编号,唯一,通过sequence生成',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `user_id` INT(11) NOT NULL COMMENT '用户ID,关联sys_user.id',
  `car_model` VARCHAR(50) DEFAULT NULL COMMENT '充电车辆型号',
  `battery_before` DECIMAL(3,1) DEFAULT NULL COMMENT '充电前电池电量,单位:%',
  `battery_after` DECIMAL(3,1) DEFAULT NULL COMMENT '充电后电池电量,单位:%',
  `start_time` DATETIME NOT NULL COMMENT '充电开始时间',
  `end_time` DATETIME DEFAULT NULL COMMENT '充电结束时间',
  `charge_duration` INT(11) DEFAULT NULL COMMENT '充电时长,单位:分钟',
  `total_energy` DECIMAL(6,2) DEFAULT NULL COMMENT '充电总电量,单位:kWh',
  `avg_power` DECIMAL(5,1) DEFAULT NULL COMMENT '平均充电功率,单位:kW',
  `peak_power` DECIMAL(5,1) DEFAULT NULL COMMENT '峰值充电功率,单位:kW',
  `charge_mode` TINYINT(2) NOT NULL DEFAULT 1 COMMENT '充电模式:1=立即,2=定时,3=峰谷',
  `charge_cost` DECIMAL(6,2) DEFAULT NULL COMMENT '充电总费用,单位:元',
  `peak_energy` DECIMAL(6,2) DEFAULT NULL COMMENT '峰时充电电量,单位:kWh',
  `valley_energy` DECIMAL(6,2) DEFAULT NULL COMMENT '谷时充电电量,单位:kWh',
  `holiday_energy` DECIMAL(6,2) DEFAULT NULL COMMENT '节假日充电电量,单位:kWh',
  `stop_reason` TINYINT(2) DEFAULT NULL COMMENT '停止原因:1=正常完成,2=手动停止,3=设备故障,4=保护触发,5=网络断开,6=定量完成',
  `record_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '记录状态:0=充电中,1=已完成,2=异常终止',
  `abnormal_type` TINYINT(2) DEFAULT NULL COMMENT '异常类型:1=功率异常,2=电量异常,3=温度异常,4=电压电流异常',
  `abnormal_desc` VARCHAR(255) DEFAULT NULL COMMENT '异常描述,说明异常具体原因',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_charge_record_no` (`record_no`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_start_time` (`start_time`),
  KEY `idx_end_time` (`end_time`),
  KEY `idx_charge_mode` (`charge_mode`),
  KEY `idx_record_status` (`record_status`),
  KEY `idx_abnormal_type` (`abnormal_type`),
  CONSTRAINT `fk_charge_record_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_record_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电记录主表,存储每笔充电的核心详情';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id BIGINT(20) NOT NULL 自增 主键、AUTO_INCREMENT=1 20 充电记录主键 ID,系统内唯一标识 自增起始值 1,BIGINT 适配大数据量
record_no VARCHAR(50) NOT NULL - 唯一索引 50 充电记录编号,唯一,通过 sequence 生成 如 10000001,业务层唯一标识
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 一对多关联,一个设备对应多条充电记录
user_id INT(11) NOT NULL - 普通索引、外键 11 用户 ID,关联 sys_user.id 一对多关联,一个用户对应多条充电记录
car_model VARCHAR(50) NULL NULL - 50 充电车辆型号 如 "特斯拉 Model 3",用户可手动填写
battery_before DECIMAL(3,1) NULL NULL - 3,1 充电前电池电量,单位:% 如 20.0,充电开始时的电池电量
battery_after DECIMAL(3,1) NULL NULL - 3,1 充电后电池电量,单位:% 如 80.0,充电结束时的电池电量
start_time DATETIME NOT NULL - 普通索引 - 充电开始时间 精确到秒,充电启动时自动赋值
end_time DATETIME NULL NULL 普通索引 - 充电结束时间 充电完成 / 终止后自动赋值
charge_duration INT(11) NULL NULL - 11 充电时长,单位:分钟 自动计算:end_time - start_time
total_energy DECIMAL(6,2) NULL NULL - 6,2 充电总电量,单位:kWh 充电过程中实时累计,结束后固化
avg_power DECIMAL(5,1) NULL NULL - 5,1 平均充电功率,单位:kW 自动计算:总电量 / 充电时长
peak_power DECIMAL(5,1) NULL NULL - 5,1 峰值充电功率,单位:kW 充电过程中记录的最大实时功率
charge_mode TINYINT(2) NOT NULL 1 普通索引 2 充电模式:1 = 立即,2 = 定时,3 = 峰谷 与 charge_mode_config.default_mode 一致
charge_cost DECIMAL(6,2) NULL NULL - 6,2 充电总费用,单位:元 基于电量和电价自动计算,与订单金额一致
peak_energy DECIMAL(6,2) NULL NULL - 6,2 峰时充电电量,单位:kWh 峰谷模式下,峰时时段的充电量
valley_energy DECIMAL(6,2) NULL NULL - 6,2 谷时充电电量,单位:kWh 峰谷模式下,谷时时段的充电量
holiday_energy DECIMAL(6,2) NULL NULL - 6,2 节假日充电电量,单位:kWh 节假日时段的充电量
stop_reason TINYINT(2) NULL NULL - 2 停止原因:1 = 正常,2 = 手动,3 = 故障,4 = 保护,5 = 断网,6 = 定量 标识充电停止的具体原因
record_status TINYINT(1) NOT NULL 0 普通索引 1 记录状态:0 = 充电中,1 = 已完成,2 = 异常终止 充电业务的核心状态,关联订单生成逻辑
abnormal_type TINYINT(2) NULL NULL 普通索引 2 异常类型:1 = 功率,2 = 电量,3 = 温度,4 = 电压电流 record_status=2 时生效,标识异常类型
abnormal_desc VARCHAR(255) NULL NULL - 255 异常描述,说明异常具体原因 如 "枪头温度超过 60℃",便于问题排查
create_time DATETIME NOT NULL 系统当前时间 - - 记录创建时间 充电启动时自动赋值
update_time DATETIME NOT NULL 系统当前时间 - - 记录更新时间 充电过程中实时刷新,结束后固化

关联关系

  • 充电业务核心主表,多对一关联charging_pile表:pile_id为外键,一个设备对应多条充电记录
  • 多对一关联sys_user表:user_id为外键,一个用户对应多条充电记录
  • 一对多关联charge_real_time_data表:一笔充电记录对应多条实时数据
  • 一对一关联charge_order表:一笔充电记录对应一个充电订单
  • 业务关联timed_charge_task表:无物理外键,定时任务触发的充电记录可关联任务 ID
  • 业务关联device_alarm表:充电异常时生成对应的设备告警

4.5 charge_real_time_data(充电实时数据表)

表注释

存储充电过程中的实时采集参数,与充电记录主表一对多关联,一笔充电记录对应多条实时数据,按设备刷新频率持续采集,充电结束后停止

建表语句

mysql

复制代码
CREATE TABLE `charge_real_time_data` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '实时数据主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `record_id` BIGINT(20) DEFAULT NULL COMMENT '充电记录ID,关联charge_record.id',
  `collect_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据采集时间',
  `current` DECIMAL(4,1) DEFAULT NULL COMMENT '实时充电电流,单位:A',
  `voltage` DECIMAL(5,1) DEFAULT NULL COMMENT '实时充电电压,单位:V',
  `power` DECIMAL(5,1) DEFAULT NULL COMMENT '实时充电功率,单位:kW',
  `energy` DECIMAL(6,2) DEFAULT NULL COMMENT '累计充电电量,单位:kWh',
  `pile_temp` INT(3) DEFAULT NULL COMMENT '设备机身温度,单位:℃',
  `battery_temp` INT(3) DEFAULT NULL COMMENT '车辆电池温度,单位:℃',
  `gun_temp` INT(3) DEFAULT NULL COMMENT '充电枪头温度,单位:℃',
  `lightning_status` TINYINT(1) DEFAULT NULL COMMENT '防雷模块状态:0=故障,1=正常',
  `ground_status` TINYINT(1) DEFAULT NULL COMMENT '接地状态:0=异常,1=正常',
  `remaining_time` INT(11) DEFAULT NULL COMMENT '预计剩余充电时间,单位:分钟',
  `remaining_energy` DECIMAL(5,2) DEFAULT NULL COMMENT '预计剩余充电电量,单位:kWh',
  `grid_load` DECIMAL(5,1) DEFAULT NULL COMMENT '实时电网负荷,单位:kW',
  `data_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '数据状态:0=异常,1=正常',
  PRIMARY KEY (`id`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_record_id` (`record_id`),
  KEY `idx_collect_time` (`collect_time`),
  KEY `idx_data_status` (`data_status`),
  CONSTRAINT `fk_charge_real_time_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_real_time_record_id` FOREIGN KEY (`record_id`) REFERENCES `charge_record` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电实时数据表,存储充电过程中的实时采集参数';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id BIGINT(20) NOT NULL 自增 主键、AUTO_INCREMENT=1 20 实时数据主键 ID,系统内唯一标识 自增起始值 1,BIGINT 适配高频采集的大数据量
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 多对一关联,一个设备对应多条实时数据
record_id BIGINT(20) NULL NULL 普通索引、外键 20 充电记录 ID,关联 charge_record.id 多对一关联,一笔充电记录对应多条实时数据
collect_time DATETIME NOT NULL 系统当前时间 普通索引 - 数据采集时间 精确到秒,采集时自动赋值
current DECIMAL(4,1) NULL NULL - 4,1 实时充电电流,单位:A 设备实时采集的充电电流
voltage DECIMAL(5,1) NULL NULL - 5,1 实时充电电压,单位:V 设备实时采集的充电电压
power DECIMAL(5,1) NULL NULL - 5,1 实时充电功率,单位:kW 自动计算:电压 × 电流 / 1000
energy DECIMAL(6,2) NULL NULL - 6,2 累计充电电量,单位:kWh 从充电开始到采集时的累计电量
pile_temp INT(3) NULL NULL - 3 设备机身温度,单位:℃ 设备实时采集的机身温度
battery_temp INT(3) NULL NULL - 3 车辆电池温度,单位:℃ 通过车桩通信采集的电池温度
gun_temp INT(3) NULL NULL - 3 充电枪头温度,单位:℃ 设备实时采集的枪头温度
lightning_status TINYINT(1) NULL NULL - 1 防雷模块状态:0 = 故障,1 = 正常 设备实时采集的防雷模块状态
ground_status TINYINT(1) NULL NULL - 1 接地状态:0 = 异常,1 = 正常 设备实时采集的接地状态
remaining_time INT(11) NULL NULL - 11 预计剩余充电时间,单位:分钟 基于当前功率和剩余电量自动计算
remaining_energy DECIMAL(5,2) NULL NULL - 5,2 预计剩余充电电量,单位:kWh 基于电池总容量和当前电量计算
grid_load DECIMAL(5,1) NULL NULL - 5,1 实时电网负荷,单位:kW 设备采集的电网实时负荷
data_status TINYINT(1) NOT NULL 1 普通索引 1 数据状态:0 = 异常,1 = 正常 标识采集数据是否有效,异常数据不参与计算

关联关系

  • 多对一关联charging_pile表:pile_id为外键,一个设备对应多条实时数据
  • 多对一关联charge_record表:record_id为外键,一笔充电记录对应多条实时数据

4.6 charge_control_command(充电远程控制指令表)

表注释

存储用户 / 管理员发送的充电桩远程控制指令,与设备主表一对多关联,记录指令类型、参数、执行状态,是车桩远程通信的核心表

建表语句

mysql

复制代码
CREATE TABLE `charge_control_command` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '指令主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `user_id` INT(11) NOT NULL COMMENT '操作人ID,关联sys_user.id,记录指令发送人',
  `command_type` TINYINT(2) NOT NULL COMMENT '指令类型:1=启动充电,2=停止充电,3=设备休眠,4=设备唤醒,5=解锁枪头,6=调节功率',
  `command_param` VARCHAR(50) DEFAULT NULL COMMENT '指令参数,如调节功率时填写5.0(kW)',
  `command_status` TINYINT(2) NOT NULL DEFAULT 0 COMMENT '指令状态:0=未执行,1=执行中,2=执行成功,3=执行失败',
  `send_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '指令发送时间',
  `execute_time` DATETIME DEFAULT NULL COMMENT '指令执行时间',
  `fail_reason` VARCHAR(255) DEFAULT NULL COMMENT '执行失败原因,如设备离线、权限不足',
  `remark` VARCHAR(255) DEFAULT NULL COMMENT '指令备注,说明发送原因',
  PRIMARY KEY (`id`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_command_type` (`command_type`),
  KEY `idx_command_status` (`command_status`),
  KEY `idx_send_time` (`send_time`),
  CONSTRAINT `fk_charge_control_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_control_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电远程控制指令表,存储远程控制指令';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 指令主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 多对一关联,一个设备可接收多条指令
user_id INT(11) NOT NULL - 普通索引、外键 11 操作人 ID,关联 sys_user.id,记录指令发送人 记录哪个用户 / 管理员发送了指令
command_type TINYINT(2) NOT NULL - 普通索引 2 指令类型:1 = 启动,2 = 停止,3 = 休眠,4 = 唤醒,5 = 解锁,6 = 调功率 标识指令的具体操作类型
command_param VARCHAR(50) NULL NULL - 50 指令参数,如调节功率时填写 5.0(kW) 部分指令需传参,如调功率、定量充电
command_status TINYINT(2) NOT NULL 0 普通索引 2 指令状态:0 = 未执行,1 = 执行中,2 = 成功,3 = 失败 标识指令的执行状态
send_time DATETIME NOT NULL 系统当前时间 普通索引 - 指令发送时间 发送指令时自动赋值
execute_time DATETIME NULL NULL - - 指令执行时间 设备执行指令后自动赋值
fail_reason VARCHAR(255) NULL NULL - 255 执行失败原因,如设备离线、权限不足 指令执行失败时记录具体原因
remark VARCHAR(255) NULL NULL - 255 指令备注,说明发送原因 便于后续追溯指令发送的场景

关联关系

  • 多对一关联charging_pile表:pile_id为外键,一个设备可接收多条远程控制指令
  • 多对一关联sys_user表:user_id为外键,一个用户可发送多条控制指令
  • 业务关联charge_record表:无物理外键,启动 / 停止指令执行后更新充电记录状态

5. 告警与日志表

5.1 device_alarm(设备告警表)

表注释

存储充电桩设备的所有告警信息,与设备主表一对多关联,记录告警类型、级别、处理状态,告警触发后自动推送通知给用户 / 管理员

建表语句

mysql

复制代码
CREATE TABLE `device_alarm` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '告警主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `user_id` INT(11) DEFAULT NULL COMMENT '绑定用户ID,关联sys_user.id,未绑定为NULL',
  `alarm_no` VARCHAR(50) NOT NULL COMMENT '告警编号,唯一,通过sequence生成',
  `alarm_type` TINYINT(2) NOT NULL COMMENT '告警类型:1=过压,2=欠压,3=过流,4=过温,5=漏电,6=接地异常,7=设备离线,8=枪头未拔',
  `alarm_level` TINYINT(1) NOT NULL DEFAULT 2 COMMENT '告警级别:1=紧急,2=一般,3=提示',
  `alarm_content` VARCHAR(255) NOT NULL COMMENT '告警内容,详细说明告警信息',
  `alarm_param` VARCHAR(100) DEFAULT NULL COMMENT '告警参数,如过温时的温度值:65℃',
  `alarm_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '告警触发时间',
  `recover_time` DATETIME DEFAULT NULL COMMENT '告警恢复时间',
  `alarm_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '告警状态:0=已恢复,1=未恢复',
  `handle_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '处理状态:0=未处理,1=已处理',
  `handle_user_id` INT(11) DEFAULT NULL COMMENT '处理人ID,关联sys_user.id,记录告警处理人',
  `handle_time` DATETIME DEFAULT NULL COMMENT '告警处理时间',
  `handle_remark` VARCHAR(255) DEFAULT NULL COMMENT '处理备注,说明处理措施',
  `auto_recover` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '自动恢复:0=手动恢复,1=自动恢复',
  `alarm_push` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '告警推送:0=未推送,1=已推送',
  `push_time` DATETIME DEFAULT NULL COMMENT '告警推送时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_device_alarm_no` (`alarm_no`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_alarm_type` (`alarm_type`),
  KEY `idx_alarm_level` (`alarm_level`),
  KEY `idx_alarm_time` (`alarm_time`),
  KEY `idx_alarm_status` (`alarm_status`),
  KEY `idx_handle_status` (`handle_status`),
  CONSTRAINT `fk_device_alarm_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_device_alarm_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_device_alarm_handle_user` FOREIGN KEY (`handle_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='设备告警表,存储设备所有告警信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 告警主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 多对一关联,一个设备可触发多条告警
user_id INT(11) NULL NULL 普通索引、外键 11 绑定用户 ID,关联 sys_user.id,未绑定为 NULL 告警推送的主接收人,未绑定设备为 NULL
alarm_no VARCHAR(50) NOT NULL - 唯一索引 50
字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
alarm_no VARCHAR(50) NOT NULL - 唯一索引 50 告警编号,唯一,通过 sequence 生成 如 100001,业务层唯一标识告警事件
alarm_type TINYINT(2) NOT NULL - 普通索引 2 告警类型:1 = 过压,2 = 欠压,3 = 过流,4 = 过温,5 = 漏电,6 = 接地异常,7 = 设备离线,8 = 枪头未拔 关联设备保护参数阈值触发逻辑
alarm_level TINYINT(1) NOT NULL 2 普通索引 1 告警级别:1 = 紧急,2 = 一般,3 = 提示 1 需立即处理,3 仅提醒无需干预
alarm_content VARCHAR(255) NOT NULL - - 255 告警内容,详细说明告警信息 如 "枪头温度 65℃,超过过温阈值 60℃"
alarm_param VARCHAR(100) NULL NULL - 100 告警参数,如过温时的温度值:65℃ 存储触发告警的具体数值,便于排查
alarm_time DATETIME NOT NULL 系统当前时间 普通索引 - 告警触发时间 精确到秒,阈值触发时自动赋值
recover_time DATETIME NULL NULL - - 告警恢复时间 设备状态恢复正常后自动赋值
alarm_status TINYINT(1) NOT NULL 1 普通索引 1 告警状态:0 = 已恢复,1 = 未恢复 标识设备当前是否仍处于告警状态
handle_status TINYINT(1) NOT NULL 0 普通索引 1 处理状态:0 = 未处理,1 = 已处理 需人工确认处理结果后更新为 1
handle_user_id INT(11) NULL NULL 外键 11 处理人 ID,关联 sys_user.id,记录告警处理人 管理员处理后记录操作人 ID
handle_time DATETIME NULL NULL - - 告警处理时间 处理人确认后自动赋值
handle_remark VARCHAR(255) NULL NULL - 255 处理备注,说明处理措施 如 "断电降温后重启设备,告警恢复"
auto_recover TINYINT(1) NOT NULL 0 - 1 自动恢复:0 = 手动恢复,1 = 自动恢复 如设备离线后重连,自动恢复告警状态
alarm_push TINYINT(1) NOT NULL 1 - 1 告警推送:0 = 未推送,1 = 已推送 标识是否已向用户 / 管理员推送通知
push_time DATETIME NULL NULL - - 告警推送时间 通知发送成功后自动赋值

关联关系

  • 多对一关联charging_pile表:pile_id为外键,一个设备可触发多条告警记录
  • 多对一关联sys_user表:user_id为告警推送对象,handle_user_id为告警处理人
  • 业务关联notify_record表:无物理外键,告警推送后生成对应的通知记录

5.2 data_warning(数据异常预警表)

表注释

存储设备采集数据的异常预警信息,与设备主表一对多关联,预警阈值低于告警阈值,用于提前发现潜在风险,避免触发设备保护

建表语句

mysql

复制代码
CREATE TABLE `data_warning` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '预警主键ID,系统内唯一标识',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `user_id` INT(11) DEFAULT NULL COMMENT '绑定用户ID,关联sys_user.id,未绑定为NULL',
  `warning_type` TINYINT(2) NOT NULL COMMENT '预警类型:1=电压偏高,2=电压偏低,3=电流偏高,4=温度偏高,5=电量异常',
  `warning_param` VARCHAR(100) NOT NULL COMMENT '预警参数,如电压240V(阈值245V)',
  `warning_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '预警触发时间',
  `warning_status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '预警状态:0=已解除,1=未解除',
  `relieve_time` DATETIME DEFAULT NULL COMMENT '预警解除时间',
  `warning_push` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '预警推送:0=未推送,1=已推送',
  `push_time` DATETIME DEFAULT NULL COMMENT '预警推送时间',
  PRIMARY KEY (`id`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_warning_type` (`warning_type`),
  KEY `idx_warning_time` (`warning_time`),
  KEY `idx_warning_status` (`warning_status`),
  CONSTRAINT `fk_data_warning_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_data_warning_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='数据异常预警表,存储设备采集数据的异常预警信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 预警主键 ID,系统内唯一标识 自增起始值 1
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 多对一关联,一个设备可触发多条预警
user_id INT(11) NULL NULL 普通索引、外键 11 绑定用户 ID,关联 sys_user.id,未绑定为 NULL 预警推送的主接收人,未绑定设备为 NULL
warning_type TINYINT(2) NOT NULL - 普通索引 2 预警类型:1 = 电压偏高,2 = 电压偏低,3 = 电流偏高,4 = 温度偏高,5 = 电量异常 阈值低于告警,提前预警潜在风险
warning_param VARCHAR(100) NOT NULL - - 100 预警参数,如电压 240V(阈值 245V) 存储触发预警的具体数值和阈值对比
warning_time DATETIME NOT NULL 系统当前时间 普通索引 - 预警触发时间 精确到秒,阈值触发时自动赋值
warning_status TINYINT(1) NOT NULL 1 普通索引 1 预警状态:0 = 已解除,1 = 未解除 设备数据恢复正常后更新为 0
relieve_time DATETIME NULL NULL - - 预警解除时间 数据恢复正常后自动赋值
warning_push TINYINT(1) NOT NULL 1 - 1 预警推送:0 = 未推送,1 = 已推送 标识是否已向用户推送预警通知
push_time DATETIME NULL NULL - - 预警推送时间 通知发送成功后自动赋值

关联关系

  • 多对一关联charging_pile表:pile_id为外键,一个设备可触发多条预警记录
  • 多对一关联sys_user表:user_id为预警推送对象
  • 业务关联pile_protect_param表:无物理外键,预警阈值基于保护参数下调设定

6. 计费与订单表

6.1 price_config(全局电价配置表)

表注释

存储系统全局的电价配置信息,支持分时段、分节假日设置电价,设备本地配置优先级高于全局配置,用于无本地配置设备的计费

建表语句

mysql

复制代码
CREATE TABLE `price_config` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '电价配置主键ID,系统内唯一标识',
  `price_type` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '电价类型:1=工作日,2=周末,3=节假日',
  `peak_start` TIME NOT NULL COMMENT '峰时开始时间',
  `peak_end` TIME NOT NULL COMMENT '峰时结束时间',
  `valley_start` TIME NOT NULL COMMENT '谷时开始时间',
  `valley_end` TIME NOT NULL COMMENT '谷时结束时间',
  `peak_price` DECIMAL(4,2) NOT NULL COMMENT '峰时电价,单位:元/kWh',
  `valley_price` DECIMAL(4,2) NOT NULL COMMENT '谷时电价,单位:元/kWh',
  `flat_price` DECIMAL(4,2) NOT NULL COMMENT '平段电价,单位:元/kWh,峰谷外时段',
  `holiday_list` VARCHAR(255) DEFAULT NULL COMMENT '节假日列表,如2025-01-01,2025-02-01',
  `is_default` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否默认配置:0=否,1=是,仅一条默认',
  `effective_time` DATETIME NOT NULL COMMENT '配置生效时间',
  `expire_time` DATETIME DEFAULT NULL COMMENT '配置失效时间,NULL为永久有效',
  `create_user_id` INT(11) NOT NULL COMMENT '创建人ID,关联sys_user.id',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '配置创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_price_config_default` (`is_default`) USING BTREE WHERE (`is_default` = 1),
  KEY `idx_price_type` (`price_type`),
  KEY `idx_effective_time` (`effective_time`),
  CONSTRAINT `fk_price_config_user_id` FOREIGN KEY (`create_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='全局电价配置表,存储系统全局的电价配置信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 电价配置主键 ID,系统内唯一标识 自增起始值 1
price_type TINYINT(1) NOT NULL 1 普通索引 1 电价类型:1 = 工作日,2 = 周末,3 = 节假日 不同类型时段对应不同电价
peak_start TIME NOT NULL - - - 峰时开始时间 如 08:00:00,峰时电价的起始时间
peak_end TIME NOT NULL - - - 峰时结束时间 如 22:00:00,峰时电价的结束时间
valley_start TIME NOT NULL - - - 谷时开始时间 如 22:00:00,谷时电价的起始时间
valley_end TIME NOT NULL - - - 谷时结束时间 如 08:00:00,谷时电价的结束时间
peak_price DECIMAL(4,2) NOT NULL - - 4,2 峰时电价,单位:元 /kWh 峰时时段的充电单价,高于谷时和平段
valley_price DECIMAL(4,2) NOT NULL - - 4,2 谷时电价,单位:元 /kWh 谷时时段的充电单价,低于峰时和平段
flat_price DECIMAL(4,2) NOT NULL - - 4,2 平段电价,单位:元 /kWh,峰谷外时段 峰谷时段外的默认电价
holiday_list VARCHAR(255) NULL NULL - 255 节假日列表,如 2025-01-01,2025-02-01 price_type=3 时生效,逗号分隔日期
is_default TINYINT(1) NOT NULL 0 唯一索引 1 是否默认配置:0 = 否,1 = 是,仅一条默认 系统默认使用的电价配置,仅能有一条
effective_time DATETIME NOT NULL - 普通索引 - 配置生效时间 配置开始生效的时间点
expire_time DATETIME NULL NULL - - 配置失效时间,NULL 为永久有效 配置失效后不再使用
create_user_id INT(11) NOT NULL - 外键 11 创建人 ID,关联 sys_user.id 记录配置的创建管理员
create_time DATETIME NOT NULL 系统当前时间 - - 配置创建时间 自动赋值,无需手动插入

关联关系

  • 多对一关联sys_user表:create_user_id为外键,记录配置创建人
  • 业务关联charge_mode_config表:无物理外键,设备本地配置优先级更高

6.2 charge_order(充电订单表)

表注释

存储每笔充电的订单信息,与充电记录一对一关联,记录订单金额、支付状态、支付方式,是计费和财务对账的核心依据

建表语句

mysql

复制代码
CREATE TABLE `charge_order` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '订单主键ID,系统内唯一标识',
  `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号,唯一,通过sequence生成',
  `record_id` BIGINT(20) NOT NULL COMMENT '充电记录ID,关联charge_record.id',
  `pile_id` INT(11) NOT NULL COMMENT '设备ID,关联charging_pile.id',
  `user_id` INT(11) NOT NULL COMMENT '用户ID,关联sys_user.id',
  `total_energy` DECIMAL(6,2) NOT NULL COMMENT '充电总电量,单位:kWh',
  `total_amount` DECIMAL(6,2) NOT NULL COMMENT '订单总金额,单位:元',
  `peak_amount` DECIMAL(6,2) DEFAULT 0.00 COMMENT '峰时费用,单位:元',
  `valley_amount` DECIMAL(6,2) DEFAULT 0.00 COMMENT '谷时费用,单位:元',
  `flat_amount` DECIMAL(6,2) DEFAULT 0.00 COMMENT '平段费用,单位:元',
  `discount_amount` DECIMAL(6,2) DEFAULT 0.00 COMMENT '优惠金额,单位:元',
  `pay_amount` DECIMAL(6,2) NOT NULL COMMENT '实付金额,单位:元=总金额-优惠金额',
  `pay_type` TINYINT(2) NOT NULL COMMENT '支付方式:1=微信支付,2=支付宝,3=余额支付',
  `pay_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '支付状态:0=未支付,1=已支付,2=已退款',
  `pay_time` DATETIME DEFAULT NULL COMMENT '支付时间',
  `order_status` TINYINT(2) NOT NULL DEFAULT 0 COMMENT '订单状态:0=待支付,1=已完成,2=已取消,3=已退款',
  `cancel_time` DATETIME DEFAULT NULL COMMENT '订单取消时间',
  `cancel_reason` VARCHAR(255) DEFAULT NULL COMMENT '订单取消原因',
  `refund_status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '退款状态:0=未退款,1=退款中,2=已退款',
  `refund_time` DATETIME DEFAULT NULL COMMENT '退款完成时间',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '订单更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_charge_order_no` (`order_no`),
  UNIQUE KEY `idx_charge_order_record` (`record_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_pile_id` (`pile_id`),
  KEY `idx_pay_status` (`pay_status`),
  KEY `idx_order_status` (`order_status`),
  KEY `idx_create_time` (`create_time`),
  CONSTRAINT `fk_charge_order_record_id` FOREIGN KEY (`record_id`) REFERENCES `charge_record` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_order_pile_id` FOREIGN KEY (`pile_id`) REFERENCES `charging_pile` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_charge_order_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='充电订单表,存储每笔充电的订单信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id BIGINT(20) NOT NULL 自增 主键、AUTO_INCREMENT=1 20 订单主键 ID,系统内唯一标识 自增起始值 1,BIGINT 适配大数据量
order_no VARCHAR(50) NOT NULL - 唯一索引 50 订单编号,唯一,通过 sequence 生成 如 10000001,业务层唯一标识订单
record_id BIGINT(20) NOT NULL - 唯一索引、外键 20 充电记录 ID,关联 charge_record.id 一对一关联,一笔充电记录对应一个订单
pile_id INT(11) NOT NULL - 普通索引、外键 11 设备 ID,关联 charging_pile.id 冗余存储,便于快速查询
user_id INT(11) NOT NULL - 普通索引、外键 11 用户 ID,关联 sys_user.id 订单归属用户
total_energy DECIMAL(6,2) NOT NULL - - 6,2 充电总电量,单位:kWh 与 charge_record.total_energy 一致
total_amount DECIMAL(6,2) NOT NULL - - 6,2 订单总金额,单位:元 基于电量和电价计算的总费用
peak_amount DECIMAL(6,2) NULL 0.00 - 6,2 峰时费用,单位:元 峰时时段产生的费用
valley_amount DECIMAL(6,2) NULL 0.00 - 6,2 谷时费用,单位:元 谷时时段产生的费用
flat_amount DECIMAL(6,2) NULL 0.00 - 6,2 平段费用,单位:元 平段时段产生的费用
discount_amount DECIMAL(6,2) NULL 0.00 - 6,2 优惠金额,单位:元 优惠券、满减等活动抵扣的金额
pay_amount DECIMAL(6,2) NOT NULL - - 6,2 实付金额,单位:元 = 总金额 - 优惠金额 用户实际需要支付的金额
pay_type TINYINT(2) NOT NULL - - 2 支付方式:1 = 微信支付,2 = 支付宝,3 = 余额支付 记录用户的支付渠道
pay_status TINYINT(1) NOT NULL 0 普通索引 1 支付状态:0 = 未支付,1 = 已支付,2 = 已退款 标识订单的支付进度
pay_time DATETIME NULL NULL - - 支付时间 用户完成支付后自动赋值
order_status TINYINT(2) NOT NULL 0 普通索引 2 订单状态:0 = 待支付,1 = 已完成,2 = 已取消,3 = 已退款 订单的核心业务状态
cancel_time DATETIME NULL NULL - - 订单取消时间 订单取消后自动赋值
cancel_reason VARCHAR(255) NULL NULL - 255 订单取消原因 如 "用户主动取消""设备故障"
refund_status TINYINT(1) NOT NULL 0 - 1 退款状态:0 = 未退款,1 = 退款中,2 = 已退款 标识订单的退款进度
refund_time DATETIME NULL NULL - - 退款完成时间 退款到账后自动赋值
create_time DATETIME NOT NULL 系统当前时间 - - 订单创建时间 充电记录生成后自动创建订单
update_time DATETIME NOT NULL 系统当前时间 - - 订单更新时间 订单状态变更时自动刷新

关联关系

  • 一对一关联charge_record表:record_id为唯一外键,一笔充电记录对应一个订单
  • 多对一关联charging_pile表:pile_id为外键,一个设备对应多个订单
  • 多对一关联sys_user表:user_id为外键,一个用户对应多个订单
  • 一对多关联refund_record表:一个订单可对应多条退款记录(部分退款场景)

6.3 refund_record(退款记录表)

表注释

存储充电订单的退款记录,与订单表一对多关联,支持全额退款和部分退款,记录退款金额、原因、状态,用于财务对账和退款追溯

建表语句

mysql

复制代码
CREATE TABLE `refund_record` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '退款记录主键ID,系统内唯一标识',
  `refund_no` VARCHAR(50) NOT NULL COMMENT '退款单号,唯一,通过sequence生成',
  `order_id` BIGINT(20) NOT NULL COMMENT '订单ID,关联charge_order.id',
  `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号,冗余存储',
  `user_id` INT(11) NOT NULL COMMENT '用户ID,关联sys_user.id',
  `refund_amount` DECIMAL(6,2) NOT NULL COMMENT '退款金额,单位:元',
  `refund_type` TINYINT(1) NOT NULL COMMENT '退款类型:1=全额退款,2=部分退款',
  `refund_reason` VARCHAR(255) NOT NULL COMMENT '退款原因,如设备故障、充电异常',
  `refund_status` TINYINT(2) NOT NULL DEFAULT 0 COMMENT '退款状态:0=申请中,1=审核通过,2=退款中,3=已退款,4=审核驳回',
  `apply_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '退款申请时间',
  `audit_user_id` INT(11) DEFAULT NULL COMMENT '审核人ID,关联sys_user.id',
  `audit_time` DATETIME DEFAULT NULL COMMENT '审核时间',
  `audit_remark` VARCHAR(255) DEFAULT NULL COMMENT '审核备注',
  `refund_time` DATETIME DEFAULT NULL COMMENT '退款到账时间',
  `refund_channel` VARCHAR(50) DEFAULT NULL COMMENT '退款渠道,如微信支付、支付宝',
  `refund_transaction` VARCHAR(100) DEFAULT NULL COMMENT '退款交易号,支付渠道返回',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_refund_record_no` (`refund_no`),
  KEY `idx_order_id` (`order_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_refund_status` (`refund_status`),
  KEY `idx_apply_time` (`apply_time`),
  CONSTRAINT `fk_refund_record_order_id` FOREIGN KEY (`order_id`) REFERENCES `charge_order` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_refund_record_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_refund_record_audit_user` FOREIGN KEY (`audit_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='退款记录表,存储充电订单的退款记录';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 退款记录主键 ID,系统内唯一标识 自增起始值 1
refund_no VARCHAR(50) NOT NULL - 唯一索引 50 退款单号,唯一,通过 sequence 生成 如 100001,业务层唯一标识退款事件
order_id BIGINT(20) NOT NULL - 普通索引、外键 20 订单 ID,关联 charge_order.id 多对一关联,一个订单可对应多条退款记录
order_no VARCHAR(50) NOT NULL - - 50 订单编号,冗余存储 便于快速查询,无需关联订单表
user_id INT(11) NOT NULL - 普通索引、外键 11 用户 ID,关联 sys_user.id 退款申请人
refund_amount DECIMAL(6,2) NOT NULL - - 6,2 退款金额,单位:元 全额退款等于订单实付金额,部分退款小于实付
refund_type TINYINT(1) NOT NULL - - 1 退款类型:1 = 全额退款,2 = 部分退款 标识退款的额度类型
refund_reason VARCHAR(255) NOT NULL - - 255 退款原因,如设备故障、充电异常 用户申请时填写,审核时参考
refund_status TINYINT(2) NOT NULL 0 普通索引 2 退款状态:0 = 申请中,1 = 审核通过,2 = 退款中,3 = 已退款,4 = 审核驳回 退款流程的核心状态
apply_time DATETIME NOT NULL 系统当前时间 普通索引 - 退款申请时间 用户提交申请时自动赋值
audit_user_id INT(11) NULL NULL 外键 11 审核人 ID,关联 sys_user.id 管理员审核后记录操作人 ID
audit_time DATETIME NULL NULL - - 审核时间 审核完成后自动赋值
audit_remark VARCHAR(255) NULL NULL - 255 审核备注 如 "设备故障属实,同意退款"
refund_time DATETIME NULL NULL - - 退款到账时间 资金到用户账户后自动赋值
refund_channel VARCHAR(50) NULL NULL - 50 退款渠道,如微信支付、支付宝 与订单支付渠道一致
refund_transaction VARCHAR(100) NULL NULL - 100 退款交易号,支付渠道返回 支付渠道生成的唯一退款凭证,用于对账

关联关系

  • 多对一关联charge_order表:order_id为外键,一个订单可对应多条退款记录
  • 多对一关联sys_user表:user_id为退款申请人,audit_user_id为审核人

7. 通知管理表

7.1 notify_template(通知模板表)

表注释

存储系统所有通知的模板信息,支持短信、APP 推送两种渠道,模板变量通过占位符替换,实现通知内容的标准化和个性化

建表语句

mysql

复制代码
CREATE TABLE `notify_template` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '模板主键ID,系统内唯一标识',
  `template_code` VARCHAR(50) NOT NULL COMMENT '模板编码,唯一,如ALARM_DEVICE_OFFLINE',
  `template_name` VARCHAR(100) NOT NULL COMMENT '模板名称,如设备离线告警',
  `notify_type` TINYINT(1) NOT NULL COMMENT '通知类型:1=短信,2=APP推送',
  `template_content` TEXT NOT NULL COMMENT '模板内容,支持变量占位符,如{pile_name}设备离线',
  `template_var` VARCHAR(255) DEFAULT NULL COMMENT '模板变量,逗号分隔,如pile_name,alarm_time',
  `is_default` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否默认模板:0=否,1=是,同类型仅一条',
  `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '模板状态:0=禁用,1=启用',
  `create_user_id` INT(11) NOT NULL COMMENT '创建人ID,关联sys_user.id',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '模板创建时间',
  `update_user_id` INT(11) DEFAULT NULL COMMENT '更新人ID,关联sys_user.id',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '模板更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_notify_template_code` (`template_code`),
  UNIQUE KEY `idx_notify_template_default` (`notify_type`,`is_default`) USING BTREE WHERE (`is_default` = 1),
  KEY `idx_notify_type` (`notify_type`),
  KEY `idx_status` (`status`),
  CONSTRAINT `fk_notify_template_create_user` FOREIGN KEY (`create_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_notify_template_update_user` FOREIGN KEY (`update_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知模板表,存储系统所有通知的模板信息';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 模板主键 ID,系统内唯一标识 自增起始值 1
template_code VARCHAR(50) NOT NULL - 唯一索引 50 模板编码,唯一,如 ALARM_DEVICE_OFFLINE 业务层调用模板的唯一标识
template_name VARCHAR(100) NOT NULL - - 100 模板名称,如设备离线告警 便于后台管理展示
notify_type TINYINT(1) NOT NULL - 普通索引、联合索引 1 通知类型:1 = 短信,2=APP 推送 不同渠道对应不同模板格式
template_content TEXT NOT NULL - - 不限 模板内容,支持变量占位符,如 {pile_name} 设备离线 占位符用 {} 包裹,发送时替换为实际值
template_var VARCHAR(255) NULL NULL - 255 模板变量,逗号分隔,如 pile_name,alarm_time 记录模板中所有占位符变量,便于参数传递
is_default TINYINT(1) NOT NULL 0 联合索引 1 是否默认模板:0 = 否,1 = 是,同类型仅一条 同通知类型下仅能有一个默认模板
status TINYINT(1) NOT NULL 1 普通索引 1 模板状态:0 = 禁用,1 = 启用 禁用的模板不可用于发送通知
create_user_id INT(11) NOT NULL - 外键 11 创建人 ID,关联 sys_user.id 记录模板创建的管理员
create_time DATETIME NOT NULL 系统当前时间 - - 模板创建时间 自动赋值,无需手动插入
update_user_id INT(11) NULL NULL 外键 11 更新人 ID,关联 sys_user.id 模板修改后记录操作人 ID
update_time DATETIME NOT NULL 系统当前时间 - - 模板更新时间 修改模板时自动刷新

关联关系

  • 多对一关联sys_user表:create_user_id/update_user_id为外键,记录模板操作人
  • 一对多关联notify_record表:一个模板可生成多条通知记录

7.2 notify_record(通知推送记录表)

表注释

存储系统所有通知的推送记录,与通知模板一对多关联,记录推送对象、渠道、状态、结果,用于通知追溯和送达率统计

建表语句

mysql

复制代码
CREATE TABLE `notify_record` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '通知记录主键ID,系统内唯一标识',
  `notify_no` VARCHAR(50) NOT NULL COMMENT '通知编号,唯一,通过sequence生成',
  `template_id` INT(11) NOT NULL COMMENT '模板ID,关联notify_template.id',
  `template_code` VARCHAR(50) NOT NULL COMMENT '模板编码,冗余存储',
  `user_id` INT(11) NOT NULL COMMENT '接收人ID,关联sys_user.id',
  `notify_type` TINYINT(1) NOT NULL COMMENT '通知类型:1=短信,2=APP推送',
  `notify_content` TEXT NOT NULL COMMENT '推送内容,替换变量后的最终内容',
  `push_status` TINYINT(2) NOT NULL DEFAULT 0 COMMENT '推送状态:0=待推送,1=推送中,2=推送成功,3=推送失败',
  `push_time` DATETIME DEFAULT NULL COMMENT '推送时间',
  `receive_time` DATETIME DEFAULT NULL COMMENT '接收时间,APP推送时生效',
  `fail_reason` VARCHAR(255) DEFAULT NULL COMMENT '推送失败原因,如手机号无效、用户未安装APP',
  `push_channel` VARCHAR(50) DEFAULT NULL COMMENT '推送渠道,如阿里云短信、极光推送',
  `channel_no` VARCHAR(100) DEFAULT NULL COMMENT '渠道流水号,推送平台返回',
  `business_type` TINYINT(2) NOT NULL COMMENT '业务类型:1=设备告警,2=充电完成,3=订单支付,4=退款通知',
  `business_id` VARCHAR(50) DEFAULT NULL COMMENT '业务ID,如告警ID、订单ID',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_notify_record_no` (`notify_no`),
  KEY `idx_template_id` (`template_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_notify_type` (`notify_type`),
  KEY `idx_push_status` (`push_status`),
  KEY `idx_business_type` (`business_type`),
  CONSTRAINT `fk_notify_record_template_id` FOREIGN KEY (`template_id`) REFERENCES `notify_template` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_notify_record_user_id` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='通知推送记录表,存储系统所有通知的推送记录';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id BIGINT(20) NOT NULL 自增 主键、AUTO_INCREMENT=1 20 通知记录主键 ID,系统内唯一标识 自增起始值 1,BIGINT 适配高频推送场景
notify_no VARCHAR(50) NOT NULL - 唯一索引 50 通知编号,唯一,通过 sequence 生成 如 100001,业务层唯一标识通知事件
template_id INT(11) NOT NULL - 普通索引、外键 11 模板 ID,关联 notify_template.id 多对一关联,一个模板对应多条通知记录
template_code VARCHAR(50) NOT NULL - - 50 模板编码,冗余存储 便于快速查询,无需关联模板表
user_id INT(11) NOT NULL - 普通索引、外键 11 接收人 ID,关联 sys_user.id 通知的接收用户
notify_type TINYINT(1) NOT NULL - 普通索引 1 通知类型:1 = 短信,2=APP 推送 与模板的通知类型一致
notify_content TEXT NOT NULL - - 不限 推送内容,替换变量后的最终内容 如 "客厅充电桩于 2025-01-01 10:00 离线,请及时处理"
push_status TINYINT(2) NOT NULL 0 普通索引 2 推送状态:0 = 待推送,1 = 推送中,2 = 推送成功,3 = 推送失败 通知推送的核心状态
push_time DATETIME NULL NULL - - 推送时间 发送通知时自动赋值
receive_time DATETIME NULL NULL - - 接收时间,APP 推送时生效 用户点击或接收通知后自动赋值
fail_reason VARCHAR(255) NULL NULL - 255 推送失败原因,如手机号无效、用户未安装 APP 推送失败时记录具体原因,便于排查
push_channel VARCHAR(50) NULL NULL - 50 推送渠道,如阿里云短信、极光推送 实际执行推送的第三方平台
channel_no VARCHAR(100) NULL NULL - 100 渠道流水号,推送平台返回 第三方平台生成的唯一推送凭证
business_type TINYINT(2) NOT NULL - 普通索引 2 业务类型:1 = 设备告警,2 = 充电完成,3 = 订单支付,4 = 退款通知 关联通知的业务场景
business_id VARCHAR(50) NULL NULL - 50 业务 ID,如告警 ID、订单 ID 关联具体的业务记录,便于追溯
create_time DATETIME NOT NULL 系统当前时间 - - 记录创建时间 生成通知记录时自动赋值

关联关系

  • 多对一关联notify_template表:template_id为外键,一个模板对应多条通知记录
  • 多对一关联sys_user表:user_id为外键,一个用户对应多条通知记录
  • 业务关联device_alarm/charge_order等表:通过business_typebusiness_id关联具体业务

8. 系统参数配置表

8.1 sys_param(全局系统参数表)

表注释

存储系统的全局参数配置,支持动态调整系统运行规则,无需修改代码即可变更系统行为,参数生效无需重启服务

建表语句

mysql

复制代码
CREATE TABLE `sys_param` (
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '参数主键ID,系统内唯一标识',
  `param_code` VARCHAR(50) NOT NULL COMMENT '参数编码,唯一,如MAX_TASK_NUM',
  `param_name` VARCHAR(100) NOT NULL COMMENT '参数名称,如最大定时任务数',
  `param_value` VARCHAR(255) NOT NULL COMMENT '参数值,如10',
  `param_type` TINYINT(1) NOT NULL COMMENT '参数类型:1=数字,2=字符串,3=布尔值,4=日期',
  `param_desc` VARCHAR(255) DEFAULT NULL COMMENT '参数描述,说明参数用途',
  `param_group` VARCHAR(50) NOT NULL COMMENT '参数分组,如设备管理、充电控制',
  `is_system` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否系统参数:0=否,1=是,不可删除',
  `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '参数状态:0=禁用,1=启用',
  `create_user_id` INT(11) NOT NULL COMMENT '创建人ID,关联sys_user.id',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '参数创建时间',
  `update_user_id` INT(11) DEFAULT NULL COMMENT '更新人ID,关联sys_user.id',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '参数更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_sys_param_code` (`param_code`),
  KEY `idx_param_group` (`param_group`),
  KEY `idx_status` (`status`),
  CONSTRAINT `fk_sys_param_create_user` FOREIGN KEY (`create_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_sys_param_update_user` FOREIGN KEY (`update_user_id`) REFERENCES `sys_user` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='全局系统参数表,存储系统的全局参数配置';

字段详细信息

字段名 数据类型 非空约束 默认值 主键 / 索引 字段长度 字段注释 补充说明
id INT(11) NOT NULL 自增 主键、AUTO_INCREMENT=1 11 参数主键 ID,系统内唯一标识 自增起始值 1
param_code VARCHAR(50) NOT NULL - 唯一索引 50 参数编码,唯一,如 MAX_TASK_NUM 业务层获取参数的唯一标识
param_name VARCHAR(100) NOT NULL - - 100 参数名称,如最大定时任务数 便于后台管理展示
param_value VARCHAR(255) NOT NULL - - 255 参数值,如 10 存储参数的具体值,不同类型格式不同
param_type TINYINT(1) NOT NULL - - 1 参数类型:1 = 数字,2 = 字符串,3 = 布尔值,4 = 日期 用于参数值的格式校验
param_desc VARCHAR(255) NULL NULL - 255 参数描述,说明参数用途 如 "单个用户可创建的最大定时充电任务数"
param_group VARCHAR(50) NOT NULL - 普通索引 50 参数分组,如设备管理、充电控制 便于按模块管理参数
is_system TINYINT(1) NOT NULL 0 - 1 是否系统参数:0 = 否,1 = 是,不可删除 系统核心参数,禁止删除
status TINYINT(1) NOT NULL 1 普通索引 1 参数状态:0 = 禁用,1 = 启用 禁用的参数不参与系统运行
create_user_id INT(11) NOT NULL - 外键 11 创建人 ID,关联 sys_user.id 记录参数创建的管理员
create_time DATETIME NOT NULL 系统当前时间 - - 参数创建时间 自动赋值,无需手动插入
update_user_id INT(11) NULL NULL 外键 11 更新人 ID,关联 sys_user.id 参数修改后记录操作人 ID
update_time DATETIME NOT NULL 系统当前时间 - - 参数更新时间 修改参数时自动刷新

初始化核心参数示例

param_code param_name param_value param_type param_desc param_group is_system
MAX_TASK_NUM 单用户最大定时任务数 10 1 单个用户可创建的最大定时充电任务数量 充电控制 1
LOGIN_LOCK_TIME 登录锁定时长 (分钟) 1440 1 连续登录失败 5 次后,账号锁定时长,默认 24 小时 系统管理 1
DATA_REFRESH_TIME 数据刷新间隔 (秒) 10 1 设备实时数据上报间隔时间 设备管理 1
ALARM_PUSH_DELAY 告警推送延迟 (秒) 5 1 告警触发后延迟推送,避免误报 告警管理 1
ORDER_EXPIRE_TIME 订单过期时间 (分钟) 30 1 订单创建后未支付的过期时长 计费订单 1

关联关系

  • 多对一关联sys_user表:create_user_id/update_user_id为外键,记录参数操作人

9. 附录

9.1 表关联关系总览

  1. 核心主表关联
    • sys_user(用户) ← 多表关联:所有业务表的user_id均关联此表
    • charging_pile(设备) ← 多表关联:所有设备相关表的pile_id均关联此表
    • charge_record(充电记录) ←→ charge_order(订单):一对一强关联
  2. 多对多关联
    • sys_role(角色) ←→ sys_permission(权限):通过sys_role_perm中间表关联
  3. 一对多关联
    • charging_pilepile_protect_param/charge_mode_config/charge_power_control:一对一关联
    • charging_pilepile_firmware_upgrade/device_alarm/charge_record:一对多关联
    • charge_recordcharge_real_time_data:一对多关联
    • charge_orderrefund_record:一对多关联
相关推荐
一个懒人懒人2 小时前
mysql2连接池配置与优化
前端·mysql
数据蜂巢2 小时前
MySQL 8.0 生产环境备份脚本 (Percona XtraBackup 8.0+)
android·mysql·adb
u0109272712 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
冰暮流星2 小时前
sql语言之where in语句
数据库·sql
北极象2 小时前
PostgreSQL 16 容器主从流复制
数据库·postgresql
Test-Sunny2 小时前
【futu测试案例】性能测试中常见的问题汇总
数据库
zt1985q2 小时前
本地部署静态网站生成工具 Vuepress 并实现外部访问
运维·服务器·网络·数据库·网络协议
瀚高PG实验室2 小时前
数据库日志过大
数据库·瀚高数据库
2401_857683542 小时前
使用Kivy开发跨平台的移动应用
jvm·数据库·python