文章目录
- 一、项目演示
- 二、项目介绍
- 三、运行截图
- 四、主要代码
- 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);
}
//检查上传文件大小 不能超过50MB
if(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.添加和修改套餐的代码
@Override
public 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.查看入住记录代码
@Override
public 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);
}