计算机毕业设计 社区医疗服务系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
————————————————
计算机毕业设计《1000套》✌

目录

1、项目介绍及开发技术

1.1 项目介绍

1.2 开发技术

2、系统功能设计结构图

3、功能截图

3.1 前台功能

3.2 后台功能

4、数据库表结构设计

5、关键代码

5.1 挂号Controller模块 

5.2 挂号Service模块 

5.3 挂号ServiceImpl模块

5.4  挂号Dao模块

6、论文目录结构

7、源码获取


1、项目介绍及开发技术

1.1 项目介绍

在当前社会,随着人们健康意识的增强和医疗需求的多样化,社区医疗服务作为公共医疗体系的重要组成部分,其作用日益凸显。然而,传统的社区医疗服务模式存在诸多不便,如信息不对称、服务效率低下、资源分配不均等问题,这些问题限制了社区医疗服务的进一步发展。为了解决这些问题,提升社区医疗服务的质量和效率,我们设计并开发了一个社区医疗服务系统。

背景:
社区医疗服务系统旨在通过数字化手段,为社区居民提供更加便捷、高效的医疗服务。随着互联网技术的普及,越来越多的服务开始向线上转移,医疗健康服务也不例外。社区居民对于在线咨询、预约挂号、健康管理等方面的需求日益增长,这要求社区医疗服务必须与时俱进,利用现代信息技术提供更好的服务。

目的意义:

  • 1. 提升服务效率:系统通过提供在线预约挂号、咨询等功能,减少了居民前往医疗机构的时间和精力,提高了服务效率。
  • 2. 优化资源配置:系统能够根据居民的医疗需求和医生的专业特长,合理分配医疗资源,提高资源利用效率。
  • 3. 增强互动交流:通过论坛和留言板功能,居民可以与其他用户和医生进行交流,分享医疗经验,增强社区的凝聚力。
  • 4. 提高健康意识:防范指南模块为用户提供了丰富的健康知识,帮助居民提高健康意识和自我保健能力。
  • 5. 支持决策制定:系统收集的用户数据和反馈信息,为医疗机构提供了决策支持,有助于优化服务流程和提高服务质量。

综上所述,社区医疗服务系统的设计与实现,不仅能够为社区居民提供一个全面、便捷的医疗服务平台,还能够为医疗机构提供一个高效、智能的管理工具。通过技术手段优化社区医疗服务流程,该系统有望成为推动社区医疗服务创新的重要力量,为提升居民健康水平和生活质量做出贡献。

1.2 开发技术

类别技术名称用途/描述
开发语言Java一种广泛使用的面向对象编程语言。
框架Spring Boot简化Spring应用的初始搭建以及开发过程。
ORM工具MyBatis PlusMyBatis的增强工具,简化CRUD操作。
数据库MySQL流行的关系型数据库管理系统。
构建工具Maven项目管理和理解工具。
开发工具IDEA集成开发环境,用于代码编写和调试。
JDK版本JDK 1.8+Java开发工具包,提供运行Java程序所需的环境。
前端框架Vue用于构建用户界面的渐进式JavaScript框架。
UI框架Element UI基于Vue的桌面端组件库。
前端技术HTML网页内容的标准标记语言。
前端技术CSS描述HTML文档的样式。
前端技术JS网页脚本语言,用于实现网页的动态效果。

2、系统功能设计结构图

功能模块结构图

├── 前端
│   ├── 登录
│   ├── 注册
│   ├── 首页
│   ├── 论坛
│   ├── 留言板
│   ├── 社区公告
│   ├── 医生
│   │   ├── 立即挂号
│   │   └── 咨询
│   ├── 防范指南
│   └── 个人中心
│       ├── 个人信息
│       ├── 医生收藏
│       ├── 医生评价
│       ├── 挂号
│       ├── 防范指南收藏
│       └── 防范指南留言

└── 后端
    ├── 登录
    ├── 首页
    ├── 个人中心
    ├── 管理员管理
    ├── 用户管理
    ├── 医生管理
    ├── 挂号管理
    ├── 防范指南管理
    ├── 基础数据管理
    ├── 论坛管理
    ├── 留言板管理
    └── 社区公告管理
        └── 轮播图信息管理

