【开源】基于Vue.js的网上药店系统

在这里插入图片描述
项目编号: S 062 ,文末获取源码。 \color{red}{项目编号:S062,文末获取源码。} 项目编号:S062,文末获取源码。


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 药品类型模块
    • 2.3 药品档案模块
    • 2.4 药品订单模块
    • 2.5 药品收藏模块
    • 2.6 药品资讯模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 角色表
      • 3.2.2 药品表
      • 3.2.3 药品订单表
      • 3.2.4 药品收藏表
      • 3.2.5 药品留言表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询药品
    • 5.2 查询药品类型
    • 5.3 药品收藏
    • 5.4 药品加购
    • 5.5 新增药品留言
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的网上药店系统,包含了药品类型模块、药品档案模块、药品收藏模块、药品订单模块、药品资讯模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,网上药店系统基于角色的访问控制,给药店管理员、消费者使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

源码下载


二、功能模块

网上药店系统的功能性需求主要包含数据中心模块、药品类型模块、药品档案模块、药品订单模块、药品收藏模块和药品资讯模块这六大模块,系统是基于浏览器运行的web管理后端。

在这里插入图片描述

2.1 数据中心模块

数据中心模块包含了网上药店系统的系统基础配置,如登录用户的管理、运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。

其中登录用户管理模块,由管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。

组织架构,指的是高校的组织架构,该模块适用于管理这些组织架构的部门层级和教师的部门归属情况。

用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。

系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。

公用云盘管理模块,用于统一化维护网上药店系统中的图片,如合同签订文件、合同照片等等。

2.2 药品类型模块

不同的药品有着不同的类型,适合不同的患者使用,所以需要建立药品类型模块,药品类型的数据包括类型名称、类型状态、排序值、备注、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询药品类型数据,用户可以查询管理员发布的药品类型数据。

2.3 药品档案模块

药品是网上药店系统的核心实体,需要建立药品档案模块对管理员发布的药品数据进行管理,药品的字段包括药品名称、药品类型、药品介绍、药品图片、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询药品数据,用户可以查询管理员发布的药品数据。

2.4 药品订单模块

有了药品的数据之后,用户就可以对齐进行购买下单操作,药品订单的数据包括药品、下单状态、下单数量、付款状态、创建人、创建时间、更新人、更新时间,用户可以对药品进行加购、下单和付款操作,管理员可以对用户发起的药品订单进行条件查询。

2.5 药品收藏模块

为了更好的满足用户的个性化需求,网上药店系统支持用户对药品进行收藏,以便于快速的选择药品,药品收藏字段包括药品ID、药品名称、药品介绍、药品图片、收藏人、收藏时间、更新人、更新时间,用户可以对药品进行收藏、取消收藏操作,管理员可以查询用户的药品收藏数据。

2.6 药品资讯模块

为了更好的和用户去做交互,网上药店系统支持留言功能,留言的字段包括留言内容、留言人、留言时间、状态、备注、回复内容、回复时间、回复人,用户可以对药品发起留言,管理员可以对其进行回复,或进行删除留言操作。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 角色表

在这里插入图片描述

3.2.2 药品表

在这里插入图片描述

3.2.3 药品订单表

在这里插入图片描述

3.2.4 药品收藏表

在这里插入图片描述

