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

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

运行环境

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

开发工具

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

前端:WebStorm/VSCode/HBuilderX等均可

适用

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

功能说明

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

一、项目运行 环境配置:

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

项目技术:

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

            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() + "已存在");
        }
    }

    /**
     * 删除用户
     */
    @DeleteMapping("/{userIds}")
    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();
    }
    @Autowired
    private IDepartmentService departmentService;

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

        Integer userId = TokenUtil.getAdminUserId(request.getHeader("Authorization"));
    }

    @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());
            userService.updateById(sysUser);
            return ResultVo.oK();
        } else {
            return ResultVo.failed(201, "请输入正确的用户名");
        }
    }

    /**
     * 通过用户名查询医生详情,科室
     */
    @GetMapping("/getDoctorInfoByUsername/{username}")
    public ResultVo getDoctorInfoByUsername(@PathVariable String username){
        return ResultVo.oK(userService.getDoctorInfoByUsername(username));
    }

}

        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();
        registration.setStatus(1);
    }

    /**
     * 根据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() + "已存在");
        }
    }

    /**
     * 删除用户
     */
    @DeleteMapping("/{userIds}")
    public ResultVo remove(@PathVariable Integer[] userIds) {
        for (Integer userId : userIds) {
            userService.removeById(userId);
            return ResultVo.oK();
        }
        return null;
    }

    /**
     * 修改用户
     *
     * @return

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) {
                    throw new TokenException(403, "无token,请重新登录");
                }
                // 获取 token 中的 userId
                int adminUserId = TokenUtil.getAdminUserId(token);
                User adminUser = usersService.getById(adminUserId);
 *
 */
@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();
        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;

    }

}


    @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
     * @return
     */
    @GetMapping("/checkPassword/{password}")
    public ResultVo checkPassword(@PathVariable String password, HttpServletRequest request) {
    @DeleteMapping("/{userIds}")
    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();
    }

}
/**
 * 项目名:penint
 *
 */


/**
 * <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();
        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"));
        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());
            userService.updateById(sysUser);
            return ResultVo.oK();
        } else {
            return ResultVo.failed(201, "请输入正确的用户名");
        }
    }

    /**
     * 通过用户名查询医生详情,科室
     */
    @GetMapping("/getDoctorInfoByUsername/{username}")
    public ResultVo getDoctorInfoByUsername(@PathVariable String username){
        return ResultVo.oK(userService.getDoctorInfoByUsername(username));
    }

}


@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));
    }

    /**
     * 修改账户状态,禁用或者取消
     *
     * @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<>();
        } 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")
    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
        // 修改挂号状态
        Registration registration = new Registration();
        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 {

@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) {
        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();
        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);
        }
        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);
        }
    }

    @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();
    }

    /**
     * 通过挂号id获取详情
     */
    @GetMapping("/{id}")
    public ResultVo getInfoById(@PathVariable Integer id) {
        return ResultVo.oK(registrationService.getById(id));

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值