系统MVC框架,请求流程展示:

3、功能截图

3.1 前台功能

3.2 后台功能

 

 

4、数据库表结构设计

CREATE TABLE `news` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`news_name` varchar(200) DEFAULT NULL COMMENT '公告标题  Search111 ',`news_types` int(11) DEFAULT NULL COMMENT '公告类型  Search111 ',`news_photo` varchar(200) DEFAULT NULL COMMENT '公告图片',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`news_content` longtext COMMENT '公告详情',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 nameShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='社区公告';DROP TABLE IF EXISTS `users`;CREATE TABLE `users` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(100) NOT NULL COMMENT '医院名',`password` varchar(100) NOT NULL COMMENT '密码',`role` varchar(100) DEFAULT '管理员' COMMENT '角色',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='管理员';DROP TABLE IF EXISTS `yisheng_commentback`;CREATE TABLE `yisheng_commentback` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`yisheng_id` int(11) DEFAULT NULL COMMENT '医生',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`yisheng_commentback_text` longtext COMMENT '评价内容',`insert_time` timestamp NULL DEFAULT NULL COMMENT '评价时间',`reply_text` longtext COMMENT '回复内容',`update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='医生评价';/*Table structure for table `yisheng_yuyue` */DROP TABLE IF EXISTS `yisheng_yuyue`;CREATE TABLE `yisheng_yuyue` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`yisheng_id` int(11) DEFAULT NULL COMMENT '医生',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`yisheng_yuyue_uuid_number` varchar(200) DEFAULT NULL COMMENT '就诊识别码',`yisheng_yuyue_time` date DEFAULT NULL COMMENT '挂号时间 Search111',`time_types` int(11) DEFAULT NULL COMMENT '时间类型 Search111',`yisheng_yuyue_types` int(11) DEFAULT NULL COMMENT '挂号状态',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COMMENT='挂号';DROP TABLE IF EXISTS `yonghu`;CREATE TABLE `yonghu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(200) DEFAULT NULL COMMENT '账户',`password` varchar(200) DEFAULT NULL COMMENT '密码',`yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户名称 Search111 ',`yonghu_phone` varchar(200) DEFAULT NULL COMMENT '用户手机号',`yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '用户身份证号',`yonghu_photo` varchar(200) DEFAULT NULL COMMENT '用户头像',`sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',`yonghu_email` varchar(200) DEFAULT NULL COMMENT '用户邮箱',`new_money` decimal(10,2) DEFAULT NULL COMMENT '余额 ',`yonghu_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户';DROP TABLE IF EXISTS `zhinan`;CREATE TABLE `zhinan` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`zhinan_uuid_number` varchar(200) DEFAULT NULL COMMENT '指南编号',`zhinan_name` varchar(200) DEFAULT NULL COMMENT '指南标题  Search111 ',`zhinan_photo` varchar(200) DEFAULT NULL COMMENT '指南图片',`zhinan_video` varchar(200) DEFAULT NULL COMMENT '指南视频',`zhinan_types` int(11) DEFAULT NULL COMMENT '指南类型 Search111',`zhinan_clicknum` int(11) DEFAULT NULL COMMENT '指南热度',`zan_number` int(11) DEFAULT NULL COMMENT '赞',`cai_number` int(11) DEFAULT NULL COMMENT '踩',`zhinan_content` longtext COMMENT '指南介绍 ',`zhinan_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show1 show2 photoShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='防范指南';/*Table structure for table `zhinan_collection` */DROP TABLE IF EXISTS `zhinan_collection`;CREATE TABLE `zhinan_collection` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`zhinan_id` int(11) DEFAULT NULL COMMENT '指南',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`zhinan_collection_types` int(11) DEFAULT NULL COMMENT '类型',`insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',PRIMARY KEY (`id`)
) DROP TABLE IF EXISTS `zhinan_liuyan`;CREATE TABLE `zhinan_liuyan` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`zhinan_id` int(11) DEFAULT NULL COMMENT '指南',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`zhinan_liuyan_text` longtext COMMENT '留言内容',`insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',`reply_text` longtext COMMENT '回复内容',`update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='指南留言';

