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

embedded/2025/3/16 5:45:17/

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

1. 数据库设计

1.1 ER模型

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

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

1.2 数据库表结构

1.2.1 用户相关表
用户表(users)
字段名类型长度允许空主键默认值说明
idint11自增用户ID
usernamevarchar50用户名
passwordvarchar255密码(加密存储)
real_namevarchar50真实姓名
mobilevarchar20手机号码
emailvarchar100电子邮箱
role_idint11角色ID
avatarvarchar255头像URL
statustinyint11状态(1-正常,0-禁用)
last_login_timedatetime最后登录时间
last_login_ipvarchar50最后登录IP
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:username
  • 普通索引:role_idmobile
会员表(members)
字段名类型长度允许空主键默认值说明
idint11自增会员ID
user_idint11关联用户ID
member_novarchar30会员卡号
leveltinyint11会员等级(1-普通,2-银卡,3-金卡,4-钻石)
balancedecimal(10,2)0.00账户余额
pointsint110积分
join_timedatetimeCURRENT_TIMESTAMP加入时间
expire_timedatetime过期时间
statustinyint11状态(1-正常,0-冻结)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:user_idmember_no
  • 普通索引:level
角色表(roles)
字段名类型长度允许空主键默认值说明
idint11自增角色ID
namevarchar50角色名称
codevarchar50角色编码
descriptionvarchar255角色描述
statustinyint11状态(1-启用,0-禁用)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
权限表(permissions)
字段名类型长度允许空主键默认值说明
idint11自增权限ID
namevarchar50权限名称
codevarchar50权限编码
descriptionvarchar255权限描述
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
角色权限关联表(role_permissions)
字段名类型长度允许空主键默认值说明
idint11自增关联ID
role_idint11角色ID
permission_idint11权限ID
created_atdatetimeCURRENT_TIMESTAMP创建时间

索引:

  • 主键:id
  • 唯一索引:role_id, permission_id
1.2.2 订单相关表
订单表(orders)
字段名类型长度允许空主键默认值说明
idint11自增订单ID
order_novarchar50订单编号
member_idint11会员ID
station_idint11加油站ID
oil_idint11油品ID
oil_gun_idint11油枪ID
amountdecimal(10,2)0.00加油金额
quantitydecimal(10,2)0.00加油升数
unit_pricedecimal(10,2)0.00单价
discount_amountdecimal(10,2)0.00优惠金额
payment_methodtinyint11支付方式(1-余额,2-微信,3-支付宝,4-银行卡)
order_typetinyint11订单类型(1-加油,2-充值,3-商品)
statustinyint10状态(0-待支付,1-已支付,2-已完成,3-已取消,4-退款中,5-已退款)
remarkvarchar255备注
paid_timedatetime支付时间
refuel_start_timedatetime加油开始时间
refuel_end_timedatetime加油结束时间
transaction_idvarchar100三方支付交易ID
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:order_no
  • 普通索引:member_idstation_idoil_gun_idstatuscreated_at
支付记录表(payment_records)
字段名类型长度允许空主键默认值说明
idint11自增记录ID
order_idint11订单ID
transaction_novarchar100交易编号
member_idint11会员ID
payment_methodtinyint1支付方式(1-余额,2-微信,3-支付宝,4-银行卡)
amountdecimal(10,2)0.00支付金额
payment_timedatetimeCURRENT_TIMESTAMP支付时间
statustinyint10状态(0-处理中,1-成功,2-失败)
callback_datatext回调数据
external_payment_idvarchar100外部支付系统ID
refund_statustinyint10退款状态(0-无退款,1-部分退款,2-全额退款)
refund_amountdecimal(10,2)0.00退款金额
refund_timedatetime退款时间
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:transaction_noexternal_payment_id
  • 普通索引:order_idmember_idpayment_time
账户流水表(account_transactions)
字段名类型长度允许空主键默认值说明
idint11自增流水ID
transaction_novarchar50流水号
member_idint11会员ID
typetinyint1类型(1-充值,2-消费,3-退款,4-赠送)
amountdecimal(10,2)0.00金额
balancedecimal(10,2)0.00交易后余额
order_idint11关联订单ID
descriptionvarchar255交易描述
operator_idint11操作员ID
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:transaction_no
  • 普通索引:member_idtypeorder_idcreated_at
