基于javaweb+mysql的springboot医院预约挂号系统(java+springboot+maven+vue+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot医院预约挂号系统(java+springboot+maven+vue+mysql)
一、项目运行 环境配置:
Jdk1.8 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。
*
* @return
*/
@PutMapping
public ResultVo edit(@RequestBody User user) {
user.setModifyTime(new Date());
userService.updateById(user);
return ResultVo.oK();
}
/**
* 重置密码
*/
@PutMapping("/resetPwd")
public ResultVo reSetPwd(@RequestBody User user) {
user.setPassword(MD5Util.md5(user.getPassword()));
userService.updateById(user);
return ResultVo.oK();
}
}
/**
* 项目名:penint
*
*/
@RestController
@RequestMapping("/adminApi/doctor")
public class DoctorController {
@Autowired
private IUserService userService;
@GetMapping("/list")
public ResultVo list(QueryRequest queryRequest, User user) {
return ResultVo.oK(userService.queryDoctorFuzz(queryRequest, user));
}
@GetMapping("/list")
public ResultVo list(QueryRequest queryRequest, User user) {
return ResultVo.oK(userService.queryDoctorFuzz(queryRequest, user));
}
/**
* 修改账户状态,禁用或者取消
*
* @param user
* @param request
* @return
*/
@PutMapping("/changeStatus")
public ResultVo changeStatus(@RequestBody User user, HttpServletRequest request) {
userService.updateById(user);
return ResultVo.oK();
}
/**
* 根据ID查询用户详情
*
* @param userId
* @return
*/
@GetMapping("/{userId}")
public ResultVo getUserInfo(@PathVariable Integer userId) {
User info = userService.getById(userId);
return ResultVo.oK(info);
}
/**
* 新增用户
*/
@PostMapping
public ResultVo add(@RequestBody User user) {
// 查询用户名是否存在数据库中
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getUsername, user.getUsername());
User entity = userService.getOne(lambdaQueryWrapper);
if (entity == null) {
user.setCreateTime(new Date());
// 设置默认密码1234qwer
user.setPassword(MD5Util.md5("1234qwer"));
user.setRoleId(1);
userService.save(user);
return ResultVo.oK("用户:" + user.getUsername() + "新增成功,默认密码为:" + "1234qwer");
} else {
@Autowired
private UserManager userManager;
@GetMapping("/list")
public ResultVo list(Registration entity, QueryRequest queryRequest, HttpServletRequest request) {
Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
if (userManager.isAdminRole(userId)) {
return ResultVo.oK(registrationService.queryList(entity, queryRequest));
} else if (userManager.isDoctorRole(userId)) {
return ResultVo.oK(registrationService.queryListByDoctor(entity, queryRequest, userId));
} else if (userManager.isPatientsRole(userId)) {
return ResultVo.oK(registrationService.queryListByPatient(entity, queryRequest, userId));
}
return null;
}
/**
* 挂号接口
*/
@PostMapping
public ResultVo registration(@RequestBody Registration registration, HttpServletRequest request) {
String s = DateUtil.parseTimeFormattoDayDate(new Date());
s = s.replace("-", "");
s = s + departmentService.getById(registration.getDepId()).getLetter();
Integer count = registrationService.selectByNow(registration.getDepId());
int num = count + 1;
s = s + num;
registration.setNumber(s);
// 随机金额
int min = 30, max = 100;
BigDecimal v = BigDecimal.valueOf((Math.random() * (max - min)) + min);
registration.setAmountPayable(v.setScale(2, BigDecimal.ROUND_HALF_UP));
*/
@PutMapping("/changeStatus")
public ResultVo changeStatus(@RequestBody User user, HttpServletRequest request) {
userService.updateById(user);
return ResultVo.oK();
}
/**
* 根据ID查询用户详情
*
* @param userId
* @return
*/
@GetMapping("/{userId}")
public ResultVo getUserInfo(@PathVariable Integer userId) {
User info = userService.getById(userId);
return ResultVo.oK(info);
}
/**
* 新增用户
*/
@PostMapping
public ResultVo add(@RequestBody User user) {
// 查询用户名是否存在数据库中
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getUsername, user.getUsername());
User entity = userService.getOne(lambdaQueryWrapper);
if (entity == null) {
user.setCreateTime(new Date());
// 设置默认密码1234qwer
user.setPassword(MD5Util.md5("1234qwer"));
user.setRoleId(1);
userService.save(user);
return ResultVo.oK("用户:" + user.getUsername() + "新增成功,默认密码为:" + "1234qwer");
} else {
return ResultVo.failed(201, "用户新增失败,用户名:" + user.getUsername() + "已存在");
}
}
* 修改账户状态,禁用或者取消
*
* @param user
* @param request
* @return
*/
@PutMapping("/changeStatus")
public ResultVo changeStatus(@RequestBody User user, HttpServletRequest request) {
userService.updateById(user);
return ResultVo.oK();
}
/**
* 根据ID查询用户详情
*
* @param userId
* @return
*/
@GetMapping("/{userId}")
public ResultVo getUserInfo(@PathVariable Integer userId) {
User info = userService.getById(userId);
return ResultVo.oK(info);
}
/**
* 新增用户
*/
@PostMapping
public ResultVo add(@RequestBody User user) {
// 查询用户名是否存在数据库中
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getUsername, user.getUsername());
User entity = userService.getOne(lambdaQueryWrapper);
if (entity == null) {
user.setCreateTime(new Date());
// 设置默认密码1234qwer
user.setPassword(MD5Util.md5("1234qwer"));
user.setRoleId(2);
userService.save(user);
return ResultVo.oK("用户:" + user.getUsername() + "新增成功,默认密码为:" + "1234qwer");
} else {
return ResultVo.failed(201, "用户新增失败,用户名:" + user.getUsername() + "已存在");
}
}
if (!MD5Util.md5(password).equals(user.getPassword())) {
return ResultVo.failed(201, "密码错误");
} else {
JSONObject obj = new JSONObject();
obj.put("userInfo", user);
obj.put("token", TokenUtil.getAdminToken(user));
return ResultVo.oK(obj);
}
}
}
@ApiOperation("根据Token获取用户信息")
@GetMapping("/getUserInfo")
@AdminLoginToken
public Object getUserInfo(HttpServletRequest request) {
User user = userService.getById(TokenUtil.getAdminUserId(request.getHeader("Authorization")));
if (user == null) {
return ResultVo.failed(201, "账号不存在,请检查账号是否正确或联系管理员");
} else {
JSONObject obj = new JSONObject();
obj.put("userInfo", user);
obj.put("token", TokenUtil.getAdminToken(user));
return ResultVo.oK(obj);
}
}
@ApiOperation("退出登录")
@GetMapping("/outLogin")
public Object outLogin() {
return ResultVo.oK();
}
@ApiOperation("文件上传")
@PostMapping("/file")
public ResultVo uploadFile(@RequestParam("file") MultipartFile file) {
String uploadUrl = FileUpload.uploadAccessory(file);
if (uploadUrl != null && uploadUrl != "") {
return ResultVo.oK(uploadUrl);
}
JSONObject result = UploadFileUtils.upload(file);
if (result.getInteger("status") == 200) {
if (result.getBoolean("isImage")) {
User user = new User();
user.setAvatar(result.getString("requestUrl"));
user.setUserId(userId);
userService.updateById(user);
// 缓存
return ResultVo.oK(result.getString("requestUrl"));
} else {
return ResultVo.failed(201, "不是图片文件");
}
} else {
return ResultVo.failed(201, "文件上传失败,请联系管理员");
}
}
}
/**
* <p>
* 挂号表 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/adminApi/registration")
public class RegistrationController {
@Autowired
private IRegistrationService registrationService;
@Autowired
private IDepartmentService departmentService;
@Autowired
return ResultVo.oK();
}
/**
* 根据ID查询用户详情
*
* @param userId
* @return
*/
@GetMapping("/{userId}")
public ResultVo getUserInfo(@PathVariable Integer userId) {
User info = userService.getById(userId);
return ResultVo.oK(info);
}
/**
* 新增用户
*/
@PostMapping
public ResultVo add(@RequestBody User entity) {
// 查询用户名是否存在数据库中
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getUsername, entity.getUsername());
User user = userService.getOne(lambdaQueryWrapper);
if (user == null) {
entity.setCreateTime(new Date());
// 设置默认密码1234qwer
entity.setPassword(MD5Util.md5("1234qwer"));
entity.setRoleId(0);
userService.save(entity);
// 插入返回ID
return ResultVo.oK("用户:" + entity.getUsername() + "新增成功,默认密码为:1234qwer");
} else {
return ResultVo.failed(201, "用户新增失败,用户名:" + entity.getUsername() + "已存在");
}
}
/**
* 删除用户
*/
@DeleteMapping("/{userIds}")
public ResultVo remove(@PathVariable Integer[] userIds) {
boolean flag = false;
for (Integer userId : userIds) {
User entity = userService.getById(userId);
if (!entity.getUsername().equals("admin")) {
userService.removeById(userId);
} else {
flag = true;
}
}
}
public class AuthenticationInterceptor implements HandlerInterceptor {
@Autowired
private IUserService usersService;
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) {
String token = httpServletRequest.getHeader("Authorization");// 从 http 请求头中取出 token
// 如果不是映射到方法直接通过
if (!(object instanceof HandlerMethod)) {
return true;
}
HandlerMethod handlerMethod = (HandlerMethod) object;
Method method = handlerMethod.getMethod();
//检查是否有passtoken注释,有则跳过认证
if (method.isAnnotationPresent(PassToken.class)) {
PassToken passToken = method.getAnnotation(PassToken.class);
if (passToken.required()) {
return true;
}
}
//检查有没有需要用户权限的注解
if (method.isAnnotationPresent(AdminLoginToken.class)) {
*/
@GetMapping("/{userId}")
public ResultVo getUserInfo(@PathVariable Integer userId) {
User info = userService.getById(userId);
return ResultVo.oK(info);
}
/**
* 新增用户
*/
@PostMapping
public ResultVo add(@RequestBody User user) {
// 查询用户名是否存在数据库中
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getUsername, user.getUsername());
User entity = userService.getOne(lambdaQueryWrapper);
if (entity == null) {
user.setCreateTime(new Date());
// 设置默认密码1234qwer
user.setPassword(MD5Util.md5("1234qwer"));
user.setRoleId(2);
userService.save(user);
return ResultVo.oK("用户:" + user.getUsername() + "新增成功,默认密码为:" + "1234qwer");
} else {
return ResultVo.failed(201, "用户新增失败,用户名:" + user.getUsername() + "已存在");
}
}
/**
* 删除用户
*/
@DeleteMapping("/{userIds}")
public ResultVo remove(@PathVariable Integer[] userIds) {
for (Integer userId : userIds) {
userService.removeById(userId);
return ResultVo.oK();
}
return null;
}
/**
* 修改用户
*
user.setUserId(userId);
userService.updateById(user);
// 缓存
return ResultVo.oK(result.getString("requestUrl"));
} else {
return ResultVo.failed(201, "不是图片文件");
}
} else {
return ResultVo.failed(201, "文件上传失败,请联系管理员");
}
}
}
/**
* <p>
* 挂号表 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/adminApi/registration")
public class RegistrationController {
@Autowired
private IRegistrationService registrationService;
@Autowired
private IDepartmentService departmentService;
@Autowired
private UserManager userManager;
@GetMapping("/list")
public ResultVo list(Registration entity, QueryRequest queryRequest, HttpServletRequest request) {
*/
@GetMapping("/getDoctor/{id}")
public ResultVo getDoctor(@PathVariable Integer id) {
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(User::getNickName, User::getUserId);
lambdaQueryWrapper.eq(User::getDepId, id);
return ResultVo.oK(userService.list(lambdaQueryWrapper));
}
@PostMapping("/registerDoctor")
public ResultVo registerStudent(User user) {
user.setPassword(MD5Util.md5(user.getPassword()));
user.setCreateTime(new Date());
user.setRoleId(1);
userService.save(user);
return ResultVo.oK();
}
@PostMapping("/registerPatients")
public ResultVo registerTeacher(User user) {
user.setPassword(MD5Util.md5(user.getPassword()));
user.setCreateTime(new Date());
user.setRoleId(2);
userService.save(user);
return ResultVo.oK();
}
/**
* 忘记密码
*/
@PutMapping("/forgotPassword")
public ResultVo forgotPassword(User sysUser) {
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(!StringUtils.isEmpty(sysUser.getUsername()), User::getUsername, sysUser.getUsername());
// 先判断用户名在不在库中
User user = userService.getOne(lambdaQueryWrapper);
if (user != null) {
sysUser.setPassword(MD5Util.md5(sysUser.getPassword()));
sysUser.setUserId(user.getUserId());
* 不采纳
*/
@GetMapping("/notAccept/{id}")
public ResultVo notAccept(@PathVariable Integer id) {
Registration registration = new Registration();
registration.setId(id);
registration.setAccept(2);
registration.setStatus(0);
registrationService.updateById(registration);
return ResultVo.oK();
}
/**
* 评价
*/
@PutMapping("/evaluate")
public ResultVo evaluate(@RequestBody Registration registration) {
registrationService.updateById(registration);
return ResultVo.oK();
}
/**
* 开发票
*/
@PutMapping("/{id}")
public ResultVo openInvoice(@PathVariable Integer id) {
Registration registration = new Registration();
// 生成发票代码,12位数,随即生成
registration.setInvoiceCode(String.valueOf(OrderSnUtil.getRandom(12)));
// 生成发票号,9位数,随机生成
registration.setInvoiceNumber(String.valueOf(OrderSnUtil.getRandom(9)));
// 生成发票日期
registration.setInvoiceDate(LocalDate.now());
// 改变状态
registration.setIsInvoice(true);
registration.setId(id);
registrationService.updateById(registration);
}
/**
* <p>
* 系统用户 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/adminApi/user")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping("/list")
public ResultVo list(QueryRequest queryRequest, User user) {
return ResultVo.oK(userService.queryFuzz(queryRequest, user));
}
/**
* 修改账户状态,禁用或者取消
*
* @param user
* @return
*/
@PutMapping("/changeStatus")
return ResultVo.failed(201, "用户新增失败,用户名:" + entity.getUsername() + "已存在");
}
}
/**
* 删除用户
*/
@DeleteMapping("/{userIds}")
public ResultVo remove(@PathVariable Integer[] userIds) {
boolean flag = false;
for (Integer userId : userIds) {
User entity = userService.getById(userId);
if (!entity.getUsername().equals("admin")) {
userService.removeById(userId);
} else {
flag = true;
}
}
if (flag) {
return ResultVo.failed(201, "admin用户不能删除");
} else {
return ResultVo.oK();
}
}
/**
* 修改用户
*/
@PutMapping
public ResultVo edit(@RequestBody User user) {
userService.updateById(user);
return ResultVo.oK();
}
/**
* 重置密码
*/
@PutMapping("/resetPwd")
public ResultVo reSetPwd(@RequestBody User user) {
user.setPassword(MD5Util.md5(user.getPassword()));
userService.updateById(user);
return ResultVo.oK();
}
/**
* 个人中心配置
*/
@GetMapping("/profile")
public ResultVo profile(HttpServletRequest request) {
Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
return ResultVo.oK(userService.getById(userId));
}
int adminUserId = TokenUtil.getAdminUserId(token);
User adminUser = usersService.getById(adminUserId);
if (adminUser == null) {
throw new TokenException(403, "用户不存在,请重新登录");
}
// 验证 token
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(TokenUtil.SECRET)).build();
try {
jwtVerifier.verify(token);
} catch (JWTVerificationException e) {
throw new TokenException(403, "token不合法");
}
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
/**
* 项目名:penint
*
*/
@RestController
@RequestMapping("/adminApi/common")
public class CommonController {
@Autowired
private IUserService userService;
@Autowired
private IDepartmentService departmentService;
@PostMapping("/login")
public Object adminLogin(String username, String password) {
User user = userService.selectByUsername(username);
if (user == null) {
return ResultVo.failed(201, "账号不存在,请检查账号是否正确或联系管理员");
} else {
if (!MD5Util.md5(password).equals(user.getPassword())) {
return ResultVo.failed(201, "密码错误");
} else {
JSONObject obj = new JSONObject();
obj.put("userInfo", user);
obj.put("token", TokenUtil.getAdminToken(user));
return ResultVo.oK(obj);
}
}
}
@ApiOperation("根据Token获取用户信息")
@GetMapping("/getUserInfo")
@AdminLoginToken
public Object getUserInfo(HttpServletRequest request) {
return ResultVo.oK(registrationService.queryListByDoctor(entity, queryRequest, userId));
} else if (userManager.isPatientsRole(userId)) {
return ResultVo.oK(registrationService.queryListByPatient(entity, queryRequest, userId));
}
return null;
}
/**
* 挂号接口
*/
@PostMapping
public ResultVo registration(@RequestBody Registration registration, HttpServletRequest request) {
String s = DateUtil.parseTimeFormattoDayDate(new Date());
s = s.replace("-", "");
s = s + departmentService.getById(registration.getDepId()).getLetter();
Integer count = registrationService.selectByNow(registration.getDepId());
int num = count + 1;
s = s + num;
registration.setNumber(s);
// 随机金额
int min = 30, max = 100;
BigDecimal v = BigDecimal.valueOf((Math.random() * (max - min)) + min);
registration.setAmountPayable(v.setScale(2, BigDecimal.ROUND_HALF_UP));
Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
registration.setPatientsId(userId);
registrationService.save(registration);
return ResultVo.oK("已支付" + v.setScale(2, BigDecimal.ROUND_HALF_UP) + "元");
}
/**
* 采纳
*/
@GetMapping("/accept/{id}")
public ResultVo accept(@PathVariable Integer id) {
Registration registration = new Registration();
registration.setId(id);