智慧加油站小程序数据库设计文档

发布于:2025-03-16 ⋅ 阅读:(9) ⋅ 点赞:(0)

智慧加油站系统 - 数据库与API设计文档

1. 数据库设计

1.1 ER模型

系统的核心实体关系如下:

用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)
   |               |                |
   |               |                v
   v               v            油枪(OilGun)
角色(Role)      油品(Oil)          |
   |               |                |
   v               v                v
权限(Permission)  价格历史(PriceHistory)  站点(Station)

1.2 数据库表结构

1.2.1 用户相关表
用户表(users)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 用户ID
username varchar 50 用户名
password varchar 255 密码(加密存储)
real_name varchar 50 真实姓名
mobile varchar 20 手机号码
email varchar 100 电子邮箱
role_id int 11 角色ID
avatar varchar 255 头像URL
status tinyint 1 1 状态(1-正常,0-禁用)
last_login_time datetime 最后登录时间
last_login_ip varchar 50 最后登录IP
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:username
  • 普通索引:role_idmobile
会员表(members)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 会员ID
user_id int 11 关联用户ID
member_no varchar 30 会员卡号
level tinyint 1 1 会员等级(1-普通,2-银卡,3-金卡,4-钻石)
balance decimal (10,2) 0.00 账户余额
points int 11 0 积分
join_time datetime CURRENT_TIMESTAMP 加入时间
expire_time datetime 过期时间
status tinyint 1 1 状态(1-正常,0-冻结)
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:user_idmember_no
  • 普通索引:level
角色表(roles)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 角色ID
name varchar 50 角色名称
code varchar 50 角色编码
description varchar 255 角色描述
status tinyint 1 1 状态(1-启用,0-禁用)
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:code
权限表(permissions)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 权限ID
name varchar 50 权限名称
code varchar 50 权限编码
description varchar 255 权限描述
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:code
角色权限关联表(role_permissions)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 关联ID
role_id int 11 角色ID
permission_id int 11 权限ID
created_at datetime CURRENT_TIMESTAMP 创建时间

索引:

  • 主键:id
  • 唯一索引:role_id, permission_id
1.2.2 订单相关表
订单表(orders)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 订单ID
order_no varchar 50 订单编号
member_id int 11 会员ID
station_id int 11 加油站ID
oil_id int 11 油品ID
oil_gun_id int 11 油枪ID
amount decimal (10,2) 0.00 加油金额
quantity decimal (10,2) 0.00 加油升数
unit_price decimal (10,2) 0.00 单价
discount_amount decimal (10,2) 0.00 优惠金额
payment_method tinyint 1 1 支付方式(1-余额,2-微信,3-支付宝,4-银行卡)
order_type tinyint 1 1 订单类型(1-加油,2-充值,3-商品)
status tinyint 1 0 状态(0-待支付,1-已支付,2-已完成,3-已取消,4-退款中,5-已退款)
remark varchar 255 备注
paid_time datetime 支付时间
refuel_start_time datetime 加油开始时间
refuel_end_time datetime 加油结束时间
transaction_id varchar 100 三方支付交易ID
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:order_no
  • 普通索引:member_idstation_idoil_gun_idstatuscreated_at
支付记录表(payment_records)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 记录ID
order_id int 11 订单ID
transaction_no varchar 100 交易编号
member_id int 11 会员ID
payment_method tinyint 1 支付方式(1-余额,2-微信,3-支付宝,4-银行卡)
amount decimal (10,2) 0.00 支付金额
payment_time datetime CURRENT_TIMESTAMP 支付时间
status tinyint 1 0 状态(0-处理中,1-成功,2-失败)
callback_data text 回调数据
external_payment_id varchar 100 外部支付系统ID
refund_status tinyint 1 0 退款状态(0-无退款,1-部分退款,2-全额退款)
refund_amount decimal (10,2) 0.00 退款金额
refund_time datetime 退款时间
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:transaction_noexternal_payment_id
  • 普通索引:order_idmember_idpayment_time