5、关键代码

5.1 挂号Controller模块 

package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;import com.alibaba.fastjson.JSONObject;import java.util.*;import org.springframework.beans.BeanUtils;import javax.servlet.http.HttpServletRequest;import org.springframework.web.context.ContextLoader;import javax.servlet.ServletContext;import com.service.TokenService;
import com.utils.*;import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 挂号* 后端接口** @author* @email*/
@RestController
@Controller
@RequestMapping("/yishengYuyue")
public class YishengYuyueController {private static final Logger logger = LoggerFactory.getLogger(YishengYuyueController.class);private static final String TABLE_NAME = "yishengYuyue";@Autowiredprivate YishengYuyueService yishengYuyueService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//字典@Autowiredprivate ForumService forumService;//论坛@Autowiredprivate LiuyanService liuyanService;//留言板@Autowiredprivate NewsService newsService;//社区公告@Autowiredprivate YishengService yishengService;//医生@Autowiredprivate YishengChatService yishengChatService;//用户咨询@Autowiredprivate YishengCollectionService yishengCollectionService;//医生收藏@Autowiredprivate YishengCommentbackService yishengCommentbackService;//医生评价@Autowiredprivate YonghuService yonghuService;//用户@Autowiredprivate ZhinanService zhinanService;//防范指南@Autowiredprivate ZhinanCollectionService zhinanCollectionService;//指南收藏@Autowiredprivate ZhinanLiuyanService zhinanLiuyanService;//指南留言@Autowiredprivate UsersService usersService;//管理员/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params, HttpServletRequest request) {logger.debug("page方法:,,Controller:{},,params:{}", this.getClass().getName(), JSONObject.toJSONString(params));String role = String.valueOf(request.getSession().getAttribute("role"));if (false)return R.error(511, "永不会进入");else if ("用户".equals(role))params.put("yonghuId", request.getSession().getAttribute("userId"));else if ("医生".equals(role))params.put("yishengId", request.getSession().getAttribute("userId"));CommonUtil.checkMap(params);PageUtils page = yishengYuyueService.queryPage(params);//字典表数据转换List<YishengYuyueView> list = (List<YishengYuyueView>) page.getList();for (YishengYuyueView c : list) {//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put("data", page);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request) {logger.debug("info方法:,,Controller:{},,id:{}", this.getClass().getName(), id);YishengYuyueEntity yishengYuyue = yishengYuyueService.selectById(id);if (yishengYuyue != null) {//entity转viewYishengYuyueView view = new YishengYuyueView();BeanUtils.copyProperties(yishengYuyue, view);//把实体数据重构到view中//级联表 医生//级联表YishengEntity yisheng = yishengService.selectById(yishengYuyue.getYishengId());if (yisheng != null) {BeanUtils.copyProperties(yisheng, view, new String[]{"id", "createTime", "insertTime", "updateTime", "yonghuId", "yishengId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setYishengId(yisheng.getId());}//级联表 用户//级联表YonghuEntity yonghu = yonghuService.selectById(yishengYuyue.getYonghuId());if (yonghu != null) {BeanUtils.copyProperties(yonghu, view, new String[]{"id", "createTime", "insertTime", "updateTime", "yonghuId", "yishengId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);} else {return R.error(511, "查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody YishengYuyueEntity yishengYuyue, HttpServletRequest request) {logger.debug("save方法:,,Controller:{},,yishengYuyue:{}", this.getClass().getName(), yishengYuyue.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if (false)return R.error(511, "永远不会进入");else if ("用户".equals(role))yishengYuyue.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));else if ("医生".equals(role))yishengYuyue.setYishengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<YishengYuyueEntity> queryWrapper = new EntityWrapper<YishengYuyueEntity>().eq("yisheng_id", yishengYuyue.getYishengId()).eq("yonghu_id", yishengYuyue.getYonghuId()).eq("yisheng_yuyue_time", new SimpleDateFormat("yyyy-MM-dd").format(yishengYuyue.getYishengYuyueTime())).eq("time_types", yishengYuyue.getTimeTypes()).eq("yisheng_yuyue_types", yishengYuyue.getYishengYuyueTypes());logger.info("sql语句:" + queryWrapper.getSqlSegment());YishengYuyueEntity yishengYuyueEntity = yishengYuyueService.selectOne(queryWrapper);if (yishengYuyueEntity == null) {yishengYuyue.setCreateTime(new Date());yishengYuyueService.insert(yishengYuyue);return R.ok();} else {return R.error(511, "表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody YishengYuyueEntity yishengYuyue, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,yishengYuyue:{}", this.getClass().getName(), yishengYuyue.toString());YishengYuyueEntity oldYishengYuyueEntity = yishengYuyueService.selectById(yishengYuyue.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            yishengYuyue.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
//        else if("医生".equals(role))
//            yishengYuyue.setYishengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));yishengYuyueService.updateById(yishengYuyue);//根据id更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids, HttpServletRequest request) {logger.debug("delete:,,Controller:{},,ids:{}", this.getClass().getName(), ids.toString());List<YishengYuyueEntity> oldYishengYuyueList = yishengYuyueService.selectBatchIds(Arrays.asList(ids));//要删除的数据yishengYuyueService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/@RequestMapping("/batchInsert")public R save(String fileName, HttpServletRequest request) {logger.debug("batchInsert方法:,,Controller:{},,fileName:{}", this.getClass().getName(), fileName);Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))try {List<YishengYuyueEntity> yishengYuyueList = new ArrayList<>();//上传的东西Map<String, List<String>> seachFields = new HashMap<>();//要查询的字段Date date = new Date();int lastIndexOf = fileName.lastIndexOf(".");if (lastIndexOf == -1) {return R.error(511, "该文件没有后缀");} else {String suffix = fileName.substring(lastIndexOf);if (!".xls".equals(suffix)) {return R.error(511, "只支持后缀为xls的excel文件");} else {URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径File file = new File(resource.getFile());if (!file.exists()) {return R.error(511, "找不到上传文件,请联系管理员");} else {List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for (List<String> data : dataList) {//循环YishengYuyueEntity yishengYuyueEntity = new YishengYuyueEntity();
//                            yishengYuyueEntity.setYishengId(Integer.valueOf(data.get(0)));   //医生 要改的
//                            yishengYuyueEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            yishengYuyueEntity.setYishengYuyueUuidNumber(data.get(0));                    //就诊识别码 要改的
//                            yishengYuyueEntity.setYishengYuyueTime(sdf.parse(data.get(0)));          //挂号时间 要改的
//                            yishengYuyueEntity.setTimeTypes(Integer.valueOf(data.get(0)));   //时间类型 要改的
//                            yishengYuyueEntity.setYishengYuyueTypes(Integer.valueOf(data.get(0)));   //挂号状态 要改的
//                            yishengYuyueEntity.setCreateTime(date);//时间yishengYuyueList.add(yishengYuyueEntity);//把要查询是否重复的字段放入map中//就诊识别码if (seachFields.containsKey("yishengYuyueUuidNumber")) {List<String> yishengYuyueUuidNumber = seachFields.get("yishengYuyueUuidNumber");yishengYuyueUuidNumber.add(data.get(0));//要改的} else {List<String> yishengYuyueUuidNumber = new ArrayList<>();yishengYuyueUuidNumber.add(data.get(0));//要改的seachFields.put("yishengYuyueUuidNumber", yishengYuyueUuidNumber);}}//查询是否重复//就诊识别码List<YishengYuyueEntity> yishengYuyueEntities_yishengYuyueUuidNumber = yishengYuyueService.selectList(new EntityWrapper<YishengYuyueEntity>().in("yisheng_yuyue_uuid_number", seachFields.get("yishengYuyueUuidNumber")));if (yishengYuyueEntities_yishengYuyueUuidNumber.size() > 0) {ArrayList<String> repeatFields = new ArrayList<>();for (YishengYuyueEntity s : yishengYuyueEntities_yishengYuyueUuidNumber) {repeatFields.add(s.getYishengYuyueUuidNumber());}return R.error(511, "数据库的该表中的 [就诊识别码] 字段已经存在 存在数据为:" + repeatFields.toString());}yishengYuyueService.insertBatch(yishengYuyueList);return R.ok();}}}} catch (Exception e) {e.printStackTrace();return R.error(511, "批量插入数据异常,请联系管理员");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request) {logger.debug("list方法:,,Controller:{},,params:{}", this.getClass().getName(), JSONObject.toJSONString(params));CommonUtil.checkMap(params);PageUtils page = yishengYuyueService.queryPage(params);//字典表数据转换List<YishengYuyueView> list = (List<YishengYuyueView>) page.getList();for (YishengYuyueView c : list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id, HttpServletRequest request) {logger.debug("detail方法:,,Controller:{},,id:{}", this.getClass().getName(), id);YishengYuyueEntity yishengYuyue = yishengYuyueService.selectById(id);if (yishengYuyue != null) {//entity转viewYishengYuyueView view = new YishengYuyueView();BeanUtils.copyProperties(yishengYuyue, view);//把实体数据重构到view中//级联表YishengEntity yisheng = yishengService.selectById(yishengYuyue.getYishengId());if (yisheng != null) {BeanUtils.copyProperties(yisheng, view, new String[]{"id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYishengId(yisheng.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(yishengYuyue.getYonghuId());if (yonghu != null) {BeanUtils.copyProperties(yonghu, view, new String[]{"id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);} else {return R.error(511, "查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody YishengYuyueEntity yishengYuyue, HttpServletRequest request) {YonghuEntity userId = yonghuService.selectById((Integer) request.getSession().getAttribute("userId"));YishengEntity yishengEntity = yishengService.selectById(yishengYuyue.getYishengId());if(userId.getNewMoney() < yishengEntity.getYishengNewMoney()){return R.error("余额不足请充值");}userId.setNewMoney(userId.getNewMoney() - yishengEntity.getYishengNewMoney());yonghuService.updateById(userId);yishengYuyue.setCreateTime(new Date());yishengYuyueService.insert(yishengYuyue);return R.ok();}/*** 取消*/@RequestMapping("/refund")public R refund(Integer id, HttpServletRequest request) {logger.debug("refund方法:,,Controller:{},,id:{}", this.getClass().getName(), id);String role = String.valueOf(request.getSession().getAttribute("role"));YishengYuyueEntity yishengYuyue = yishengYuyueService.selectById(id);//当前表serviceInteger yishengId = yishengYuyue.getYishengId();if (yishengId == null)return R.error(511, "查不到该医生");YishengEntity yishengEntity = yishengService.selectById(yishengId);if (yishengEntity == null)return R.error(511, "查不到该医生");Double yishengNewMoney = yishengEntity.getYishengNewMoney();if (yishengNewMoney == null)return R.error(511, "医生价格不能为空");Integer userId = (Integer) request.getSession().getAttribute("userId");YonghuEntity yonghuEntity = yonghuService.selectById(userId);if (yonghuEntity == null)return R.error(511, "用户不能为空");if (yonghuEntity.getNewMoney() == null)return R.error(511, "用户金额不能为空");Double zhekou = 1.0;//计算金额Double money = yishengEntity.getYishengNewMoney() * 1 * zhekou;//计算所获得积分Double buyJifen = 0.0;yonghuEntity.setNewMoney(yonghuEntity.getNewMoney() + money); //设置金额yishengYuyue.setYishengYuyueTypes(102);//设置订单状态为已取消yishengYuyueService.updateAllColumnById(yishengYuyue);//根据id更新yonghuService.updateById(yonghuEntity);//更新用户信息yishengService.updateById(yishengEntity);//更新订单中医生的信息return R.ok();}/*** 评论*/@RequestMapping("/commentback")public R commentback(Integer id, String commentbackText, Integer yishengCommentbackPingfenNumber, HttpServletRequest request) {logger.debug("commentback方法:,,Controller:{},,id:{}", this.getClass().getName(), id);YishengYuyueEntity yishengYuyue = yishengYuyueService.selectById(id);if (yishengYuyue == null)return R.error(511, "查不到该订单");Integer yishengId = yishengYuyue.getYishengId();if (yishengId == null)return R.error(511, "查不到该医生");YishengCommentbackEntity yishengCommentbackEntity = new YishengCommentbackEntity();yishengCommentbackEntity.setId(id);yishengCommentbackEntity.setYishengId(yishengId);yishengCommentbackEntity.setYonghuId((Integer) request.getSession().getAttribute("userId"));yishengCommentbackEntity.setYishengCommentbackText(commentbackText);yishengCommentbackEntity.setInsertTime(new Date());yishengCommentbackEntity.setReplyText(null);yishengCommentbackEntity.setUpdateTime(null);yishengCommentbackEntity.setCreateTime(new Date());yishengCommentbackService.insert(yishengCommentbackEntity);yishengYuyue.setYishengYuyueTypes(105);//设置订单状态为已评论yishengYuyueService.updateById(yishengYuyue);//根据id更新return R.ok();}/*** 完成*/@RequestMapping("/deliver")public R deliver(Integer id, HttpServletRequest request) {logger.debug("refund:,,Controller:{},,ids:{}", this.getClass().getName(), id.toString());YishengYuyueEntity yishengYuyueEntity = yishengYuyueService.selectById(id);yishengYuyueEntity.setYishengYuyueTypes(103);//设置订单状态为已完成yishengYuyueService.updateById(yishengYuyueEntity);return R.ok();}}

5.2 挂号Service模块 

