基于SSM框架的农产品物资配送管理系统 - 源码深度解析
在传统农业供应链中,信息不透明和流转效率低下一直是制约行业发展的关键瓶颈。农企通平台正是针对这一行业痛点设计的数字化解决方案,它通过SSM框架技术整合农产品从采购、仓储到配送的全流程数据,为中小型农业企业提供高效、可追溯的一体化运营管理支持。
系统架构与技术栈
农企通平台采用经典的SSM(Spring + SpringMVC + MyBatis)框架组合,构建了清晰的三层架构体系,具有良好的可扩展性和维护性。
- Spring框架:作为IoC容器,管理Bean的生命周期,通过依赖注入(DI)降低模块间的耦合度,支持声明式事务管理。
- SpringMVC:基于DispatcherServlet的前端控制器模式,通过注解(如
@RequestMapping)简化请求映射,配合拦截器实现统一的权限控制与日志记录。 - MyBatis:作为ORM框架,通过XML或注解配置SQL映射,支持动态SQL,有效应对农产品业务中多条件查询的复杂性。
前端技术栈采用JSP结合jQuery的方案,实现服务端渲染与Ajax异步交互。项目使用Maven进行依赖管理,数据库选用MySQL 5.7,并通过连接池(如Druid)优化数据库访问性能。
数据库设计亮点分析
订单表(ordermsg)的设计优化
订单表作为系统的核心业务表,其设计体现了高内聚、低耦合的数据库优化策略:
CREATE TABLE `ordermsg` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`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 '备注',
`baozhuang` varchar(255) DEFAULT NULL COMMENT '包装',
`company` varchar(255) DEFAULT NULL COMMENT '快递公司',
`danhao` varchar(255) DEFAULT NULL COMMENT '快递单号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单表'
设计亮点包括:
- 状态字段分离:将付款状态(
fkstatus)、收货状态(shstatus)和逻辑删除状态(delstatus)独立设计,便于状态机管理和查询优化。 - 业务字段完整性:涵盖配送信息(如快递公司、单号)、包装要求等,满足农产品易损、需冷链配送等特殊场景。
- 索引策略:主键使用自增ID,适配InnoDB聚簇索引;对
ddno(订单号)建立唯一索引,提升查询效率并防止重复订单。
商品表(product)的业务扩展性设计
商品表设计充分考虑农产品品类多样、属性复杂的业务特点:
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`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`)
) ENGINE=InnoDB AUTO_INCREMENT=147 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='商品表'
关键设计考量:
- 价格精度控制:使用
DECIMAL(10,2)类型存储价格,避免浮点数计算误差,符合财务规范。 - 状态管理灵活:通过
issj(是否上架)、istj(是否推荐)等字段实现商品可见性控制与营销策略。 - 分类体系扩展:通过
fid(父类ID)和sid(子类ID)支持多级分类,适应农产品如“水果→热带水果→芒果”的层级结构。
核心功能实现
农产品管理模块
农产品管理模块实现了商品从创建、上架、促销到下架的全生命周期管理,支持图片上传、多级分类、价格策略等功能。

控制器层代码示例:
@Controller
@RequestMapping("/admin/product")
public class ProductController extends BaseController {
@Autowired
private ProductService productService;
/**
* 分页查询商品列表
*/
@RequestMapping("/list")
public String productList(HttpServletRequest request,
@RequestParam(defaultValue = "1") int page) {
PageHelper.startPage(page, 10); // 使用PageHelper实现物理分页
List<Product> productList = productService.findAll();
PageInfo<Product> pageInfo = new PageInfo<>(productList);
request.setAttribute("pageInfo", pageInfo);
return "admin/product_list";
}
/**
* 保存或更新商品信息(支持图片上传)
*/
@RequestMapping("/save")
@ResponseBody
public Map<String, Object> saveProduct(Product product,
MultipartFile file) {
Map<String, Object> result = new HashMap<>();
try {
if (file != null && !file.isEmpty()) {
String filename = FileUtil.uploadFile(file); // 文件上传工具类
product.setFilename(filename);
}
productService.save(product);
result.put("success", true);
result.put("message", "商品保存成功");
} catch (Exception e) {
logger.error("商品保存异常", e);
result.put("success", false);
result.put("message", "商品保存失败");
}
return result;
}
}
商品实体类(部分):
package com.entity;
public class Product {
private Integer id;
private String productno;
private String productname;
private String filename;
private BigDecimal price;
private BigDecimal tprice;
// 其他字段及getter/setter省略...
}
总结
农企通平台通过SSM框架的合理分层与MySQL的精细化表设计,实现了农产品配送业务的高效管理。其代码结构清晰、扩展性强,特别适合中小型农业企业快速搭建数字化供应链系统。未来可考虑引入Redis缓存、分布式事务等进一步优化高并发场景。