首页 > 编程语言 >【开源】基于JavaWeb的网上药店系统

【开源】基于JavaWeb的网上药店系统

时间:2023-12-01 22:04:28浏览次数:38  
标签:JavaWeb qw 药品 开源 模块 dish currUser id 网上药店


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


一、摘要

1.1 项目介绍

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

1.2 项目录屏 & 源码

https://www.bilibili.com/video/BV1Ch4y1i7Fb


二、功能模块

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

【开源】基于JavaWeb的网上药店系统_管理系统_02

2.1 数据中心模块

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

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

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

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

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

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

2.2 药品类型模块

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

2.3 药品档案模块

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

2.4 药品订单模块

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

2.5 药品收藏模块

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

2.6 药品资讯模块

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


三、系统设计

3.1 用例设计

【开源】基于JavaWeb的网上药店系统_网站_03

3.2 数据库设计

3.2.1 角色表

【开源】基于JavaWeb的网上药店系统_java_04

3.2.2 药品表

【开源】基于JavaWeb的网上药店系统_java_05

3.2.3 药品订单表

【开源】基于JavaWeb的网上药店系统_java_06

3.2.4 药品收藏表

【开源】基于JavaWeb的网上药店系统_java_07

3.2.5 药品留言表

【开源】基于JavaWeb的网上药店系统_java_08


四、系统展示

【开源】基于JavaWeb的网上药店系统_spring boot_09

【开源】基于JavaWeb的网上药店系统_管理系统_10

【开源】基于JavaWeb的网上药店系统_spring boot_11

【开源】基于JavaWeb的网上药店系统_vue.js_12

【开源】基于JavaWeb的网上药店系统_spring boot_13

【开源】基于JavaWeb的网上药店系统_java_14

【开源】基于JavaWeb的网上药店系统_管理系统_15

【开源】基于JavaWeb的网上药店系统_spring boot_16


五、核心代码

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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题。

标签:JavaWeb,qw,药品,开源,模块,dish,currUser,id,网上药店
From: https://blog.51cto.com/u_16381201/8649034

相关文章

  • 【开源】随机生成一副黑白相间的地图
    code#include<bits/stdc++.h>usingnamespacestd;stringmp[105][105];intmain(){ srand(time(0)); intn,m; cin>>n>>m; for(inti=1;i<=n;i++){ for(intj=1;j<=m;j++){ if(rand()%2==1){ mp[i][j]="□"; }els......
  • 【开源】画数字
    #include<bits/stdc++.h>usingnamespacestd;intnum[int(1e8+5)],n;voidpaint(){ stringpho[7];//1:左2:右3:双4:全5、6:10 pho[1]="▇"; pho[2]="▇"; pho[3]="▇▇"; pho[4]="......
  • 关于开放签电子签章系统开源内容的两次讨论
      马上接近开放签电子签章系统1.0版本上线的时间了,但是对于开源那些内容?如何选择开源协议?这些问题都需要更加清晰和准确的定义。因为我们感觉对于开源代码来说,并不是越多越好,也不是越少越好,开的多用户学习成本会很大,开的少对于用户来说意义不大,所以开源哪些内容不是一件简单的......
  • 【开源】基于JavaWeb的固始鹅块销售系统
    一、摘要1.1项目介绍基于JAVA+Vue+SpringBoot+MySQL的固始鹅块销售系统,包含了鹅块类型模块、固始鹅块模块、鹅块订单模块、评论管理模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,固始鹅块销售系统基于角色......
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel
    前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成SentinelSpringMvc集成Sentinel一、Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel......
  • 开源的.NET混淆工具使用
    一、ConfuserExhttps://github.com/mkaring/ConfuserEx使用方法:1、到Releases中下载最新的GUI包 2、解压后,打开ConfuserEx.exe,进入程序主页,再点击画圈的“+”按钮,选择要混淆的dll文件3、切换到“Setting”标签,选中dll后点击右边的“+”按钮,给它添加一条“true”规则 4......
  • 开源视频监控服务器Shinobi[转]
    原文:https://blog.csdn.net/wbsu2004/article/details/132845218————————————————版权声明:本文为CSDN博主「杨浦老苏」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/wbsu2004/article/details/132845218......
  • 开源大模型驱动的编程能力测试
    随着人工智能技术的不断发展,开源大模型已经成为了一个备受关注的话题。在这些开源大模型中,WizardCoder和WizardLM是两个备受瞩目的项目。本文将重点介绍这两个模型的特点和优势,并探讨它们在写代码能力测试中的应用。一、开源大模型WizardCoderWizardCoder是一个基于Python的......
  • 《安富莱嵌入式周报》第326期:航空航天级CANopen协议栈,开源USB PD电源和功耗分析,开源Et
     更新一期视频教程:BSP视频教程第28期:CANopen协议栈专题,CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法视频版:https://www.bilibili.com/video/BV1H84y1Q717/ 1、航空航天级CANopen协议栈https://gitlab.com/n7space/canopenhttps://canopen.space/#download lely-......
  • Danswer 快速指南:不到15分钟打造您的企业级开源知识问答系统
    Kevin公众号「技术狂潮AI」深耕互联网行业十余载,热衷AI技术研究 一、写在前面至于为什么需要做企业知识库,知识问答检索系统,以及现有GPT模型在企业应用中存在哪些劣势,今天在这里就不再赘述了,前面介绍其他构建知识库案例的文章中基本上都有讲过,如果您有兴趣......