 package com.service;import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.YishengYuyueEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;/*** 挂号 服务类*/
public interface YishengYuyueService extends IService<YishengYuyueEntity> {/*** @param params 查询参数* @return 带分页的查询出来的数据*/PageUtils queryPage(Map<String, Object> params);}

5.3 挂号ServiceImpl模块


package com.service.impl;import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.YishengYuyueDao;
import com.entity.YishengYuyueEntity;
import com.service.YishengYuyueService;
import com.entity.view.YishengYuyueView;/*** 挂号 服务实现类*/
@Service("yishengYuyueService")
@Transactional
public class YishengYuyueServiceImpl extends ServiceImpl<YishengYuyueDao, YishengYuyueEntity> implements YishengYuyueService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<YishengYuyueView> page =new Query<YishengYuyueView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}

5.4  挂号Dao模块


package com.dao;import com.entity.YishengYuyueEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;import org.apache.ibatis.annotations.Param;
import com.entity.view.YishengYuyueView;/*** 挂号 Dao 接口** @author */
public interface YishengYuyueDao extends BaseMapper<YishengYuyueEntity> {List<YishengYuyueView> selectListView(Pagination page,@Param("params")Map<String,Object> params);}

6、论文目录结构

摘要... I

Abstract... II

1 绪论... 1
   1.1 项目简介... 1
   1.2 调查研究... 1
       1.2.1 研究背景及意义... 1
       1.2.2 国内外研究现状... 2
       1.2.3 研究主要内容... 2
   1.3 论文的章节安排... 3

