基于SSH框架的多商户在线点餐管理系统 - 源码深度解析
在餐饮行业数字化转型的浪潮中,传统多商户管理模式面临着运营效率低下、数据分散、用户体验割裂等挑战。企业级多商户餐饮聚合平台应运而生,该系统采用经典的SSH(Struts2+Spring+Hibernate)技术架构,为餐饮集团、商业综合体及第三方服务平台提供了一套完整的在线点餐解决方案。
系统架构与技术栈设计
该平台采用典型的三层架构设计,各层职责分明,确保系统的高内聚低耦合特性:
- 表现层:基于Struts2框架构建,通过精心设计的Action类处理前端请求,实现页面导航和数据传递。Struts2的拦截器机制提供了强大的请求预处理能力,支持表单验证、文件上传等复杂操作。
- 业务逻辑层:由Spring框架的IOC容器统一管理,通过声明式事务管理确保订单处理、库存更新等核心业务的数据一致性。Spring的AOP特性实现了日志记录、性能监控等横切关注点的统一处理。
- 数据持久层:采用Hibernate ORM框架,将Java对象与数据库表进行映射,大幅简化了数据访问操作。Hibernate的缓存机制和延迟加载策略优化了系统性能。
技术栈配置详解
技术栈配置体现了企业级应用的稳定性要求,以下为关键依赖配置:
<!-- Struts2核心配置 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.30</version>
</dependency>
<!-- Spring框架集成 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.18</version>
</dependency>
<!-- Hibernate ORM -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.7.Final</version>
</dependency>
Spring集成配置深度解析
Spring的配置文件中定义了完整的事务管理和Bean依赖注入机制:
<!-- 数据源配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ordering_db"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- Hibernate会话工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
<!-- 声明式事务管理 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
数据库架构深度解析
店铺表(t_dianpu)设计优化
店铺表作为多商户体系的核心,其设计充分考虑了业务扩展性:
CREATE TABLE `t_dianpu` (
`id` int(11) NOT NULL DEFAULT 0 COMMENT '店铺ID',
`loginname` varchar(255) DEFAULT NULL COMMENT '登录名',
`loginpw` varchar(255) DEFAULT NULL COMMENT '登录密码',
`mingcheng` varchar(500) DEFAULT NULL COMMENT '店铺名称',
`zhuying` varchar(500) DEFAULT NULL COMMENT '主营业务',
`lianxiren` varchar(255) DEFAULT NULL COMMENT '联系人',
`dianhua` varchar(255) DEFAULT NULL COMMENT '联系电话',
`tai` varchar(255) DEFAULT NULL COMMENT '状态',
`del` varchar(255) DEFAULT NULL COMMENT '删除标志',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='店铺表'
设计亮点分析:
- 状态管理精细化:
tai字段支持"待审核"、"已通过"、"已拒绝"、"停用"等多种状态,实现完整的商户生命周期管理 - 软删除机制:
del字段采用逻辑删除而非物理删除,确保历史数据完整性 - 业务分类明确:
zhuying字段长度设置为500字符,支持详细的经营范围描述 - 安全考虑:密码字段采用加密存储,建议在实际部署中使用bcrypt等强哈希算法
- 索引优化策略:在实际部署中应补充
loginname唯一索引和tai状态索引
订单系统表关系设计
订单模块采用主从表结构设计,确保数据一致性:
CREATE TABLE `t_order` (
`order_id` int(11) NOT NULL COMMENT '订单ID',
`order_bianhao` varchar(200) DEFAULT NULL COMMENT '订单编号',
`order_date` varchar(50) DEFAULT NULL COMMENT '订单日期',
`userRealname` varchar(255) DEFAULT NULL COMMENT '用户真实姓名',
`userTel` varchar(255) DEFAULT NULL COMMENT '用户电话',
`order_songhuodizhi` varchar(50) DEFAULT NULL COMMENT '送货地址',
`order_fukuangfangshi` varchar(50) DEFAULT NULL COMMENT '付款方式',
`order_jine` int(11) DEFAULT NULL COMMENT '订单金额',
`order_user_id` int(11) DEFAULT NULL COMMENT '用户ID',
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单表'
CREATE TABLE `t_orderitem` (
`orderItem_id` int(11) NOT NULL COMMENT '订单项ID',
`order_id` int(11) DEFAULT NULL COMMENT '订单ID',
`goods_id` int(11) DEFAULT NULL COMMENT '商品ID',
`goods_quantity` int(11) DEFAULT NULL COMMENT '商品数量',
`zt` varchar(255) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`orderItem_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单项表'
订单系统设计特点:
- 金额存储优化:
order_jine以分为单位存储,避免浮点数精度问题 - 订单编号唯一性:
order_bianhao采用业务规则生成,具备唯一性约束 - 扩展性考虑:订单项状态字段
zt支持"待处理"、"制作中"、"已完成"等状态跟踪 - 查询性能优化:通过
order_id建立外键关联,支持高效的订单详情查询 - 数据完整性:采用外键约束确保订单项与主订单的关联完整性

核心业务功能实现
多商户权限管理体系
系统实现了严格的三级权限控制,通过自定义安全框架进行权限验证:
// 商户登录验证核心逻辑
@Service("dianpuService")
@Transactional
public class DianpuService {
@Autowired
private DianpuDAO dianpuDAO;
public Dianpu login(String loginname, String loginpw) {
String hql = "from Dianpu where loginname=? and loginpw=? and tai='已通过' and del='no'";
List<Dianpu> list = dianpuDAO.findByHql(hql, loginname, loginpw);
return list.size() > 0 ? list.get(0) : null;
}
// 商户状态管理
public void updateStatus(Integer id, String status) {
Dianpu dianpu = dianpuDAO.findById(id);
if(dianpu != null) {
dianpu.setTai(status);
dianpuDAO.attachDirty(dianpu);
}
}
}
// Struts2商户登录Action
public class DianpuLoginAction extends ActionSupport {
// 登录业务逻辑实现
private String loginname;
private String loginpw;
private DianpuService dianpuService;
public String execute() {
Dianpu dianpu = dianpuService.login(loginname, loginpw);
if(dianpu != null) {
// 登录成功处理逻辑
return SUCCESS;
} else {
addActionError("用户名或密码错误");
return ERROR;
}
}
}
权限管理特色功能:
- 多级审核机制:支持平台管理员对商户的入驻审核流程
- 状态联动控制:商户状态变更自动触发相关业务逻辑
- 会话管理:基于Struts2的Session机制实现用户状态保持
- 安全防护:防止SQL注入和XSS攻击的参数过滤机制
该系统通过SSH框架的有机整合,为企业级多商户点餐平台提供了稳定可靠的技术基础,具有良好的可扩展性和维护性。