当前位置: 首页 > news >正文

SpringBoot+React养老院管理系统 附带详细运行指导视频

文章目录

  • 一、项目演示
  • 二、项目介绍
  • 三、运行截图
  • 四、主要代码
    • 1.入住合同文件上传
    • 2.添加和修改套餐的代码
    • 3.查看入住记录代码

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+React框架开发的养老院管理系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个养老院管理系统该有的所有功能。

项目功能:此项目分为两个角色:普通用户管理员普通用户有登录注册、浏览个人数据统计信息、管理个人信息、浏览楼栋信息、浏览套餐信息、浏览个人入住信息、浏览入住的日常记录信息、浏览入住的套餐选购信息、发布留言、浏览留言信息、删除个人留言信息、浏览公告信息、浏览活动信息等等功能。管理员有查看全部数据统计信息、管理所有用户信息、管理所有楼栋信息、管理所有套餐信息、管理所有入住信息、管理所有入住的日常记录信息、浏览所有入住的套餐选购信息、管理所有留言信息、管理所有公告信息、管理所有活动信息等等功能。

应用技术:SpringBoot + React + MySQL + MyBatis + Redis + Ant Design + Vite + TypeScript + Drools

运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node16.20.2(项目压缩包中自带)

三、运行截图

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

四、主要代码