账户流水表(account_transactions)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 流水ID
transaction_no varchar 50 流水号
member_id int 11 会员ID
type tinyint 1 类型(1-充值,2-消费,3-退款,4-赠送)
amount decimal (10,2) 0.00 金额
balance decimal (10,2) 0.00 交易后余额
order_id int 11 关联订单ID
description varchar 255 交易描述
operator_id int 11 操作员ID
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:transaction_no
  • 普通索引:member_idtypeorder_idcreated_at
1.2.3 油品相关表
油品表(oils)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 油品ID
name varchar 50 油品名称
code varchar 20 油品编码
type tinyint 1 油品类型(1-汽油,2-柴油)
standard varchar 20 油品标准(如92#,95#)
color varchar 10 颜色表示(十六进制颜色码)
status tinyint 1 1 状态(1-可用,0-不可用)
description varchar 255 描述
density decimal (10,4) 密度(kg/L)
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:code
  • 普通索引:typestandard
油品价格表(oil_prices)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 价格ID
oil_id int 11 油品ID
station_id int 11 加油站ID(0表示总部定价)
price decimal (10,2) 0.00 零售价格
cost_price decimal (10,2) 0.00 成本价格
start_time datetime CURRENT_TIMESTAMP 生效开始时间
end_time datetime 生效结束时间
status tinyint 1 1 状态(1-生效,0-历史)
creator_id int 11 创建人ID
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:oil_id, station_id, start_time
  • 普通索引:station_idstatusstart_time
会员折扣表(member_discounts)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 折扣ID
level tinyint 1 会员等级
oil_id int 11 油品ID(0表示所有油品)
discount_type tinyint 1 1 折扣类型(1-折扣率,2-固定金额)
discount_value decimal (10,2) 0.00 折扣值(折扣率为0-1之间小数)
start_time datetime CURRENT_TIMESTAMP 生效开始时间
end_time datetime 生效结束时间
status tinyint 1 1 状态(1-生效,0-过期)
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 普通索引:leveloil_idstatusstart_timeend_time
1.2.4 站点相关表
加油站表(stations)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 站点ID
name varchar 100 站点名称
code varchar 20 站点编码
address varchar 255 详细地址
province varchar 50 省份
city varchar 50 城市
district varchar 50 区县
longitude decimal (10,6) 经度
latitude decimal (10,6) 纬度
contact_person varchar 50 联系人
contact_phone varchar 20 联系电话
business_hours varchar 50 营业时间
status tinyint 1 1 站点状态(1-营业,0-停业,2-维护中)
is_self_service tinyint 1 0 是否自助(1-是,0-否)
manager_id int 11 站长用户ID
open_date date 开业日期
description text 站点描述
image varchar 255 站点图片
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:code
  • 普通索引:statusprovincecityis_self_service
油罐表(oil_tanks)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 油罐ID
station_id int 11 加油站ID
name varchar 50 油罐名称
code varchar 20 油罐编码
oil_id int 11 储存油品ID
capacity decimal (10,2) 0.00 容量(升)
current_volume decimal (10,2) 0.00 当前体积(升)
warning_level decimal (10,2) 0.00 警戒体积(升)
status tinyint 1 1 状态(1-正常,0-停用,2-维护中)
last_check_time datetime 最后检查时间
last_fill_time datetime 最后加注时间
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, code
  • 普通索引:station_idoil_idstatus
油枪表(oil_guns)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 油枪ID
station_id int 11 加油站ID
oil_tank_id int 11 油罐ID
number varchar 10 枪号
position varchar 50 位置描述
oil_id int 11 油品ID
status tinyint 1 1 状态(1-可用,0-不可用,2-维护中)
device_id varchar 50 设备ID
flow_meter_id varchar 50 流量计ID
is_self_service tinyint 1 0 是否自助(1-是,0-否)
last_maintenance_time datetime 最后维护时间
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, number
  • 普通索引:station_idoil_tank_idoil_idstatusis_self_service
1.2.5 排班管理相关表
班次定义表(shift_definitions)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 班次ID
station_id int 11 加油站ID(0表示所有站点通用)
name varchar 50 班次名称(如早班、中班、晚班)
start_time time 开始时间
end_time time 结束时间
duration decimal (5,2) 持续时长(小时)
is_next_day tinyint 1 0 是否跨天(0-否,1-是)
min_staff int 4 1 最少人数
status tinyint 1 1 状态(1-启用,0-禁用)
remark varchar 255 备注
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 普通索引:station_idstatus
排班计划表(shift_schedules)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 排班ID
station_id int 11 加油站ID
user_id int 11 员工用户ID
shift_id int 11 班次ID
schedule_date date 排班日期
schedule_type tinyint 1 1 排班类型(1-正常,2-加班,3-调休)
status tinyint 1 1 状态(1-正常,2-已替换,3-已取消)
replaced_by int 11 替班人ID
create_user_id int 11 创建人ID
remark varchar 255 备注
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, user_id, schedule_date, shift_id
  • 普通索引:user_idschedule_datestatusshift_id
考勤记录表(attendance_records)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 考勤ID
station_id int 11 加油站ID
user_id int 11 员工用户ID
shift_schedule_id int 11 关联排班ID
attendance_date date 考勤日期
check_in_time datetime 签到时间
check_out_time datetime 签退时间
check_in_location varchar 100 签到位置
check_out_location varchar 100 签退位置
check_in_photo varchar 255 签到照片URL
check_out_photo varchar 255 签退照片URL
status tinyint 1 0 状态(0-未签到,1-已签到未签退,2-已签退,3-迟到,4-早退,5-旷工,6-请假)
work_hours decimal (5,2) 工作时长(小时)
verify_user_id int 11 审核人ID
verify_time datetime 审核时间
remark varchar 255 备注
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 普通索引:station_iduser_idattendance_datestatusshift_schedule_id
休假申请表(leave_applications)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 申请ID
station_id int 11 加油站ID
user_id int 11 申请人ID
leave_type tinyint 1 休假类型(1-事假,2-病假,3-年假,4-调休,5-其他)
start_time datetime 开始时间
end_time datetime 结束时间
duration decimal (5,2) 时长(天)
reason varchar 255 请假原因
attachment varchar 255 附件URL
status tinyint 1 0 状态(0-待审核,1-已批准,2-已拒绝,3-已取消)
approver_id int 11 审批人ID
approve_time datetime 审批时间
approve_comment varchar 255 审批意见
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 普通索引:station_iduser_idstatusstart_timeend_time
换班申请表(shift_change_requests)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 申请ID
station_id int 11 加油站ID
requester_id int 11 申请人ID
original_schedule_id int 11 原排班ID
replacement_user_id int 11 替班人ID
replacement_shift_id int 11 替班班次ID(为空表示使用原班次)
request_reason varchar 255 申请原因
status tinyint 1 0 状态(0-待确认,1-已确认,2-已拒绝,3-已取消)
confirm_time datetime 确认时间
approve_user_id int 11 管理员审批人ID
approve_time datetime 管理员审批时间
approve_status tinyint 1 审批状态(0-待审批,1-已通过,2-已拒绝)
remark varchar 255 备注
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 普通索引:station_idrequester_idreplacement_user_idoriginal_schedule_idstatus
班组管理表(work_teams)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 班组ID
station_id int 11 加油站ID
name varchar 50 班组名称
leader_id int 11 班组长ID
description varchar 255 描述
status tinyint 1 1 状态(1-启用,0-禁用)
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 普通索引:station_idleader_idstatus
班组成员表(team_members)
字段名 类型 长度 允许空 主键 默认值 说明
id int 11 自增 记录ID
team_id int 11 班组ID
user_id int 11 成员用户ID
join_time datetime CURRENT_TIMESTAMP 加入时间
position varchar 50 职位
is_leader tinyint 1 0 是否班组长(1-是,0-否)
status tinyint 1 1 状态(1-在职,0-离职)
created_at datetime CURRENT_TIMESTAMP 创建时间
updated_at datetime CURRENT_TIMESTAMP 更新时间

索引:

  • 主键:id
  • 唯一索引:team_id, user_id
  • 普通索引:user_idstatusis_leader