1.2.3 油品相关表
油品表(oils)
字段名类型长度允许空主键默认值说明
idint11自增油品ID
namevarchar50油品名称
codevarchar20油品编码
typetinyint1油品类型(1-汽油,2-柴油)
standardvarchar20油品标准(如92#,95#)
colorvarchar10颜色表示(十六进制颜色码)
statustinyint11状态(1-可用,0-不可用)
descriptionvarchar255描述
densitydecimal(10,4)密度(kg/L)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
  • 普通索引:typestandard
油品价格表(oil_prices)
字段名类型长度允许空主键默认值说明
idint11自增价格ID
oil_idint11油品ID
station_idint11加油站ID(0表示总部定价)
pricedecimal(10,2)0.00零售价格
cost_pricedecimal(10,2)0.00成本价格
start_timedatetimeCURRENT_TIMESTAMP生效开始时间
end_timedatetime生效结束时间
statustinyint11状态(1-生效,0-历史)
creator_idint11创建人ID
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:oil_id, station_id, start_time
  • 普通索引:station_idstatusstart_time
会员折扣表(member_discounts)
字段名类型长度允许空主键默认值说明
idint11自增折扣ID
leveltinyint1会员等级
oil_idint11油品ID(0表示所有油品)
discount_typetinyint11折扣类型(1-折扣率,2-固定金额)
discount_valuedecimal(10,2)0.00折扣值(折扣率为0-1之间小数)
start_timedatetimeCURRENT_TIMESTAMP生效开始时间
end_timedatetime生效结束时间
statustinyint11状态(1-生效,0-过期)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:leveloil_idstatusstart_timeend_time
1.2.4 站点相关表
加油站表(stations)
字段名类型长度允许空主键默认值说明
idint11自增站点ID
namevarchar100站点名称
codevarchar20站点编码
addressvarchar255详细地址
provincevarchar50省份
cityvarchar50城市
districtvarchar50区县
longitudedecimal(10,6)经度
latitudedecimal(10,6)纬度
contact_personvarchar50联系人
contact_phonevarchar20联系电话
business_hoursvarchar50营业时间
statustinyint11站点状态(1-营业,0-停业,2-维护中)
is_self_servicetinyint10是否自助(1-是,0-否)
manager_idint11站长用户ID
open_datedate开业日期
descriptiontext站点描述
imagevarchar255站点图片
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:code
  • 普通索引:statusprovincecityis_self_service
油罐表(oil_tanks)
字段名类型长度允许空主键默认值说明
idint11自增油罐ID
station_idint11加油站ID
namevarchar50油罐名称
codevarchar20油罐编码
oil_idint11储存油品ID
capacitydecimal(10,2)0.00容量(升)
current_volumedecimal(10,2)0.00当前体积(升)
warning_leveldecimal(10,2)0.00警戒体积(升)
statustinyint11状态(1-正常,0-停用,2-维护中)
last_check_timedatetime最后检查时间
last_fill_timedatetime最后加注时间
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, code
  • 普通索引:station_idoil_idstatus
油枪表(oil_guns)
字段名类型长度允许空主键默认值说明
idint11自增油枪ID
station_idint11加油站ID
oil_tank_idint11油罐ID
numbervarchar10枪号
positionvarchar50位置描述
oil_idint11油品ID
statustinyint11状态(1-可用,0-不可用,2-维护中)
device_idvarchar50设备ID
flow_meter_idvarchar50流量计ID
is_self_servicetinyint10是否自助(1-是,0-否)
last_maintenance_timedatetime最后维护时间
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, number
  • 普通索引:station_idoil_tank_idoil_idstatusis_self_service
1.2.5 排班管理相关表
班次定义表(shift_definitions)
字段名类型长度允许空主键默认值说明
idint11自增班次ID
station_idint11加油站ID(0表示所有站点通用)
namevarchar50班次名称(如早班、中班、晚班)
start_timetime开始时间
end_timetime结束时间
durationdecimal(5,2)持续时长(小时)
is_next_daytinyint10是否跨天(0-否,1-是)
min_staffint41最少人数
statustinyint11状态(1-启用,0-禁用)
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_idstatus
排班计划表(shift_schedules)
字段名类型长度允许空主键默认值说明
idint11自增排班ID
station_idint11加油站ID
user_idint11员工用户ID
shift_idint11班次ID
schedule_datedate排班日期
schedule_typetinyint11排班类型(1-正常,2-加班,3-调休)
statustinyint11状态(1-正常,2-已替换,3-已取消)
replaced_byint11替班人ID
create_user_idint11创建人ID
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 唯一索引:station_id, user_id, schedule_date, shift_id
  • 普通索引:user_idschedule_datestatusshift_id
考勤记录表(attendance_records)
字段名类型长度允许空主键默认值说明
idint11自增考勤ID
station_idint11加油站ID
user_idint11员工用户ID
shift_schedule_idint11关联排班ID
attendance_datedate考勤日期
check_in_timedatetime签到时间
check_out_timedatetime签退时间
check_in_locationvarchar100签到位置
check_out_locationvarchar100签退位置
check_in_photovarchar255签到照片URL
check_out_photovarchar255签退照片URL
statustinyint10状态(0-未签到,1-已签到未签退,2-已签退,3-迟到,4-早退,5-旷工,6-请假)
work_hoursdecimal(5,2)工作时长(小时)
verify_user_idint11审核人ID
verify_timedatetime审核时间
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_iduser_idattendance_datestatusshift_schedule_id
休假申请表(leave_applications)
字段名类型长度允许空主键默认值说明
idint11自增申请ID
station_idint11加油站ID
user_idint11申请人ID
leave_typetinyint1休假类型(1-事假,2-病假,3-年假,4-调休,5-其他)
start_timedatetime开始时间
end_timedatetime结束时间
durationdecimal(5,2)时长(天)
reasonvarchar255请假原因
attachmentvarchar255附件URL
statustinyint10状态(0-待审核,1-已批准,2-已拒绝,3-已取消)
approver_idint11审批人ID
approve_timedatetime审批时间
approve_commentvarchar255审批意见
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_iduser_idstatusstart_timeend_time
换班申请表(shift_change_requests)
字段名类型长度允许空主键默认值说明
idint11自增申请ID
station_idint11加油站ID
requester_idint11申请人ID
original_schedule_idint11原排班ID
replacement_user_idint11替班人ID
replacement_shift_idint11替班班次ID(为空表示使用原班次)
request_reasonvarchar255申请原因
statustinyint10状态(0-待确认,1-已确认,2-已拒绝,3-已取消)
confirm_timedatetime确认时间
approve_user_idint11管理员审批人ID
approve_timedatetime管理员审批时间
approve_statustinyint1审批状态(0-待审批,1-已通过,2-已拒绝)
remarkvarchar255备注
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_idrequester_idreplacement_user_idoriginal_schedule_idstatus
班组管理表(work_teams)
字段名类型长度允许空主键默认值说明
idint11自增班组ID
station_idint11加油站ID
namevarchar50班组名称
leader_idint11班组长ID
descriptionvarchar255描述
statustinyint11状态(1-启用,0-禁用)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

  • 主键:id
  • 普通索引:station_idleader_idstatus
班组成员表(team_members)
字段名类型长度允许空主键默认值说明
idint11自增记录ID
team_idint11班组ID
user_idint11成员用户ID
join_timedatetimeCURRENT_TIMESTAMP加入时间
positionvarchar50职位
is_leadertinyint10是否班组长(1-是,0-否)
statustinyint11状态(1-在职,0-离职)
created_atdatetimeCURRENT_TIMESTAMP创建时间
updated_atdatetimeCURRENT_TIMESTAMP更新时间

索引:

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

http://www.ppmy.cn/embedded/172977.html

相关文章

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…

MindGYM:一个用于增强视觉-语言模型推理能力的合成数据集框架,通过生成自挑战问题来提升模型的多跳推理能力。

2025-03-13&#xff0c;由中山大学和阿里巴巴集团的研究团队提出了MindGYM框架&#xff0c;通过合成自挑战问题来增强视觉-语言模型&#xff08;VLMs&#xff09;的推理能力。MindGYM框架通过生成多跳推理问题和结构化课程训练&#xff0c;显著提升了模型在推理深度和广度上的表…

docker拉取 sentinel 并启动

拉取镜像 docker pull bladex/sentinel-dashboard:latest # 默认拉取最新版启动镜像 访问 账号 密码都是默认的 sentinel

HAL库STM32常用外设—— CAN通信(一)

文章目录 一、CAN是什么&#xff1f;1.1 CAN应用场景1.2 CAN通信优势 二、CAN基础知识介绍2.1 CAN总线结构2.2 CAN总线特点2.2.1 CAN总线的数据传输特点2.2.2 位时序和波特率 2.3 CAN位时序和波特率2.3 CAN物理层2.3.1 CAN 物理层特性2.3.2 CAN 收发器芯片介绍 2.4 CAN协议层2.…

JAVA字符串与正则表达式

文章目录 写在前面1、String1.1、String底层实现1.2、str"abc"和new String("abc")的区别1.3、使用拼接字符串1.4、如何使用String.intern节约内存1.5、分割字符&#xff0c;split()和indexOf()用哪个 2、正则表达式2.1、DFA和NFA2.2、怎么减少回溯? 写在…

微店平台商品关键字搜索接口调用指南:Python代码实现与实战解析

一、接口概述 微店开放平台提供商品搜索API接口&#xff0c;支持通过关键字检索店铺商品信息。本接口采用RESTful风格设计&#xff0c;支持OAuth2.0认证&#xff0c;返回标准JSON格式数据。 获取key和secret 二、准备工作 注册微店开放平台开发者账号 创建应用并获取以下凭证…

《C#上位机开发从门外到门内》2-5:USB通信

文章目录 一、引言二、USB通信概述2.1 USB基本原理2.2 USB协议栈与数据传输流程 三、USB通信模式详解3.1 HID通信模式3.1.1 HID简介3.1.2 工作原理与数据结构3.1.3 应用场景 3.2 CDC通信模式3.2.1 CDC简介3.2.2 工作原理与数据传输3.2.3 应用场景 3.3 Bulk传输模式3.3.1 Bulk传…

FPGA初级项目10——基于SPI的DAC芯片进行数模转换

FPGA初级项目10——基于SPI的DAC芯片进行数模转换 DAC芯片介绍 DAC 芯片&#xff08;数字模拟转换器&#xff09;是一种将数字信号转换为连续模拟信号&#xff08;如电压或电流&#xff09;的集成电路&#xff0c;广泛应用于电子系统中&#xff0c;连接数字世界与模拟世界。 …