3.2.5 药品留言表

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询药品

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询药品")
public Result<IPage<DishVariety>> getByPage(@ModelAttribute DishVariety dishVariety ,@ModelAttribute PageVo page){QueryWrapper<DishVariety> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dishVariety.getTitle())) {qw.like("title",dishVariety.getTitle());}if(!ZwzNullUtils.isNull(dishVariety.getType())) {qw.eq("type",dishVariety.getType());}if(!ZwzNullUtils.isNull(dishVariety.getContent())) {qw.like("content",dishVariety.getContent());}IPage<DishVariety> data = iDishVarietyService.page(PageUtil.initMpPage(page),qw);User currUser = securityUtil.getCurrUser();for (DishVariety vo : data.getRecords()) {QueryWrapper<DishCollect> collQw = new QueryWrapper<>();collQw.eq("collect_id",currUser.getId());collQw.eq("dish_id",vo.getId());vo.setCollectFlag(iDishCollectService.count(collQw));QueryWrapper<DishOrder> orderQw = new QueryWrapper<>();orderQw.eq("dish_id",vo.getId());orderQw.eq("status","已加购");orderQw.last("limit 1");DishOrder order = iDishOrderService.getOne(orderQw);vo.setBuyNumber(order == null ? BigDecimal.ZERO : order.getNumber());}return new ResultUtil<IPage<DishVariety>>().setData(data);
}

5.2 查询药品类型

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询药品类型")
public Result<IPage<DishType>> getByPage(@ModelAttribute DishType dishType ,@ModelAttribute PageVo page){QueryWrapper<DishType> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dishType.getTitle())) {qw.like("title",dishType.getTitle());}if(!ZwzNullUtils.isNull(dishType.getStatus())) {qw.eq("status",dishType.getStatus());}IPage<DishType> data = iDishTypeService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<DishType>>().setData(data);
}