2 系统相关技术介绍... 4
   2.1 Java语言... 4
   2.2 SpringBoot框架... 4
   2.3 Vue框架... 4
   2.4 MySQL数据库... 4

3 系统需求分析... 6
   3.1 可行性分析... 6
       3.1.1 技术可行性... 6
       3.1.2 经济可行性... 6
       3.1.3 操作可行性... 6
   3.2 系统功能需求... 6
       3.2.1 用户端功能需求... 6
       3.2.2 XX端功能需求... 6
       3.2.3 管理员端功能需求... 6
   3.3 系统性能需求... 6

4 系统总体设计... 7
   4.1 系统总体架构设计... 7
   4.2 系统的功能设计... 7
   4.3 数据库设计... 7
       4.3.1 概念设计E-R图... 7
       4.3.2 逻辑设计关系模式... 7
       4.3.3 数据库物理设计... 7

5 系统详细实现... 14
   5.1 系统实现环境... 14
   5.2 用户端... 14
       5.2.1 登录页面... 14
       5.2.2 注册页面... 14
       5.2.3 XXXX页面... 14
       5.2.4 XXXX页面... 14
       5.2.5 XXXX页面... 14
   5.3 XXXX端... 15
       5.3.1 XXXX页面... 15
       5.3.2 XXXX页面... 15
       5.3.3 XXXX页面... 15
       5.3.4 XXXX页面... 15
   5.4 管理端... 15
       5.4.1 用户管理页面... 15
       5.4.2 XXXX页面... 15
       5.4.3 XXXX页面... 16
       5.4.4 XXXX页面... 16

