计算机毕业设计 社区医疗服务系统的设计与实现 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.rhkb.cn/news/428844.html

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

相关文章

线性代数书中求解线性方程组的三种方法的实例

目录 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65) 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65)

刷题训练之字符串

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握字符串算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题…

【笔记】1.3 塑性变形

一、塑性变形的方式 DDWs&#xff08;Dislocation-Dipole Walls&#xff0c;位错偶极墙&#xff09;&#xff1a;指由两个位错构成的结构&#xff0c;它们以一种特定的方式排列在一起&#xff0c;形成一个稳定的结构单元。 DTs&#xff08;Dislocation Tangles&#xff0c;位错…

allWebPlugin中间件自定义alert、confirm及prompt使用

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

关于 NLP 深度学习的核心流程

基本流程实现的先后顺序&#xff08;每一步都包含很多技术点&#xff09;&#xff1a; 选定语言模型结构 关于语言模型&#xff1a; 作用 判断那一句话相对更合理&#xff0c;相对不合理的会得到较底的分值&#xff1a; 挑选成句概率分值最高的评价指标&#xff1a;PPL&…

在线查看 Android 系统源代码 Git repositories on android

在线查看 Android 系统源代码 Git repositories on android 1. Git repositories on android1.1. Android Make Build System1.2. Android Open Source Project Code Review References 1. Git repositories on android https://android.googlesource.com/ 1.1. Android Make …

Git rebase 的使用(结合图与案例)

目录 Git rebase 的使用Git rebase 概念Git rebase 原理rebase和merge的选择 Git rebase 的使用 在 Git 中整合来自不同分支的修改主要有两种方法&#xff1a;merge 以及 rebase Git rebase 概念 **rebase概念&#xff1a;**用来重新应用提交&#xff08;commits&#xff09…

一文入门生成式AI(理解ChatGPT的原理)

一、什么是生成式AI&#xff1f; 以ChatGPT为代表的生成式AI&#xff0c;是对已有的数据和知识进行向量化的归纳&#xff0c;总结出数据的联合概率。从而在生成内容时&#xff0c;根据用户需求&#xff0c;结合关联字词的概率&#xff0c;生成新的内容。 可以这么联想&#x…

浅析OceanBase数据库的向量化执行引擎

本篇博客是偏数据库系统概念性的内容&#xff0c;不会深入到 OceanBase 中各个算子和表达式的在向量化中的详细设计和实现。 背景 为了提升OceanBase社区版用户解决问题的效率&#xff0c;OceanBase官方不久前推出了《OceanBase 从入门到实践》系列课程。在第七期直播课程后&a…

嵌入式 开发技巧和经验分享

文章目录 前言嵌入式 开发技巧和经验分享目录1.1嵌入式 系统的 定义1.2 嵌入式 操作系统的介绍1.3 嵌入式 开发环境1.4 编译工具链和优化1.5 嵌入式系统软件开发1.6 嵌入式SDK开发2.1选择移植的系统-FreeRtos2.2FreeRtos 移植步骤2.3 系统移植之中断处理2.4系统移植之内存管理2…

【数据结构与算法 | 灵神题单 | 自底向上DFS篇】力扣965, 2331, 100, 1379

1. 力扣965&#xff1a;单值二叉树 1.1 题目&#xff1a; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时&#xff0c;才返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;[1,1,1,1,1,n…

Jenkins学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程&#xff1a;封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

vue table id一样的列合并

合并场景&#xff1a;如果id一样&#xff0c;则主表列合并&#xff0c;子表列不做合并&#xff0c;可实现单行、多行合并&#xff0c;亲测&#xff01;&#xff01;&#xff01; 展示效果如图示&#xff1a; 组件代码&#xff1a; // table组件 :span-method"objectSpa…

低代码可视化工具-uniapp页面跳转传参-代码生成器

uniapp页面跳转传参 在uni-app中&#xff0c;页面间的跳转和传参是一个常见的需求。uni-app提供了多种页面跳转方式&#xff0c;如uni.navigateTo、uni.redirectTo、uni.reLaunch、uni.switchTab、uni.navigateBack等&#xff0c;每种方式适用于不同的场景。以 页面跳转并传参…

【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

加密与安全_优雅存储二要素(AES-256-GCM )

文章目录 什么是二要素如何保护二要素&#xff08;姓名和身份证&#xff09;加密算法分类场景选择算法选择AES - ECB 模式 (不推荐)AES - CBC 模式GCM&#xff08;Galois/Counter Mode&#xff09;AES-256-GCM简介AES-256-GCM工作原理安全优势 应用场景其他模式 和 敏感数据加密…

MySQL:库表的基本操作

库操作 查看 查看存在哪些数据库&#xff1a; show databases;查看自己当前处于哪一个数据库&#xff1a; select database(); 由于我不处于任何一个数据库中&#xff0c;此处值为NULL 查看当前有哪些用户连接到了MySQL&#xff1a; show processlist; 创建 创建一个数据库 语…

前端web端项目运行的时候没有ip访问地址

我们发现 没有netWork 的地址 导致 团队内其他同学无法打开我们的地址 进行访问 在page.json 中的运行 指令中 添加 --host 记得加上空格 这样我们就可以看到这个地址了 团队其他同学 就可以访问我们这个地址了

Tomcat服务器—Windows下载配置详细教程

一、关于 1.1 简介 Tomcat是一个开源的Java Servlet容器和Web服务器&#xff0c;由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages (JSP) 规范&#xff0c;用于运行Java Web应用程序。Tomcat支持多种Java EE功能&#xff0c;并提供了高效的性能和可扩展性&am…

我的AI工具箱Tauri版-VideoDuplication视频素材去重

本教程基于自研的AI工具箱Tauri版进行VideoDuplication视频素材去重。 该项目是基于自研的AI工具箱Tauri版的视频素材去重工具&#xff0c;用于高效地处理和去除重复视频内容。用户可以通过搜索关键词"去重"或通过路径导航到"Python音频技术/视频tools"模…