基于javaweb和mysql的springboot医院预约挂号系统(java+springboot+maven+vue+mysql)

私信源码获取及调试交流

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行

前端:WebStorm/VSCode/HBuilderX等均可

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SpringBoot医院预约挂号系统(java+springboot+maven+vue+mysql)


admin	123456——管理员

doctor1	123456——医生1

doctor2	123456——医生2

user1	123456—病人1

一、项目运行 环境配置:

Jdk1.8 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。

项目技术:

Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。

     */
    @ResponseBody
    @ExceptionHandler(RuntimeException.class)
    public Object handleRuntimeException(RuntimeException e) {
        String msg = e.getMessage();
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", 401);
        jsonObject.put("msg", msg);
        return jsonObject;
    }

    /**
     * token 不合法异常,返回403
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(TokenException.class)
    public Object handleTokenException(TokenException e) {
        String msg = e.getMessage();
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", 403);
        jsonObject.put("msg", msg);
        return jsonObject;
    }
}

     */
    @GetMapping("/checkUsername/{username}")
    public ResultVo checkUsername(@PathVariable String username) {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getUsername, username);
        if (userService.getOne(lambdaQueryWrapper) != null) {
            return ResultVo.oK(true);
        } else {
            return ResultVo.oK(false);
        }
    }

    /**
     * 判断请求方法的该用户原密码是否正确
     *
     * @param password
     * @return
     */
    @GetMapping("/checkPassword/{password}")
    public ResultVo checkPassword(@PathVariable String password, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        String encrypt = MD5Util.md5(password);// 用户输入的密码加密字符串

        if (userService.getById(userId).getPassword().equalsIgnoreCase(encrypt)) {
            return ResultVo.oK(true);
        } else {
            return ResultVo.oK(false);
        }
    }

    /**
     * 获取科室下拉框
     */
    @GetMapping("/getDepartment")
    public ResultVo getDepartment() {
        LambdaQueryWrapper<Department> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.select(Department::getId, Department::getDepName);
        return ResultVo.oK(departmentService.list(lambdaQueryWrapper));
    }

    /**
     * 通过科室id查询医生
     */
    @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));
    }

     */
    @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);

        return ResultVo.oK();
    }


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)) {
            AdminLoginToken adminLoginToken = method.getAnnotation(AdminLoginToken.class);
            if (adminLoginToken.required()) {
                // 执行认证
                if (token == null) {
            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);
        registration.setAccept(1);
        registrationService.updateById(registration);
        return ResultVo.oK();
    }

    /**
            LambdaQueryWrapper<Questions> lambdaQueryWrapper = new LambdaQueryWrapper<>();

            lambdaQueryWrapper.eq(Questions::getParentId, id);
            questionsService.remove(lambdaQueryWrapper);
        }
        return ResultVo.oK();
    }

    @PutMapping("/reply")
    public ResultVo reply(@RequestBody Questions questions, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        Questions entity = new Questions();
        entity.setTitle(questions.getReply());
        entity.setParentId(questions.getId());
        entity.setPatientId(questions.getPatientId());
        entity.setDoctorId(userId);
        questionsService.save(entity);

        return ResultVo.oK();
    }
}

/**
 * 全局异常处理类
 */
@ControllerAdvice
public class GloablExceptionHandler {

    /**
     * 文件上传限制异常413
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(MultipartException.class)
    public Object handleMultipartException(MultipartException e) {
        String msg = e.getMessage();
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        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);

        return ResultVo.oK();
    }

    /**
     * 通过挂号id获取详情
     */
            return ResultVo.failed(201, "原密码不正确");
        }
    }

    @PostMapping("/profile/avatar")
    public ResultVo avatarUpload(@RequestParam("avatarfile") MultipartFile file, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        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
    private UserManager userManager;

    // 患者提问
    @PostMapping("/ask")
    public ResultVo ask(@RequestBody Questions questions, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        questions.setPatientId(userId);
        questionsService.save(questions);
        return ResultVo.oK();
    }

    @GetMapping("/list")
    public ResultVo list(QueryRequest queryRequest, Questions questions, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        if (userManager.isAdminRole(userId)) {
            return ResultVo.oK(questionsService.queryList(queryRequest, questions));
        } else if (userManager.isDoctorRole(userId)) {
            return ResultVo.oK(questionsService.queryList(queryRequest, questions));
        } else if (userManager.isPatientsRole(userId)) {
            return ResultVo.oK(questionsService.queryListByPatient(queryRequest, questions, userId));
        }
        return null;
    }

    @DeleteMapping("/{ids}")
    public ResultVo del(@PathVariable Integer[] ids) {
        for (Integer id : ids) {
            questionsService.removeById(id);
            LambdaQueryWrapper<Questions> lambdaQueryWrapper = new LambdaQueryWrapper<>();

            lambdaQueryWrapper.eq(Questions::getParentId, id);
            questionsService.remove(lambdaQueryWrapper);
        }
        return ResultVo.oK();
    }

    @PutMapping("/reply")
        jsonObject.put("msg", "文件太大,不允许上传!" + msg);
        return jsonObject;
    }

    /**
     * token 不合法异常,返回403
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(RuntimeException.class)
    public Object handleRuntimeException(RuntimeException e) {
        String msg = e.getMessage();
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", 401);
        jsonObject.put("msg", msg);
        return jsonObject;
    }

    /**
     * token 不合法异常,返回403
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(TokenException.class)
    public Object handleTokenException(TokenException e) {
        String msg = e.getMessage();
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", 403);
        jsonObject.put("msg", msg);
        return jsonObject;
    }
}

    /**
     * 采纳
     */
    @GetMapping("/accept/{id}")
    public ResultVo accept(@PathVariable Integer id) {
        Registration registration = new Registration();
        registration.setId(id);
        registration.setAccept(1);
        registrationService.updateById(registration);
        return ResultVo.oK();
    }

    /**
     * 不采纳
     */
    @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位数,随机生成
    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);
        }
        return ResultVo.failed(500, "失败");
    }

    @PostMapping("/getMeInfo")
    @AdminLoginToken
    public ResultVo getMeInfo(HttpServletRequest request) {
        User user = userService.getById(TokenUtil.getAdminUserId(request.getHeader("Authorization")));
        return ResultVo.oK(user);
    }

    /**
     * 判断库中用户名 有没有被使用
     *
     * @param username
     * @return
     */
    @GetMapping("/checkUsername/{username}")
    public ResultVo checkUsername(@PathVariable String username) {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getUsername, username);
        if (userService.getOne(lambdaQueryWrapper) != null) {
            return ResultVo.oK(true);
        } else {
            return ResultVo.oK(false);
        }
    }

    /**
     * 判断请求方法的该用户原密码是否正确
     *
     * @param password
        registration.setStatus(1);
        registration.setId(id);
        registrationService.updateById(registration);

        return ResultVo.oK();
    }

    /**
     * 管理员或患者查询病例列表
     */
    @GetMapping("/list")
    public ResultVo list(Case entity, QueryRequest queryRequest, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));

        if (userManager.isAdminRole(userId)) {
            return ResultVo.oK(caseService.queryList(entity, queryRequest));
        } else if (userManager.isPatientsRole(userId)) {
            return ResultVo.oK(caseService.queryListByPatient(entity, queryRequest, userId));
        }
        return null;

    }

}

