一、前言
随着互联网技术的飞速发展,电子商务在各个领域得到了广泛应用。药品作为一种特殊的商品,其销售也逐渐向线上转移。传统的药品销售模式存在着诸多不便,如购买渠道有限、价格不透明、信息不对称等问题。而药品销售商城的出现,可以为消费者提供更加便捷、高效、安全的购药体验,同时也有助于提高药品销售企业的管理水平和市场竞争力。
本项目采用 Spring Boot + MySQL + Vue 技术栈实现药品销售商城。Spring Boot 框架简化了后端开发,高效构建稳定的服务端。MySQL 数据库存储药品信息及交易数据,确保数据的安全可靠。Vue 则为前端带来了良好的交互体验和响应式设计。前后端分离的架构使开发更高效,维护更便捷。通过该技术组合,成功打造了一个功能完善、用户体验友好的药品销售商城,为药品销售提供了便捷的线上渠道。
二、技术环境
前端:Vue、Elemet-plus
后端:SpringBoot、SpringMVC、Mybatis、Redis
插件:Maven Helper、Lombok、MybatisLog
工具:IDEA、Postman、Maven、Git、Navicat
环境:Windows10、MySQL
三、功能设计
3.1 管理员用例图如下图所示:
3.2 用户用例图如下图所示:
四、数据库设计
数据库的 E-R 图(实体 - 关系图)是一种强大的工具,用于直观地表示数据库中的实体及其之间的关系。在数据库设计中,E-R 图可以帮助我们清晰地理解数据的结构和流向。限于篇幅要求,仅列出关键部分实体属性图,如下所述。
五、部分效果展示
5.1 商品列表:清晰展示商品名称、规格等信息,每行有编辑和删除按钮。添加商品:输入各项商品详情及上传图片。编辑商品类似添加,可改信息。库存管理可查数量及出入库操作。
5.2 订单列表:展示订单编号、下单时间等,可筛选查看。订单详情:显示商品明细、客户信息等。状态变更:可修改订单状态为已发货等。
5.3 药品分类展示:方便用户快速查找所需药品。热门药品推荐:引导用户选择。搜索栏:输入关键词找药品。购物车入口:随时查看添加商品。个人信息栏:显示用户头像等基本信息。
5.4 评价区域:用户可输入文字评价内容。上传图片:可添加商品实物图。提交按钮:确认提交评价。评价展示:其他用户可查看已有的评价内容。
5.5 商品清单:列出所选商品及数量、价格。收货信息:填写姓名、地址等。提交订单按钮:确认下单操作。订单总价显示:明确需支付金额。
5.6 订单列表:展示所有订单编号、下单时间。订单状态:如待支付、已发货等。商品明细:可查看订单内商品信息。订单总价显示:每个订单对应总价。
六、部分功能代码
6.1 下单
public Result add(Order order) {
Goods goods = goodsService.findById(order.getOrderDetailsList().get(0).getGoodsId());
if (null == goods){
return ResultGenerator.genFailResult(ResultCode.GOODS_NULL_ERROR,"商品不存在,请重新下单");
}
if (null == goods.getRepertory()){
return ResultGenerator.genFailResult(ResultCode.GOODS_REPERTORY_ERROR,"商品不足,请联系管理员补货");
}
int count = orderDetailsService.getCountByGoodsId(order.getOrderDetailsList().get(0).getGoodsId());
if (goods.getRepertory().intValue() < count){
return ResultGenerator.genFailResult(ResultCode.GOODS_REPERTORY_ERROR,"商品不足,请联系管理员补货");
}
order.setId(DigitUtil.generatorLongId());
//批量添加订单详情
if (order.getOrderDetailsList().size() > 0){
Cart cart;
for (OrderDetails d: order.getOrderDetailsList()) {
d.setOrderId(order.getId());
d.setCreatedAt(new Date());
d.setCreatedBy(order.getCreatedBy());
d.setIsDelete(false);
if (d.getCartId() != null){
cart = new Cart();
cart.setId(d.getCartId());
cart.setIsDelete(true);
cartService.update(cart);
}
}
orderDetailsService.save(order.getOrderDetailsList());
}
order.setCreatedAt(new Date());
order.setIsDelete(false);
order.setStatus(1);
save(order);
//下单成功库存-1
goods.setRepertory(goods.getRepertory().subtract(BigDecimal.valueOf(1)));
goodsService.update(goods);
//同步删除购物车数据
if (order.getCartId() != null && order.getCartId().size() > 0){
Cart cart;
for (Long id:order.getCartId()) {
cart = new Cart();
cart.setId(id);
cart.setIsDelete(true);
cartService.update(cart);
}
}
Result result= ResultGenerator.genSuccessResult();
result.setData(order);
return result;
}
七、答辩可能出现的问题
🌟问题一
答辩老师:如何实现药品的搜索和推荐功能?
同学可回答:药品搜索功能通过对 MySQL 数据库进行关键字查询实现。对于推荐功能,我们可以根据用户的购买历史、浏览记录以及药品的关联性,利用算法进行个性化推荐。采用协同过滤算法,找到与当前用户行为相似的用户群体,推荐他们购买过的药品。
源码及文档获取
大家点赞、收藏、关注、评论啦 、需要源码及文档的可直接私信我即可。