✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
文末获取项目下载方式
一、项目背景介绍:
孟德斯鸠曾经说:“能将自己的生命寄托在他人的记忆中,生命仿佛就加长了一些;生命仿佛就加长了一些;其可珍可贵,实不下于天赋的生命。”生命,因短暂和仅有一次而显得宝贵。器官捐献者却战胜了短暂,器官捐献者却战胜了短暂,也让他人获得新生和光明的愿望成为可能。也让他人获得新生和光明的愿望成为可能。也让他人获得新生和光明的愿望成为可能。做一次庄严的选择吧!
改革开放以来,我国工业化道路取得巨大成就,建成了全球最为完整的工业体系,成为世界第一大工业国。但是伴随着工业发展的弊端也慢慢的显露。工业发展对环境带来的污染不仅对于大自然来说是不可逆的,而且对于人们的身体造成了不可逆的伤害。往往许多的疾病最后都无法通过药物来进行治疗,最后也就只有器官移植才能挽救人们的生命。
在该系统的帮助下,可以发现更多的潜在捐献者,更好的帮助那些每日因器官基本饱受折磨的患者。
二、项目技术简介:
三、系统功能模块介绍:
四、数据库设计:
1:‘管理员表’(admin)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | id |
user_name | varchar | NULL | 用户名 |
pass_word | varchar | NULL | 密码 |
nick_name | varchar | NULL | 昵称 |
head_img | varchar | NULL | 头像 |
2:‘审核表’(audit)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | id |
user_id | bigint | NULL | 用户ID |
organ_id | bigint | NULL | 器官ID |
remark | varchar | NULL | 备注 |
status | int | NULL | 申请状态[0:审核中,1:审核通过,2审核不通过,3:撤销申请] |
create_time | datetime | NULL | 创建时间 |
3:‘逝者信息表’(dead_info)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | id |
user_id | bigint | NULL | 用户ID |
create_time | datetime | NULL | 创建时间 |
end_age | int | NULL | 享年岁数 |
info | varchar | NULL | 逝世原因 |
address | varchar | NULL | 家庭住址 |
home_name | varchar | NULL | 家庭联系人 |
home_tel | varchar | NULL | 家庭电话 |
4:‘器官类型表’(organ)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | id |
organ_name | varchar | NULL | 器官名称 |
attention | text | NULL | 捐赠注意事项 |
5:‘用户表’(users)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | id |
user_name | varchar | NULL | 用户名 |
pass_word | varchar | NULL | 密码 |
tel | varchar | NULL | 联系方式 |
header_img | varchar | NULL | 基本照片 |
name | varchar | NULL | 真实姓名 |
sex | int | NULL | 性别[0:未知,1:男,2:女] |
age | int | NULL | 年龄 |
create_time | datetime | NULL | 创建时间 |
五、功能模块:
系统登录模块:已有账户的用户可以直接选择登录该系统,没有该系统账户的用户可以注册新的账户来登录该系统。
志愿者个人信息管理:用户在进入系统后可以添加管理自己的个人信息。
捐献信息管理:用户可以在该模块提出自己的捐献申请,并且可以查看自己的申请进度,以及队友的撤销与修改申请。
捐献器官类型管理:管理人员可以增加、删除、查询、修改志愿者可以捐献的器官。
逝者信息管理:管理人员可以增加、删除、查询、修改志愿者的逝去信息。
管理员信息管理:7.管理人员可以增加、删除、查询、修改管理者的信息。
用户信息管理:管理人员可以增加、删除、查询、修改用户的基本信息。
六、代码示例:
@RequestMapping("/client/login")
public class ClientLoginController {
@Autowired
private UsersService usersService;
@PostMapping("/do")
public ReturnMsg login(@RequestBody UsersDTO usersDTO) {
Assert.isTrue(StrUtil.isNotEmpty(usersDTO.getUserName()) && StrUtil.isNotEmpty(usersDTO.getPassWord()), "账号或密码不能为空!");
LambdaQueryWrapper<UsersDTO> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(UsersDTO::getUserName, usersDTO.getUserName()).
eq(UsersDTO::getPassWord, usersDTO.getPassWord()).last(BaseConstant.LIMIT_ONE);
UsersDTO loginUser = usersService.getOne(queryWrapper);
Assert.notNull(loginUser, "账号或密码错误!");
return ReturnMsg.ok(loginUser);
}
@PostMapping("/register")
public ReturnMsg register(@RequestBody UsersDTO usersDTO) throws Exception {
Assert.isTrue(StrUtil.isNotEmpty(usersDTO.getUserName()) && StrUtil.isNotEmpty(usersDTO.getPassWord()), "账号或密码不能为空!");
LambdaQueryWrapper<UsersDTO> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(UsersDTO::getUserName, usersDTO.getUserName());
List<UsersDTO> list = usersService.list(queryWrapper);
if (CollectionUtil.isNotEmpty(list)) {
throw new Exception("该用户名已经存在!");
}
usersService.save(usersDTO);
return ReturnMsg.ok();
}
}
}
@Service("usersService")
public class UsersServiceImpl extends ServiceImpl<UsersDao, UsersDTO> implements UsersService {
@Override
public Page<UsersDTO> basePage(UsersDTO usersDTO) {
if (null != usersDTO.getCurrent() && null != usersDTO.getPageSize())
usersDTO.setCurrent((usersDTO.getCurrent() - 1) * usersDTO.getPageSize());
List<UsersDTO> list = this.baseMapper.findList(usersDTO);
int count = this.baseMapper.findPageCount(usersDTO);
Page<UsersDTO> page = new Page<>();
page.setTotal(count);
page.setRecords(list);
return page;
}
@Override
public UsersDTO find(UsersDTO usersDTO) { return this.baseMapper.find(usersDTO); }
}
@RestController
@RequestMapping("/audit")
public class AuditController extends BaseController<AuditService, AuditDTO> {
@Override
@Resource(name = "auditService")
protected void setBaseService(AuditService auditService) {
this.baseService = auditService;
}
@Autowired
private OrganService organService;
@Autowired
private UsersService usersService;
/**
* 默认分页查询
* @param auditDTO
* @return
* @throws IOException
*/
@PostMapping("/page")
public ReturnMsg page(@RequestBody AuditDTO auditDTO) {
return ReturnMsg.ok(baseService.basePage(auditDTO));
}
@Override
protected void beforeSaveOrUpdate(AuditDTO entity) throws Exception {
entity.setCreateTime(new Date());
super.beforeSaveOrUpdate(entity);
}
@GetMapping("/getOrganData")
public ReturnMsg getOrganData(){
List<OrganDTO> dataList = organService.list();
List<BaseSelectEntity> selectEntities = new ArrayList<>();
if(CollectionUtil.isNotEmpty(dataList)){
dataList.forEach(item -> {
BaseSelectEntity baseSelectEntity = new BaseSelectEntity();
baseSelectEntity.setKey(item.getId());
baseSelectEntity.setValue(item.getOrganName());
selectEntities.add(baseSelectEntity);
});
}
return ReturnMsg.ok(selectEntities);
}
@GetMapping("/getUsersData")
public ReturnMsg getUsersData(){
List<UsersDTO> dataList = usersService.list();
List<BaseSelectEntity> selectEntities = new ArrayList<>();
if(CollectionUtil.isNotEmpty(dataList)){
dataList.forEach(item -> {
BaseSelectEntity baseSelectEntity = new BaseSelectEntity();
baseSelectEntity.setKey(item.getId());
baseSelectEntity.setValue(item.getName());
selectEntities.add(baseSelectEntity);
});
}
return ReturnMsg.ok(selectEntities);
}
}
@Service("organService")
public class OrganServiceImpl extends ServiceImpl<OrganDao, OrganDTO> implements OrganService {
@Override
public Page<OrganDTO> basePage(OrganDTO organDTO) {
if (null != organDTO.getCurrent() && null != organDTO.getPageSize())
organDTO.setCurrent((organDTO.getCurrent() - 1) * organDTO.getPageSize());
List<OrganDTO> list = this.baseMapper.findList(organDTO);
int count = this.baseMapper.findPageCount(organDTO);
Page<OrganDTO> page = new Page<>();
page.setTotal(count);
page.setRecords(list);
return page;
}
@Override
public OrganDTO find(OrganDTO organDTO) { return this.baseMapper.find(organDTO); }
}
@RestController
@RequestMapping("/deadInfo")
public class DeadInfoController extends BaseController<DeadInfoService, DeadInfoDTO> {
@Override
@Resource(name = "deadInfoService")
protected void setBaseService(DeadInfoService deadInfoService) {
this.baseService = deadInfoService;
}
@Autowired
private UsersService usersService;
/**
* 默认分页查询
* @param deadInfoDTO
* @return
* @throws IOException
*/
@PostMapping("/page")
public ReturnMsg page(@RequestBody DeadInfoDTO deadInfoDTO) {
return ReturnMsg.ok(baseService.basePage(deadInfoDTO));
}
@GetMapping("/getUsersData")
public ReturnMsg getUsersData(){
List<UsersDTO> dataList = usersService.list();
List<BaseSelectEntity> selectEntities = new ArrayList<>();
if(CollectionUtil.isNotEmpty(dataList)){
dataList.forEach(item -> {
BaseSelectEntity baseSelectEntity = new BaseSelectEntity();
baseSelectEntity.setKey(item.getId());
baseSelectEntity.setValue(item.getName());
selectEntities.add(baseSelectEntity);
});
}
return ReturnMsg.ok(selectEntities);
}
@Override
protected void beforeSaveOrUpdate(DeadInfoDTO entity) throws Exception {
if(entity.getId() == null) {
Long userId = entity.getUserId();
LambdaQueryWrapper<DeadInfoDTO> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(DeadInfoDTO::getUserId,userId);
List<DeadInfoDTO> list = baseService.list(queryWrapper);
if(CollectionUtil.isNotEmpty(list)) {
throw new Exception("该逝者已经添加,不能重复添加!");
}
}
super.beforeSaveOrUpdate(entity);
}
}
@RestController
@RequestMapping("/admin")
public class AdminController extends BaseController<AdminService, AdminDTO> {
@Override
@Resource(name = "adminService")
protected void setBaseService(AdminService adminService) {
this.baseService = adminService;
}
/**
* 图片上传文件夹名称
*/
private final String realPath = "/admin";
/**
* 图片上传
*
* @param filename
* @param id 需要修改的数据主键id
* @return
* @throws IOException
*/
@PostMapping("/upload/{id}")
public ReturnMsg upload(@RequestParam("file") MultipartFile filename, @PathVariable("id") Long id) throws IOException {
return this.baseUpLoad(filename, id, realPath, AdminDTO.class) ? ReturnMsg.ok() : ReturnMsg.error();
}
/**
* 默认分页查询
* @param adminDTO
* @return
* @throws IOException
*/
@PostMapping("/page")
public ReturnMsg page(@RequestBody AdminDTO adminDTO) {
return ReturnMsg.ok(baseService.basePage(adminDTO));
}
}
@Service("usersService")
public class UsersServiceImpl extends ServiceImpl<UsersDao, UsersDTO> implements UsersService {
public Page<UsersDTO> basePage(UsersDTO usersDTO) {
if (null != usersDTO.getCurrent() && null != usersDTO.getPageSize())
usersDTO.setCurrent((usersDTO.getCurrent() - 1) * usersDTO.getPageSize());
List<UsersDTO> list = this.baseMapper.findList(usersDTO);
int count = this.baseMapper.findPageCount(usersDTO);
Page<UsersDTO> page = new Page<>();
page.setTotal(count);
page.setRecords(list);
return page;
}
public UsersDTO find(UsersDTO usersDTO) { return this.baseMapper.find(usersDTO); }
}
七、项目总结:
人体器官移植是20世纪医学进步的最主要的成果之一,对于终末期器官功能衰竭来说,人体器官的移植是拯救生命提高生活质量的最有效手段之一。遗憾的是全球普遍存在待移植器官来源短缺,自愿捐献器官者少之又少, 明显制约了器官移植事业的发展。
为了帮助那些患有器官衰竭、尿毒症等疾病的患者,可以在有限的时间内获取到那些伟大的器官捐献者的帮助。本系统利用计算机和网络信息化建设,采用当今十分火热的Java语言作为开发语言,使用MVC三层架构进行后端的开发与架构,使用当今最主流的SpringBoot框架来快速开发简化开发周期与成本。数据系统方面使用Mysql数据库来存储数据,使数据更加持久也更加方便管理人员进行管理。本系统在前后端交互上使用的是与SpringBoot的好兄弟Vue.js,一个响应式的js框架,使用MVVM模型来完成页面之间的交互,使得工程师们不需要太过关注原生DOM的操作,从而使得页面的响应速度加快。在UI层使用element-ui来作为展示,此技术是阿里为广大前端工程师们开源的,在美观度和多样性方面非常强大,非常适合快速开发,而且对用户体验度也非常的友好。
系统在使用者角度可分为前台后台俩个模块。但是在具体的功能上面又可以再细分为8个模块,这8个模块分别是登录注册、个人信息管理、捐献管理、捐献申请审核、捐献器官类型管理、逝者信息管理、管理员管理、用户管理在各个模块的相互促进下得以构建出该器官捐献系统。最后对系统进行一个整体性的测试,解决系统中存在的问题,从而提高系统的稳定性,使系统变得更加稳定,来保证用户的正常使用。
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看获取联系方式
得工程师们不需要太过关注原生DOM的操作,从而使得页面的响应速度加快。在UI层使用element-ui来作为展示,此技术是阿里为广大前端工程师们开源的,在美观度和多样性方面非常强大,非常适合快速开发,而且对用户体验度也非常的友好。
系统在使用者角度可分为前台后台俩个模块。但是在具体的功能上面又可以再细分为8个模块,这8个模块分别是登录注册、个人信息管理、捐献管理、捐献申请审核、捐献器官类型管理、逝者信息管理、管理员管理、用户管理在各个模块的相互促进下得以构建出该器官捐献系统。最后对系统进行一个整体性的测试,解决系统中存在的问题,从而提高系统的稳定性,使系统变得更加稳定,来保证用户的正常使用。
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看获取联系方式
链接点击直达:下载链接