5.3 药品收藏

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增收藏")
public Result<DishCollect> addOne(@RequestParam String id){DishVariety dish = iDishVarietyService.getById(id);if(dish == null) {return ResultUtil.error("药品不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<DishCollect> qw = new QueryWrapper<>();qw.eq("dish_id",id);qw.eq("collect_id",currUser.getId());if(iDishCollectService.count(qw) > 0L) {return ResultUtil.success();}DishCollect dishCollect = new DishCollect();dishCollect.setDishId(dish.getId());dishCollect.setTitle(dish.getTitle());dishCollect.setType(dish.getType());dishCollect.setContent(dish.getContent());dishCollect.setImage(dish.getImage());dishCollect.setPrice(dish.getPrice());dishCollect.setCollectId(currUser.getId());dishCollect.setCollectName(currUser.getNickname());dishCollect.setCollectTime(DateUtil.now());iDishCollectService.saveOrUpdate(dishCollect);return ResultUtil.success();
}

5.4 药品加购

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "加购")
public Result<DishOrder> addOne(@RequestParam String id, @RequestParam BigDecimal number){DishVariety dish = iDishVarietyService.getById(id);if(dish == null) {return ResultUtil.error("药品不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<DishOrder> qw = new QueryWrapper<>();qw.eq("dish_id",dish.getId());qw.eq("status","已加购");qw.eq("order_id",currUser.getId());qw.last("limit 1");DishOrder order = iDishOrderService.getOne(qw);if(order != null) {order.setNumber(order.getNumber().add(number));iDishOrderService.saveOrUpdate(order);return ResultUtil.success();}DishOrder o = new DishOrder();o.setDishId(dish.getId());o.setTitle(dish.getTitle());o.setType(dish.getType());o.setContent(dish.getContent());o.setImage(dish.getImage());o.setPrice(dish.getPrice());o.setStatus("已加购");o.setNumber(number);o.setOrderId(currUser.getId());o.setOrderName(currUser.getNickname());o.setOrderTime(DateUtil.now());iDishOrderService.saveOrUpdate(o);return ResultUtil.success();
}

5.5 新增药品留言

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增药品留言")
public Result<Message> insert(Message message){User currUser = securityUtil.getCurrUser();message.setUserId(currUser.getId());message.setUserName(currUser.getNickname());message.setUserTime(DateUtil.now());message.setReplyContent("");message.setReplyName("");message.setReplyTime("");message.setReplyId("");iMessageService.saveOrUpdate(message);return new ResultUtil<Message>().setData(message);
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/216350.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度解读英伟达新一轮对华特供芯片H20、L20、L2的定位

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 因为一直从事 AI 工…

基于Java+Vue+uniapp微信小程序微信阅读网站平台设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

蓝桥杯第597题 跑步锻炼 C++ 日期模板题(模拟经典)

题目 跑步锻炼https://www.lanqiao.cn/problems/597/learning/?page1&first_category_id1&name%E8%B7%91%E6%AD%A5%E9%94%BB%E7%82%BC 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝每天都锻炼身…

Ubuntu 22.04.3编译AOSP13刷机

文章目录 设备信息下载AOSP并切换分支获取设备驱动编译系统编译遇到的问题Cannot allocate memoryUbuntu设置USB调试刷机参考链接 设备信息 手机&#xff1a;Pixel 4XL 下载AOSP并切换分支 在清华大学开源软件镜像站下载初始化包aosp-latest.tar。 解压缩&#xff0c;切换到…

Linux常用命令——bind命令

在线Linux命令查询工具 bind 显示或设置键盘按键与其相关的功能 补充说明 bind命令用于显示和设置命令行的键盘序列绑定功能。通过这一命令&#xff0c;可以提高命令行中操作效率。您可以利用bind命令了解有哪些按键组合与其功能&#xff0c;也可以自行指定要用哪些按键组合…

《C++PrimePlus》第9章 内存模型和名称空间

9.1 单独编译 Visual Studio中新建头文件和源代码 通过解决方案资源管理器&#xff0c;如图所示&#xff1a; 分成三部分的程序&#xff08;直角坐标转换为极坐标&#xff09; 头文件coordin.h #ifndef __COORDIN_H__ // 如果没有被定义过 #define __COORDIN_H__struct pola…

Ubuntu服务器/工作站常见故障修复记录

日常写代码写方案文档&#xff0c;偶尔遇上服务器出现问题的时候&#xff0c;也需要充当一把运维工程师&#xff0c;此帖用来记录服务器报错的一些解决方案&#xff0c;仅供参考&#xff01; 文章目录 一、服务器简介二、机箱拆解三、基本操作3.1 F2进入BIOS3.2 F12进入Boot Me…

【GPT-3.5】通过python调用ChatGPT API与ChatGPT对话交流

文章目录 一、引言二、AIGC简介三、OpenAI介绍四、GPT-3.5介绍五、获得OpenAI API Key六、调用ChatGPT API实现与ChatGPT对话七、参考链接 一、引言 ChatGPT 的火爆&#xff0c;成功带火了AIGC&#xff0c;让它进入大众的视野。 ChatGPT 和Whisper API 开发者现在可以通过API将…

【opencv】计算机视觉:实时目标追踪

目录 前言 解析 深入探究 前言 目标追踪技术对于民生、社会的发展以及国家军事能力的壮大都具有重要的意义。它不仅仅可以应用到体育赛事当中目标的捕捉&#xff0c;还可以应用到交通上&#xff0c;比如实时监测车辆是否超速等&#xff01;对于国家的军事也具有一定的意义&a…

「Verilog学习笔记」数据串转并电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 关于什么是Valid/Ready握手机制&#xff1a; 深入 AXI4 总线&#xff08;一&#xff09;握手机制 - 知乎 时序图含有的信息较多&#xff0c;观察时序图需要注意&#xff1a…

Android Frameworks 开发总结之七

1.修改android 系统/system/下面文件时权限不够问题 下面提到的方式目前在Bobcat的userdebug image上测试可行&#xff0c;还没有在user上测试过. 修改前: leifleif:~$ adb root restarting adbd as root leifleif:~$ adb disable-verity verity is already disabled using …

2023亚马逊云科技re:Invent引领科技新潮流:云计算与生成式AI共塑未来

2023亚马逊云科技re:Invent引领科技新潮流&#xff1a;云计算与生成式AI共塑未来 历年来&#xff0c;亚马逊云科技re:Invent&#xff0c;不仅是全球云计算从业者的年度狂欢&#xff0c;更是全球云计算领域每年创新发布的关键节点。 2023年亚马逊云科技re:Invent大会在美国拉斯…