6 系统测试... 16
   6.1 测试目的... 16
   6.2 测试方法... 16
   6.3 测试用例... 16
       6.3.1 XXXX测试... 16
       6.3.2 XXXX测试... 16
   6.4 测试结果... 16

结论... 17

参考文献... 18

致谢... 19

更多源码:

计算机毕业设计选题1000套等你来!!!

7、源码获取

感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

喜欢文章可以点赞、收藏、关注、评论

下方联系方式获取源码

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

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

相关文章

MySQL高阶1919-兴趣相同的朋友

题目 请写一段SQL查询获取到兴趣相同的朋友。用户 x 和 用户 y 是兴趣相同的朋友&#xff0c;需满足下述条件&#xff1a; 用户 x 和 y 是朋友&#xff0c;并且用户 x and y 在同一天内听过相同的歌曲&#xff0c;且数量大于等于三首. 结果表 无需排序 。注意&#xff1a;返…

常见排序(C语言版)

1.排序的概念及其应用 1.1排序的概念 排序&#xff1a;​ 在计算机科学与数学中&#xff0c;一个排序算法&#xff08;英语&#xff1a;Sorting algorithm&#xff09;是一种能将一串资料依照特定排序方式排列的算法。 稳定性&#xff1a;假定在待排序的记录序列中&#xff…