/**
 * <p>
 * 医院科室表 前端控制器
 * </p>
 */
@RestController
@RequestMapping("/adminApi/department")
public class DepartmentController {

    @Autowired
    private IDepartmentService departmentService;

    /**

/**
 * <p>
 * 问答表 前端控制器
 * </p>
 */
@RestController
@RequestMapping("/adminApi/questions")
public class QuestionsController {

    @Autowired
    private IQuestionsService questionsService;

    @Autowired
    private UserManager userManager;

    // 患者提问
    @PostMapping("/ask")
    public ResultVo ask(@RequestBody Questions questions, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        questions.setPatientId(userId);
        questionsService.save(questions);
        return ResultVo.oK();
    }

    @GetMapping("/list")
    public ResultVo list(QueryRequest queryRequest, Questions questions, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        if (userManager.isAdminRole(userId)) {
            return ResultVo.oK(questionsService.queryList(queryRequest, questions));
        } else if (userManager.isDoctorRole(userId)) {
            return ResultVo.oK(questionsService.queryList(queryRequest, questions));
        } else if (userManager.isPatientsRole(userId)) {
            return ResultVo.oK(questionsService.queryListByPatient(queryRequest, questions, userId));
        }
        return null;
    }

    @DeleteMapping("/{ids}")
    public ResultVo del(@PathVariable Integer[] ids) {
        for (Integer id : ids) {
            questionsService.removeById(id);
            LambdaQueryWrapper<Questions> lambdaQueryWrapper = new LambdaQueryWrapper<>();

            lambdaQueryWrapper.eq(Questions::getParentId, id);
            questionsService.remove(lambdaQueryWrapper);
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("status", 403);
        jsonObject.put("msg", msg);
        return jsonObject;
    }
}

/**
 * <p>
 * 病例表 前端控制器
 * </p>
 */
@RestController
@RequestMapping("/adminApi/case")
public class CaseController {

    @Autowired
    private ICaseService caseService;

    @Autowired
    private IRegistrationService registrationService;

    @Autowired
    private UserManager userManager;

    /**
     * 开处方
     */
    @PostMapping("/makeCase")
    public ResultVo makeCase(@RequestBody Case entity) {
        Integer id = entity.getId();
        caseService.save(entity);
        // 修改挂号状态
        Registration registration = new Registration();
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        return ResultVo.oK(userService.getById(userId));
    }

    /**
     * 个人中心配置
     */
    @PutMapping("/profile")
    public ResultVo updateProfile(@RequestBody User user) {
        userService.updateById(user);
        return ResultVo.oK();
    }

    @PutMapping("/profile/updatePwd")
    public ResultVo profileUpdatePwd(QueryRequest queryRequest, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));

        User user = userService.getById(userId);
        if (user.getPassword().equalsIgnoreCase(MD5Util.md5(queryRequest.getOldPassword()))) {
            User u = new User();
            u.setUserId(userId);
            u.setPassword(MD5Util.md5(queryRequest.getNewPassword()));
            userService.updateById(u);
            return ResultVo.oK();
        } else {
            return ResultVo.failed(201, "原密码不正确");
        }
    }

    @PostMapping("/profile/avatar")
    public ResultVo avatarUpload(@RequestParam("avatarfile") MultipartFile file, HttpServletRequest request) {
        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
        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);
                // 缓存
    public ResultVo remove(@PathVariable Integer[] userIds) {
        for (Integer userId : userIds) {
            userService.removeById(userId);
            return ResultVo.oK();
        }
        return null;
    }

    /**
     * 修改用户
     *
     * @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();
    }

}

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