1.入住合同文件上传

	@PostMapping(value="/upload")public ResponseDTO<String> uploadFile(MultipartFile file, HttpServletRequest request){if(file == null){return ResponseDTO.errorByMsg(CodeMsg.FILE_EMPTY);}//检查上传文件大小 不能超过50MBif(file.getSize() > 50*1024*1024) {return ResponseDTO.errorByMsg(CodeMsg.FILE_SURPASS_MAX_SIZE);}//获取文件后缀String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);String savePath = uploadFilePath + CommonUtil.getFormatterDate(new Date(), "yyyyMMdd") + "\\";File savePathFile = new File(savePath);if(!savePathFile.exists()){//若不存在改目录,则创建目录savePathFile.mkdirs();}String filename = new Date().getTime()+"."+suffix;logger.info("保存文件的路径:{}",savePath + filename);try {//将文件保存至指定目录file.transferTo(new File(savePath + filename));}catch (Exception e) {e.printStackTrace();return ResponseDTO.errorByMsg(CodeMsg.SAVE_FILE_EXCEPTION);}String filepath = CommonUtil.getFormatterDate(new Date(), "yyyyMMdd") + "/" + filename;return ResponseDTO.successByMsg(filepath, "文件上传成功!");}

2.添加和修改套餐的代码

    @Overridepublic ResponseDTO<Boolean> savePackage(PackageDTO packagesDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(packagesDTO);if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(validate);}Package packages = CopyUtil.copy(packagesDTO, Package.class);if(CommonUtil.isEmpty(packages.getId())) {// 添加操作// 判断套餐名称是否存在if(isNameExist(packages, "")){return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_NAME_EXIST);}packages.setId(UuidUtil.getShortUuid());if(packagesMapper.insertSelective(packages) == 0) {return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_ADD_ERROR);}} else {// 修改操作// 判断套餐名称是否存在if(isNameExist(packages, packages.getId())){return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_NAME_EXIST);}if(packagesMapper.updateByPrimaryKeySelective(packages) == 0) {return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_EDIT_ERROR);}}return ResponseDTO.success(true);}

3.查看入住记录代码

    @Overridepublic ResponseDTO<PageDTO<CheckDTO>> getCheckList(PageDTO<CheckDTO> pageDTO) {CheckExample checkExample = new CheckExample();// 不知道当前页多少,默认为第一页if(pageDTO.getPage() == null){pageDTO.setPage(1);}// 不知道每页多少条记录,默认为每页10条记录if(pageDTO.getSize() == null){pageDTO.setSize(10);}CheckExample.Criteria c1 = checkExample.createCriteria();if(pageDTO.getParam() != null) {CheckDTO checkDTO = pageDTO.getParam();if(!CommonUtil.isEmpty(checkDTO.getUsername())) {c1.andUsernameLike("%" + checkDTO.getUsername() + "%");}if(!CommonUtil.isEmpty(checkDTO.getPhone())) {c1.andPhoneLike("%" + checkDTO.getPhone() + "%");}if(!CommonUtil.isEmpty(checkDTO.getUserId())) {c1.andUserIdEqualTo(checkDTO.getUserId());}if(checkDTO.getState() != null && checkDTO.getState() != 0) {c1.andStateEqualTo(checkDTO.getState());}}checkExample.setOrderByClause("start_date desc, id desc");PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());// 分页查出入住数据List<Check> checkList = checkMapper.selectByExample(checkExample);PageInfo<Check> pageInfo = new PageInfo<>(checkList);// 获取数据的总数pageDTO.setTotal(pageInfo.getTotal());// 将domain类型数据  转成 DTO类型数据List<CheckDTO> checkDTOList = CopyUtil.copyList(checkList, CheckDTO.class);for(CheckDTO checkDTO : checkDTOList) {User user = userMapper.selectByPrimaryKey(checkDTO.getUserId());checkDTO.setUserDTO(CopyUtil.copy(Optional.ofNullable(user).orElse(new User()), UserDTO.class));PackageItemExample packageItemExample = new PackageItemExample();packageItemExample.createCriteria().andCheckIdEqualTo(checkDTO.getId());List<PackageItem> packageItemList = packageItemMapper.selectByExample(packageItemExample);checkDTO.setPackageItemDTOList(CopyUtil.copyList(packageItemList, PackageItemDTO.class));Building building = buildingMapper.selectByPrimaryKey(checkDTO.getBuildingId());checkDTO.setBuildingDTO(CopyUtil.copy(Optional.ofNullable(building).orElse(new Building()), BuildingDTO.class));// 更新入住数据的状态checkDTO.setState(updateCheckState(checkDTO));}pageDTO.setList(checkDTOList);return ResponseDTO.success(pageDTO);}
http://www.lryc.cn/news/488702.html

相关文章:

  • 使用element-plus el-table中使用el-image层级冲突table表格会覆盖预览的图片等问题
  • python读取Oracle库并生成API返回Json格式
  • 音视频入门基础:MPEG2-TS专题(5)——FFmpeg源码中,判断某文件是否为TS文件的实现
  • 每天10个vue面试题(九)
  • Jenkins的环境部署
  • 八、鸿蒙开发-网络请求、应用级状态管理
  • 经验笔记:Git 中的远程仓库链接及上下游关系管理
  • Paint 学习笔记
  • Jenkins修改LOGO
  • kafka是如何做到高效读写
  • Intern大模型训练营(九):XTuner 微调实践微调
  • 从一次java.io.StreamCorruptedException: invalid stream header: 48656C6C 错误中学到的调试思路
  • 树莓派的发展历史
  • K8S containerd拉取harbor镜像
  • Ubuntu 环境下通过 Apt-get 安装软件
  • vue使用List.forEach遍历集合元素
  • ROM修改进阶教程------安卓14去除修改系统应用后导致的卡logo验证步骤 适用安卓13 14 安卓15可借鉴参考
  • 苹果macbook,MacOS 11,12,13,14,15 跳过监管锁(配置锁)
  • 【YOLOv8】安卓端部署-2-项目实战
  • 第二十四章 Spring之源码阅读——AOP篇
  • Linux配置MySQL自动备份
  • qt 之 QDockWidget设置不可拖动
  • 【Java知识】Java性能测试工具JMeter
  • Git 安装
  • 【Python】FastAPI:Token认证
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —ArkUI
  • ubuntu没有了有线网络如何修复
  • 渗透学习之windows基础
  • 【Swift】运算符
  • minikube start --driver=docker 指定国内镜像