1、背景
java在线医院管理系统
2、技术栈
本系统基于SpringBoot的在线医院管理系统,使用的技术如下:
(1)项目整体采用SpringBoot+MyBatis整合框架。
(2)前端页面采用html页面技术,配合themealf完成页面的处理显示。
(3)前后端的交互采用Ajax技术。
(4)数据库采用MySQL数据库。
3、功能概述
有挂号收费、门诊管理、药房管理、收费管理、体检管理、个人中心等。
就诊卡提供了手动和读卡两种方式录入,其中IC读卡器使用的是"德卡D3",SDK使用的是德卡官网提供的
用户注册,验证邮件的邮箱考虑到安全问题,暂不提供授权码,如有需求可使用自己邮箱,开启POP3/SMTP服务后,配置到项目里。
4、功能效果截图
4.1首页管理
4.2 挂号收费
4.2 门诊管理
4.3 药房管理
4.3体检管理
4.4用户中心
5、视频效果演示
具体演示视频可以参考:
6、相关代码设计实现
6.1 登录相关代码
/**
* 登录验证
*
* @param reqVO
* @return
*/
@Override
public BaseResponse<String> doLogin(UserLoginReqVO reqVO) {
String email = reqVO.getEmail();
String password = reqVO.getPassword();
UserEntity user = iUserRepository.findByEmail(email);
if (StringUtils.isEmpty(user)) {
return BaseResponse.error(HisConstants.USER.USER_NOT_EXIST);
}
//登录验证
UsernamePasswordToken token = new UsernamePasswordToken(email, password);
Subject subject = SecurityUtils.getSubject();
try {
subject.login(token);
} catch (AuthenticationException e) {
return BaseResponse.error(HisConstants.USER.PASSWORD_ERROR);
}
//验证邮箱激活状态
if (user.getEmailStatus().equals(0)) {
return BaseResponse.error(HisConstants.USER.EMAIL_STATUS_INACTIVE);
}
//验证角色审核状态
List<UserRoleEntity> userRoleList = iUserRoleRepository.findByUId(user.getId());
//审核通过角色个数
long passStatusCount = userRoleList.stream()
.filter(userRole -> userRole.getRoleStatus().equals(1)).count();
if (passStatusCount == 0) {
//未审核角色个数
long unAuditStatusCount = userRoleList.stream()
.filter(userRole -> userRole.getRoleStatus().equals(0)).count();
if (unAuditStatusCount >= 1) {
return BaseResponse.error(HisConstants.USER.ROLE_STATUS_NOTAUDIT);
}
//审核未通过
else {
return BaseResponse.error(HisConstants.USER.ROLE_STATUS_NOTPASS);
}
}
//保存用户登录信息
asyncTask.saveLoginInfor(reqVO.getIp(), reqVO.getBroswer(), email);
return BaseResponse.success(HisConstants.USER.SUCCESS);
}
6.2 后台添加账户
/**
* 后台添加账户
*
* @param reqVO
* @return
*/
@Override
public BaseResponse<String> saveUserAndSendEmailTemp(UserRegisterReqVO reqVO) {
String email = reqVO.getEmail();
String roleName = reqVO.getRoleName();
//验证角色
RoleEntity role = iRoleRespository.findByDescription(roleName);
if (role == null) {
return BaseResponse.error("您选择的角色不存在,请重试!");
}
UserEntity checkUser = iUserRepository.findByEmail(email);
if (checkUser != null) {
return BaseResponse.error(HisConstants.USER.ACCOUNT_EXIST);
}
UserEntity userEntity = new UserEntity();
userEntity.setEmail(email);
userEntity.setUsername(reqVO.getUsername());
userEntity.setPlainPassword(reqVO.getPassword());
//生成盐和加盐密码
String salt = MD5Util.md5Encrypt32Lower(reqVO.getEmail());
String password = new SimpleHash("MD5", reqVO.getPassword(), salt, 1024).toHex(); // 使用SimpleHash类对原始密码进行加密
userEntity.setPassword(password);
userEntity.setSalt(salt);
//生成激活码
String validateCode = MD5Util.md5Encrypt32Upper(reqVO.getEmail());
userEntity.setValidateCode(validateCode);
userEntity.setEmailStatus(0);
try {
iUserRepository.saveAndFlush(userEntity);
//保存角色
UserEntity user = iUserRepository.findByEmail(email);
String uId = user.getId();
UserRoleEntity userRole = new UserRoleEntity();
userRole.setuId(uId);
userRole.setRoleId(role.getId());
String desciption = user.getEmail() + "#" + role.getRole();
userRole.setDescription(desciption);
userRole.setRoleStatus(0);
iUserRoleRepository.saveAndFlush(userRole);
return BaseResponse.success(HisConstants.USER.SUCCESS);
} catch (Exception e) {
e.printStackTrace();
return BaseResponse.error("保存用户信息发送异常!");
}
}