聚观早报 | 小米三折叠手机专利曝光;李斌谈合肥投资蔚来

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月20日消息 小米三折叠手机专利曝光 李斌谈合肥投资蔚来 索尼PS5 Pro包装亮相 新一代Spectacles AR眼镜发布 通…

《AI系统:原理与架构》于华为HC大会2024正式发布

2024年9月21日&#xff0c;《AI系统&#xff1a;原理与架构》新书发布会在上海世博馆华为HC大会顺利举办。本书由华为昇腾技术专家、B站AI科普博主ZOMI酱和哈工大软件学院副院长苏统华教授联合编写&#xff0c;是领域内AI系统方面填补空白的重磅之作。 发布会上&#xff0c;《A…

Spring:项目中的统一异常处理和自定义异常

介绍异常的处理方式。在项目中&#xff0c;都会进行自定义异常&#xff0c;并且都是需要配合统一结果返回进行使用。 1.背景引入 &#xff08;1&#xff09;背景介绍 为什么要处理异常&#xff1f;如果不处理项目中的异常信息&#xff0c;前端访问我们后端就是显示访问失败的…

JavaScript发送邮件:实现前端触发的教程?

JavaScript发送邮件的方式&#xff1f;怎么使用JavaScript发信&#xff1f; 无论是用户反馈、联系表单还是自动通知&#xff0c;前端触发的邮件发送功能都能极大地提升用户体验。AokSend将详细介绍如何通过JavaScript发送邮件&#xff0c;实现前端触发的邮件发送功能。 JavaS…

跨站请求伪造(CSRF)漏洞详解

免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法…

ubuntu24安装vivado24(安装并解决若干错误)

目录 安装方法&#xff1a;问题1&#xff1a;解决办法&#xff1a; 问题2&#xff1a;解决方法&#xff1a; 安装完成&#xff1a; 安装方法&#xff1a; 注意&#xff1a;内存最好预留80G空闲的。 安装好大小&#xff1a; 安装依赖库&#xff1a; sudo apt-get update sud…

计算机网络17——IM聊天系统——客户端核心处理类框架搭建

