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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

使用Diskgenius系统迁移

使用Diskgenius系统迁移 1、使用系统迁移2、注意点3、新备份的系统盘装在电脑上可能出现盘符错乱导致开机不进入桌面情况 1、使用系统迁移 参考视频&#xff1a; DiskGenius无损系统迁移&#xff0c;换硬盘无需重装系统和软件 2、注意点 1&#xff09;新的硬盘里面的所有资料…

数据结构_1.1、数据结构的基本概念

1、基本概念 数据&#xff1a;是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 数据元素&#xff1a;数据元素是数据的基本单位&#xff0c;通常作为一个整体进行考虑和处理…

【IEEE 独立出版,快速EI检索】第四届人工智能、虚拟现实与可视化国际学术会议(AIVRV 2024)

第四届人工智能、虚拟现实与可视化国际学术会议&#xff08;AIVRV 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Virtual Reality and Visualization 官方信息 会议官网&#xff1a;www.aivrv.org 2024 4th International Conference on…

NXP官方或正点原子mfgtool下载系统报错initialize the library falied error code:29

这是因为mfgtool版本或者源文件被破坏了&#xff0c;你可以重新下载一个被改过的mfgtool程序&#xff0c;我就是去原子官网重新在linux包里找了新的更迭过的mfgtool

【AI大语言模型】提示词工程基础及进阶

【AI大语言模型】提示词工程基础及进阶 什么是提示词&#xff08;Prompt&#xff09; 提示词&#xff08;Prompt&#xff09;是与人工智能对话时用来引导或触发生成某种输出的指令。 它相当于你在与 AI 进行互动时所提出的问题或任务说明。提示词可以是简短的指令、一个问题…

springboot注册和注入组件方式概览

IoC&#xff1a;Inversion of Control&#xff08;控制反转&#xff09; 控制&#xff1a;资源的控制权&#xff08;资源的创建、获取、销毁等&#xff09; 反转&#xff1a;和传统的方式不一样了 DI &#xff1a;Dependency Injection&#xff08;依赖注入&#xff09; 依赖&…

C++编程语言:基础设施:命名空间(Bjarne Stroustrup)

第 14 章 命名空间(Namespaces) 目录 14.1 组成问题(Composition Problems) 14.2 命名空间(Namespaces) 14.2.1 显式修饰(Explicit Qualification) 14.2.2 使用using 声明 14.2.3 using 指令 14.2.4 参数依赖查询 14.2.5 命名空间的开放性 14.3 模块化和接口 …

接口加解密及数据加解密

目录 一、 加解密方式介绍 1.1 Hash算法加密 1.2. 对称加密 1.3 非对称加密 二、 我们要讲什么&#xff1f; 三、 接口加解密 四、 数据加解密 一、 加解密方式介绍 所有的加密方式我们可以分为三类&#xff1a;对称加密、非对称加密、Hash算法加密。 算法内部的具体实现…

自定义dialog 背景属性差异

比如正常要实现的dialog效果&#xff1a; 代码如此&#xff1a; public class SimpleDialog extends Dialog {private Button permissionokTv;//确定按钮private Button permissionnoTv;//取消按钮private TextView permissiontitleTv;//消息标题文本private TextView permiss…

[OpenGL]使用OpenGL绘制带纹理三角形

一、简介 本文介绍了如何使用使用OpenGL绘制带纹理三角形。 在绘制带纹理的三角形时&#xff0c; 首先使用.h读取准备好的.png格式的图片作为纹理&#xff0c;然后在fragment shader中使用 ... in vec2 textureCoord; uniform sampler2D aTexture1; void main() {FragColor …

Elionix 电子束曝光系统

Elionix 电子束曝光系统 - 上海纳腾仪器有限公司 -

您可能一直在寻找的 10 个非常有用的前端库

文章目录 前言正文1.radash2.dayjs3.driver4.formkit/drag-and-drop5.logicflow6.ProgressBar7.tesseract8.zxcvbn9.sunshine-track10.lottie 前言 前端开发中&#xff0c;总有一些重复性的工作让我们疲于奔命。为了提高开发效率&#xff0c;我们精心挑选了10个功能强大、易于…

数据结构与算法——Java实现 7.习题——反转链表

当你穿过了暴风雨&#xff0c;你已不是原来那个人 —— 24.9.21 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输…

【Stm32】从零建立一个工程

这里我们创建“STM32F103”系列的文件&#xff0c;基于“固件库” 1.固件库获取 https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html 2.使用Keil创建.uvprojx文件 前提是已经下载好了“芯片对应的固件” 3.复制底层驱动代码 将固件库下的…

大数据新视界 --大数据大厂之JavaScript在大数据前端展示中的精彩应用

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

linux安装Anaconda3

先将Anaconda3安装包下载好&#xff0c;然后在主文件夹里新建一个文件夹&#xff0c;将Anaconda3安装包拖进去。 打开终端未来不出现缺东西的异常情况&#xff0c;我们先安装 yum install -bzip2然后进入根目录下&#xff0c;在进入Anaconda3文件夹下 sh包安装方式 sh Anac…

【二十四】【QT开发应用】ScorllArea应用3,补全ScorllArea代码以及ListWidget与ScorllArea联动的信号槽和槽函数编写

补全ScorllArea代码逻辑 我们将其他ListItem项目全部设置成和基本设置一样的代码&#xff0c;唯独不一样的就是把题头的label修改成对应的文本&#xff0c;例如基本设置&#xff0c;云盘设置等。 Widget对应一个类 每一个Widget创建对应的类&#xff0c;头文件和cpp文件&am…

为什么大多数的程序员的编程界面背景都是黑色的?

不光编程IDE软件界面是黑色&#xff0c;市场上很多软件也是黑色或灰色背景为主&#xff0c;比如PS、Pr、AutoCAD等。很多商业PPT、设计广告是黑色背景&#xff0c;这几年不少汽车品牌logo也改成单黑色。 看来黑色不光是程序员的偏爱&#xff0c;也是符合大多数人需求的颜色。 …

数字基带之相移键控PSK

1 相移键控定义 相移键控是指用载波的相移位变化来传递信号&#xff0c;不改变载波的幅度和频率&#xff0c;可用下面的公式表示。 是载波的幅度&#xff0c;是载波的角频率&#xff0c;是载波的瞬时相位&#xff0c;是载波的初始相位。如果需要调制的信号为1bit的二进制数&am…

链表(单向不带头非循环)

声明 链表题考的都是单向不带头非循环&#xff0c;所以在本专栏中只介绍这一种结构&#xff0c;实际中链表的结构非常多样&#xff0c;组合起来就有8种链表结构。 链表的实现 创建一个链表 注意&#xff1a;此处简单粗暴创建的链表只是为了初学者好上手。 public class MyS…