基于SSM框架的在线鲜花销售平台 - 源码深度解析
项目背景与行业意义
随着电子商务的蓬勃发展,传统鲜花零售行业正面临数字化转型的关键时期。鲜花作为具有时效性、情感属性和易损性的特殊商品,其线上销售模式需要克服以下核心挑战:
- 商品保鲜管理:鲜花保质期短,需要精准的库存周转机制
- 配送时效要求:确保鲜花在最佳观赏期内送达客户手中
- 个性化定制需求:贺卡留言、包装样式等情感表达要素
- 季节性波动管理:节日期间订单激增的系统承载能力
本系统基于成熟的SSM技术栈,为中小型花店和花艺工作室提供专业化电商解决方案,不仅实现了标准电商功能,还深度集成了鲜花行业特有的业务场景。
系统架构设计与技术选型
分层架构设计
系统采用经典的三层架构模式,确保高内聚、低耦合的设计原则:
graph TB
A[表现层] --> B[业务逻辑层]
B --> C[数据持久层]
C --> D[MySQL数据库]
A --> A1[JSP页面]
A --> A2[jQuery/Ajax]
A --> A3[Bootstrap响应式布局]
B --> B1[Spring IOC容器]
B --> B2[Spring MVC]
B --> B3[AOP事务管理]
C --> C1[MyBatis映射]
C --> C2[SQL优化]
C --> C3[连接池管理]
核心技术栈配置
<!-- Spring生态整合依赖 -->
<dependencies>
<!-- Spring MVC Web框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.8</version>
</dependency>
<!-- MyBatis持久层框架 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- MySQL数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- 数据连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
</dependencies>
数据库设计与业务适配
订单信息表深度优化
订单表(ordermsg)的设计充分体现了鲜花电商的业务特性:
CREATE TABLE `ordermsg` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`ddno` varchar(255) DEFAULT NULL COMMENT '订单号-唯一标识',
`memberid` varchar(255) DEFAULT NULL COMMENT '会员ID-用户关联',
`productid` varchar(255) DEFAULT NULL COMMENT '商品ID-冗余设计',
`num` int(11) DEFAULT NULL COMMENT '购买数量',
`total` double(255,2) DEFAULT NULL COMMENT '订单总金额',
`fkstatus` varchar(255) DEFAULT NULL COMMENT '付款状态(待支付/已支付/退款中)',
`shstatus` varchar(11) DEFAULT NULL COMMENT '审核状态(待审核/已审核)',
`addr` varchar(255) DEFAULT NULL COMMENT '配送地址',
`savetime` varchar(255) DEFAULT NULL COMMENT '订单创建时间',
`delstatus` varchar(255) DEFAULT NULL COMMENT '删除状态(软删除标志)',
`shfs` varchar(255) DEFAULT NULL COMMENT '送货方式(快递/自提)',
`zffs` varchar(255) DEFAULT NULL COMMENT '支付方式(微信/支付宝)',
`saver` varchar(255) DEFAULT NULL COMMENT '订单创建者',
`isdd` varchar(255) DEFAULT NULL COMMENT '是否正式订单',
`fid` varchar(255) DEFAULT NULL COMMENT '父订单ID(支持拆单)',
`goodsid` varchar(255) DEFAULT NULL COMMENT '商品ID-业务标识',
`goodstype` varchar(255) DEFAULT NULL COMMENT '商品类型(鲜花/绿植)',
`remark` varchar(255) DEFAULT NULL COMMENT '客户备注',
`hekays` varchar(255) DEFAULT NULL COMMENT '贺卡样式',
`hekawz` varchar(255) DEFAULT NULL COMMENT '贺卡文字内容',
`company` varchar(255) DEFAULT NULL COMMENT '物流公司',
`danhao` varchar(255) DEFAULT NULL COMMENT '物流单号',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_ddno` (`ddno`),
KEY `idx_memberid` (`memberid`),
KEY `idx_savetime` (`savetime`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单信息表';
架构设计亮点分析:
业务字段冗余设计
- 同时保留
productid和goodsid字段,支持不同业务场景的商品标识需求 - 减少表关联查询,提升订单查询性能
- 同时保留
多维度状态管理
- 付款状态(
fkstatus)、审核状态(shstatus)、删除状态(delstatus)独立管理 - 支持订单全生命周期的精细化管理
- 付款状态(
鲜花行业特色扩展
hekays、hekawz字段专门处理贺卡定制需求goodstype区分鲜花、绿植等不同商品类型
索引策略优化
- 主键采用自增ID,保证写入性能
- 对
ddno、memberid、savetime等高频查询字段建立复合索引
商品信息表业务适配
商品表(product)的设计充分考虑了鲜花品类的特殊性:
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`productno` varchar(255) DEFAULT NULL COMMENT '商品唯一编号',
`productname` varchar(255) DEFAULT NULL COMMENT '商品名称',
`filename` varchar(255) DEFAULT NULL COMMENT '商品图片路径',
`price` decimal(10,2) DEFAULT NULL COMMENT '标准售价',
`tprice` decimal(10,2) DEFAULT NULL COMMENT '促销特价',
`fid` varchar(255) DEFAULT NULL COMMENT '一级分类ID',
`sid` varchar(255) DEFAULT NULL COMMENT '二级分类ID',
`content` text DEFAULT NULL COMMENT '商品详情描述',
`delstatus` varchar(255) DEFAULT NULL COMMENT '删除状态标志',
`issj` varchar(255) DEFAULT NULL COMMENT '上架状态(是/否)',
`istj` varchar(255) DEFAULT NULL COMMENT '特价标识(是/否)',
`saver` varchar(255) DEFAULT NULL COMMENT '商品创建者',
`productid` varchar(255) DEFAULT NULL COMMENT '商品业务ID',
`leibie` varchar(255) DEFAULT NULL COMMENT '商品类别名称',
`cx` varchar(255) DEFAULT NULL COMMENT '促销活动信息',
`ps` varchar(255) DEFAULT NULL COMMENT '配送政策说明',
PRIMARY KEY (`id`),
KEY `idx_category` (`fid`,`sid`),
KEY `idx_price` (`price`),
KEY `idx_issj` (`issj`)
) ENGINE=InnoDB AUTO_INCREMENT=137 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品信息表';
业务适配特性详解:
灵活的价格策略体系
price存储日常售价,tprice存储促销价格istj标志位快速识别特价商品,便于营销活动开展
完善的商品状态管理
issj控制商品前台可见性,实现秒级上下架delstatus采用软删除机制,保留历史数据
多层次分类系统
fid、sid构建父子级分类关系leibie存储分类名称,减少关联查询
配送与促销集成
ps字段直接展示配送政策,提升购买转化率cx字段记录促销信息,支持多种营销玩法

核心功能模块实现
商品展示与智能搜索模块
系统采用动态分类加载和多维度检索机制,为用户提供精准的商品发现体验:
@Controller
@RequestMapping("/product")
public class ProductController extends BaseController {
@Autowired
private ProductService productService;
@Autowired
private CategoryService categoryService;
/**
* 商品列表页 - 支持分类筛选和关键词搜索
*/
@RequestMapping("/list")
public String productList(HttpServletRequest request, Model model) {
// 获取查询参数
String categoryId = request.getParameter("categoryId");
String keyword = request.getParameter("keyword");
String priceRange = request.getParameter("priceRange");
// 构建智能查询条件
Map<String, Object> queryParams = buildQueryParams(categoryId, keyword, priceRange);
// 执行分页查询
PageInfo<Product> pageInfo = productService.findByParamsWithPage(queryParams);
// 获取分类树用于页面筛选
List<Category> categoryTree = categoryService.getCategoryTree();
// 模型数据绑定
model.addAttribute("pageInfo", pageInfo);
model.addAttribute("categoryTree", categoryTree);
model.addAttribute("queryParams", queryParams);
return "product/list";
}
/**
* 构建智能查询参数
*/
private Map<String, Object> buildQueryParams(String categoryId, String keyword, String priceRange) {
Map<String, Object> params = new HashMap<>();
// 分类筛选条件
if (StringUtils.isNotBlank(categoryId)) {
params.put("categoryId", categoryId);
}
// 关键词模糊搜索
if (StringUtils.isNotBlank(keyword)) {
params.put("keyword", "%" + keyword.trim() + "%");
}
// 价格区间筛选
if (StringUtils.isNotBlank(priceRange)) {
String[] priceArr = priceRange.split("-");
if (priceArr.length == 2) {
params.put("minPrice", Double.parseDouble(priceArr[0]));
params.put("maxPrice", Double.parseDouble(priceArr[1]));
}
}
// 默认只查询上架商品
params.put("issj", "是");
return params;
}
}
MyBatis数据访问层实现
<!-- 商品查询映射配置 -->
<mapper namespace="com.flower.mapper.ProductMapper">
<!-- 商品结果映射 -->
<resultMap id="ProductResultMap" type="com.flower.entity.Product">
<id column="id" property="id"/>
<result column="productname" property="productName"/>
<result column="price" property="price"/>
<result column="filename" property="imageUrl"/>
<result column="issj" property="onSale"/>
<!-- 其他字段映射 -->
</resultMap>
<!-- 动态条件查询 -->
<select id="selectByParams" parameterType="map" resultMap="ProductResultMap">
SELECT * FROM product
<where>
delstatus = '0'
<if test="categoryId != null">
AND (fid = #{categoryId} OR sid = #{categoryId})
</if>
<if test="keyword != null">
AND (productname LIKE #{keyword} OR content LIKE #{keyword})
</if>
<if test="minPrice != null">
AND price >= #{minPrice}
</if>
<if test="maxPrice != null">
AND price <= #{maxPrice}
</if>
<if test="issj != null">
AND issj = #{issj}
</if>
</where>
ORDER BY
<choose>
<when test="sortField != null">
${sortField} ${sortOrder}
</when>
<otherwise>
id DESC
</otherwise>
</choose>
</select>
</mapper>
系统特色与技术创新
1. 行业定制化功能设计
- 贺卡个性化系统:支持在线贺卡样式选择和文字定制
- 配送时间精准预约:客户可指定具体送达时间段
- 鲜花保鲜期提醒:系统自动计算最佳购买和配送时间
2. 性能优化策略
- 数据库查询优化:通过索引设计和SQL优化提升查询效率
- 页面静态化技术:对商品详情页进行静态化处理
- 缓存机制应用:使用Redis缓存热点数据和页面片段
3. 安全防护措施
- SQL注入防护:使用MyBatis参数化查询
- XSS攻击防范:对用户输入进行严格过滤和转义
- 会话安全管理:完善的用户认证和授权机制
该鲜花电商平台通过SSM框架的深度整合和行业特性的精准把握,为传统鲜花零售业提供了完整的技术解决方案,具有良好的可扩展性和维护性。