目的 拆开客户端和服务端&#xff0c;使用Qt实现客户端&#xff0c;VS实现服务端 Qt创建项目 Qt文件类型 .pro文件&#xff1a;配置文件&#xff0c;决定了哪些文件参与编译&#xff0c;怎样参与编译 .h .cpp .ui&#xff1a;画图文件 Qt编码方式 Qt使用utf-8作为编码方…

鸿蒙 WebView 如何 Debug

前置&#xff1a; hdc chrome //----------------------------------------------------------------------------------------------- hdc shell cat /proc/net/unix | grep devtools 0: 00000002 0 10000 1 1 81134005 webview_devtools_remote_62479exit执行&…

vulnhub(12):bob 1.0.1(gpg文件解密)

端口 nmap主机发现 nmap -sn 192.168.72.0/24 ​ Nmap scan report for 192.168.72.169 Host is up (0.00020s latency). ​ 169是新出现的机器&#xff0c;他就是靶机 nmap端口扫描 nmap -Pn -sV 192.168.72.169 -p- --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap…

STL简介

在了解了C中的类和对象以及内存管理基本的知识后接下来我们将进入STL的学习&#xff0c;在此我们在本篇会先了解STL的由来以及大致了解STL的组成&#xff0c;接下来在之后的篇章中我将依次来学string、vector等&#xff0c;学习完STL之后相信你会进一步了解C的魅力所在。接下来…

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0917)

七、引入 element-ui 组件库 我的Git仓库&#xff1a;https://gitee.com/msyycn/vue3-hei-ma.git 官方文档&#xff1a; https://element-plus.org/zh-CN/ 安装 $ pnpm add element-plus自动按需&#xff1a; 安装插件 pnpm add -D unplugin-vue-components unplugin-auto…

机器翻译之Bahdanau注意力机制在Seq2Seq中的应用

目录 1.创建 添加了Bahdanau的decoder 2. 训练 3.定义评估函数BLEU 4.预测 5.知识点个人理解 1.创建 添加了Bahdanau的decoder import torch from torch import nn import dltools#定义注意力解码器基类 class AttentionDecoder(dltools.Decoder): #继承dltools.Decoder写…

元学习的简单示例

代码功能 模型结构&#xff1a;SimpleModel是一个简单的两层全连接神经网络。 元学习过程&#xff1a;在maml_train函数中&#xff0c;每个任务由支持集和查询集组成。模型先在支持集上进行训练&#xff0c;然后在查询集上进行评估&#xff0c;更新元模型参数。 任务生成&…

3DMAX乐高积木插件LegoBlocks使用方法

3DMAX乐高积木插件LegoBlocks&#xff0c;用户可以通过控件调整和自定义每个乐高积木的外观和大小。 【适用版本】 3dMax2009或更高版本&#xff08;不仅限于此范围&#xff09; 【安装方法】 3DMAX乐高积木插件无需安装&#xff0c;使用时直接拖动插件脚本文件到3dMax视口中…

NLP 主要语言模型分类

文章目录 ngram自回归语言模型TransformerGPTBERT&#xff08;2018年提出&#xff09;基于 Transformer 架构的预训练模型特点应用基于 transformer&#xff08;2017年提出&#xff0c;attention is all you need&#xff09;堆叠层数与原transformer 的差异bert transformer 层…

Packet Tracer - 配置编号的标准 IPv4 ACL(两篇)

Packet Tracer - 配置编号的标准 IPv4 ACL(第一篇) 目标 第 1 部分&#xff1a;计划 ACL 实施 第 2 部分&#xff1a;配置、应用和验证标准 ACL 背景/场景 标准访问控制列表 (ACL) 为路由器 配置脚本&#xff0c;基于源地址控制路由器 是允许还是拒绝数据包。本练习的主要内…

leetcode练习 二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3提示&#xff1a; 树中节点的数量在 [0, 104] 区间内。-100 …

python学习第十节:爬虫基于requests库的方法

python学习第十节&#xff1a;爬虫基于requests库的方法 requests模块的作用&#xff1a; 发送http请求&#xff0c;获取响应数据&#xff0c;requests 库是一个原生的 HTTP 库&#xff0c;比 urllib 库更为容易使用。requests 库发送原生的 HTTP 1.1 请求&#xff0c;无需手动…