基于SSM框架的在线药品交易平台 - 源码深度解析

JavaJavaScriptMavenHTMLCSSSSM框架MySQL
2026-02-0714 浏览

文章摘要

本项目是基于SSM(Spring+SpringMVC+MyBatis)框架构建的在线药品交易平台,旨在为消费者和合规药品供应商提供一个安全、便捷的线上交易渠道。其核心业务价值在于解决了传统线下购药过程中存在的选择有限、信息不透明、时间与地域限制等痛点。通过将药品销售流程数字化,平台不仅帮助用户快速查...

基于SSM框架的在线药品交易平台 - 源码深度解析

随着互联网技术的飞速发展,传统药品零售行业正迎来数字化转型的关键时期。药品作为特殊商品,其线上交易必须满足更高的安全性、合规性和专业性要求。在此背景下,采用SSM(Spring + Spring MVC + MyBatis)框架构建的医药电商平台应运而生,为消费者和药品供应商之间搭建了安全可靠的数字化桥梁。

系统架构与技术栈

该医药电商平台采用经典的三层架构设计,充分体现了企业级应用的高标准要求:

  • 表现层:基于Spring MVC框架,通过DispatcherServlet统一处理用户请求,配合JSP视图技术实现前后端数据的高效交互
  • 业务逻辑层:依托Spring框架的IoC容器管理各类Service组件,利用声明式事务管理确保药品交易的数据一致性
  • 数据持久层:采用MyBatis框架,通过灵活的XML配置实现对象关系映射,显著提升数据库操作效率

技术选型亮点

  • 项目管理:使用Maven进行依赖管理,确保第三方库版本的统一控制
  • 前端技术:采用HTML5、CSS3和JavaScript构建响应式用户界面
  • 数据存储:MySQL数据库提供稳定可靠的数据存储服务
  • 框架整合:SSM三大框架的完美整合,既保证系统稳定性和性能,又为后续功能扩展提供良好基础

数据库设计亮点分析

订单业务表关系设计

平台的核心业务数据模型设计体现了高度的专业性和完整性。订单表(orders)与订单项表(orderitem)之间建立了一对多的关联关系,这种设计充分考虑了药品交易的特殊性:

CREATE TABLE `orders` (
  `oid` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `money` double DEFAULT NULL COMMENT '金额',
  `state` int(11) NOT NULL COMMENT '状态',
  `receiveInfo` varchar(255) DEFAULT NULL COMMENT '收货信息',
  `phoNum` varchar(255) DEFAULT NULL COMMENT '电话号码',
  `order_time` datetime DEFAULT NULL COMMENT '下单时间',
  `uid` int(11) NOT NULL COMMENT '用户ID',
  `accepter` varchar(100) DEFAULT NULL COMMENT '收货人',
  PRIMARY KEY (`oid`),
  KEY `FKC3DF62E5FC32F8E` (`uid`),
  CONSTRAINT `FKC3DF62E5FC32F8E` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单表'

订单项表通过外键关联确保数据引用完整性,同时为查询优化建立了适当的索引:

CREATE TABLE `orderitem` (
  `oiid` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单项ID',
  `count` int(11) NOT NULL COMMENT '数量',
  `subtotal` double DEFAULT NULL COMMENT '小计',
  `pid` int(11) NOT NULL COMMENT '产品ID',
  `oid` int(11) NOT NULL COMMENT '订单ID',
  PRIMARY KEY (`oiid`),
  KEY `FKE8B2AB61E818A405` (`oid`),
  KEY `FKE8B2AB6173B4E627` (`pid`),
  CONSTRAINT `FKE8B2AB6173B4E627` FOREIGN KEY (`pid`) REFERENCES `product` (`pid`),
  CONSTRAINT `FKE8B2AB61E818A405` FOREIGN KEY (`oid`) REFERENCES `orders` (`oid`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='订单项表'

药品信息表设计优化

药品表(product)的设计充分考虑了电商平台的业务需求,包含以下关键特性:

CREATE TABLE `product` (
  `pid` int(11) NOT NULL AUTO_INCREMENT COMMENT '产品ID',
  `pname` varchar(255) NOT NULL COMMENT '产品名称',
  `market_price` double DEFAULT NULL COMMENT '市场价',
  `shop_price` double NOT NULL COMMENT '店铺价',
  `image` varchar(255) DEFAULT NULL COMMENT '图片',
  `pdesc` varchar(5000) DEFAULT NULL COMMENT '产品描述',
  `is_hot` int(11) DEFAULT NULL COMMENT '是否热门',
  `pdate` timestamp NULL DEFAULT NULL COMMENT '产品日期',
  `csid` int(11) DEFAULT NULL COMMENT '二级分类ID',
  `state` int(11) DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`pid`),
  KEY `FKED8DCCEF5F778050` (`csid`),
  CONSTRAINT `FKED8DCCEF5F778050` FOREIGN KEY (`csid`) REFERENCES `categorysecond` (`csid`)
) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='产品表'

设计亮点

  • 差异化定价策略(市场价格 vs 店铺价格)
  • 热门药品标识功能
  • 完整的药品分类体系
  • 药品状态管理机制

核心功能实现

购物车管理功能

购物车功能采用独立的购物车项表(shopcartitem)设计,支持用户离线添加商品和批量操作:

// 购物车项实体类核心字段定义
public class ShopCartItem {
    private Integer cartitemid;    // 购物车项ID
    private Integer uid;          // 用户ID
    private Integer pid;          // 产品ID
    private Integer pcount;       // 产品数量
    private Double price;         // 价格
    private String image;         // 图片
    private Double ptotal;        // 产品总价
    private String pname;         // 产品名称
    
    // 计算单项总价的方法
    public void calculateSubtotal() {
        if (this.price != null && this.pcount != null) {
            this.ptotal = this.price * this.pcount;
        }
    }
}

购物车界面

管理员商品管理功能

管理员控制器实现了完整的商品CRUD操作,包含图片上传和分类管理:

@Controller
public class AdminController {
    @Autowired
    private ProductService productService;
    
    @RequestMapping("/admin/product_save")
    public String product_save(@RequestParam MultipartFile file, 
                              Product product, HttpServletRequest request) 
                              throws Exception {
        // 文件上传处理
        if (file != null && !file.isEmpty()) {
            String originalFilename = file.getOriginalFilename();
            String newFileName = UUIDUtiils.getUUID() + 
                originalFilename.substring(originalFilename.lastIndexOf("."));
            
            String realPath = request.getSession().getServletContext()
                .getRealPath("/products/1/");
            File targetFile = new File(realPath, newFileName);
            file.transferTo(targetFile);
            
            product.setImage("products/1/" + newFileName);
        }
        
        // 设置商品上架时间
        product.setPdate(new Date());
        productService.adminProduct_save(product);
        
        return "redirect:/admin/adminProduct_findAll?page=1";
    }
    
    // 商品分页查询
    @RequestMapping("/admin/adminProduct_findAll")
    public String adminProduct_findAll(@RequestParam int page, Model model) {
        PageBean<Product> pageBean = productService.adminFindAllByPage(page);
        model.addAttribute("pageBean", pageBean);

功能特色

  • 支持图片上传和重命名
  • 自动设置商品上架时间
  • 分页查询优化性能
  • 完整的异常处理机制

该平台通过SSM框架的深度整合,为药品电商行业提供了稳定、安全、高效的解决方案,具有良好的示范意义和实用价值。

本文关键词
SSM框架医药电商平台源码解析订单系统设计药品信息表

上下篇

上一篇
没有更多文章
下一篇
没有更多文章