SpringBoot高校运动会管理系统 附带详细运行指导视频

发布于:2025-03-03 ⋅ 阅读:(62) ⋅ 点赞:(0)

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot框架开发的高校运动会管理系统项目。首先,这是一个响应式的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目在报名赛事功能上采用了ZooKeeper分布式锁进行高并发情况下的功能优化设计,如果不想要Zookeeper,也会免费指导如何去除,不会影响现有功能。最后,这项目功能丰富,具有一个高校运动会管理系统该有的所有功能。

项目功能:该项目分为学生管理员两个角色。学生有登录、管理个人信息、查看运动会信息、查看赛事信息、报名赛事、管理个人报名信息、查看成绩信息、查看公告信息等等功能。管理员有管理所有用户信息、管理所有运动会信息、管理所有赛事信息、管理所有报名信息、管理所有成绩信息、管理所有公告信息等等功能。

应用技术:SpringBoot + MyBatis + Thymeleaf + Bootstrap + MySQL + ZooKeeper

运行环境:IntelliJ IDEA(项目压缩包中自带) + MySQL(项目压缩包中自带) + Maven3.6.3(项目压缩包中自带) + JDK1.8(项目压缩包中自带) + ZooKeeper3.8.4(项目压缩包中自带)

三、运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、主要代码

1.报名赛事代码

 /**
  * 报名赛事
  * @param signDTO
  * @return
  */
 @Override
    public ResponseDTO<Boolean> signContest(SignDTO signDTO, HttpServletRequest request) {
        if(CommonUtil.isEmpty(signDTO.getContestId())) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }
        User user = (User) request.getSession().getAttribute(SessionConstant.SESSION_LOGIN_KEY);
        Contest contest = contestMapper.selectByPrimaryKey(signDTO.getContestId());
        if(contest == null) {
            return ResponseDTO.errorByMsg(CodeMsg.CONTEST_NOT_EXIST);
        }
        if(contest.getSignEndTime().getTime() <= new Date().getTime()) {
            return ResponseDTO.errorByMsg(CodeMsg.SIGN_DATE_OVER);
        }
        if(contest.getNowSignNum() >= contest.getMaxSignNum()) {
            return ResponseDTO.errorByMsg(CodeMsg.SIGN_NUM_ERROR);
        }
        SignExample signExample = new SignExample();
        signExample.createCriteria().andUserIdEqualTo(user.getId()).andContestIdEqualTo(contest.getId());
        List<Sign> signList = signMapper.selectByExample(signExample);
        if(signList.size() > 0) {
            return ResponseDTO.errorByMsg(CodeMsg.SIGN_CONTEST_EXIST);
        }
        Sign sign = CopyUtil.copy(signDTO, Sign.class);
        sign.setId(UuidUtil.getShortUuid());
        sign.setUserId(user.getId());
        sign.setCreateTime(new Date());
        if(signMapper.insertSelective(sign) == 0) {
            throw new RuntimeException(CodeMsg.SIGN_ADD_ERROR.getMsg());
        }
        contest.setNowSignNum(contest.getNowSignNum() + 1);
        if(contestMapper.updateByPrimaryKeySelective(contest) == 0) {
            throw new RuntimeException(CodeMsg.CONTEST_EDIT_ERROR.getMsg());
        }
        return ResponseDTO.successByMsg(true, "报名成功");
    }

2.用户登录代码

  /**
   * 用户登录操作
   * @param userDTO
   * @param request
   * @return
   */
  @Override
    public ResponseDTO<Boolean> login(UserDTO userDTO, HttpServletRequest request) {
        if(userDTO == null) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }
        if(CommonUtil.isEmpty(userDTO.getNo())) {
            return ResponseDTO.errorByMsg(CodeMsg.NO_EMPTY);
        }
        if(CommonUtil.isEmpty(userDTO.getPassword())) {
            return ResponseDTO.errorByMsg(CodeMsg.PASSWORD_EMPTY);
        }
        UserExample userExample = new UserExample();
        userExample.createCriteria()
                .andNoEqualTo(userDTO.getNo())
                .andPasswordEqualTo(userDTO.getPassword())
                .andRoleIdEqualTo(userDTO.getRoleId());
        List<User> userList = userMapper.selectByExample(userExample);
        if(userList.size() == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.NO_PASSWORD_ERROR);
        }
        request.getSession().setAttribute(SessionConstant.SESSION_LOGIN_KEY, userList.get(0));

        return ResponseDTO.successByMsg(true, "登录成功!");
    }

3.保存成绩代码

    /**
     * 保存成绩信息
     * @param resultDTO
     * @return
     */
 	@Override
    public ResponseDTO<Boolean> save(ResultDTO resultDTO) {
        if(resultDTO == null) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }
        // 进行统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(resultDTO);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseDTO.errorByMsg(validate);
        }
        UserExample userExample = new UserExample();
        userExample.createCriteria().andNoEqualTo(resultDTO.getUserNo());
        List<User> userList = userMapper.selectByExample(userExample);
        if(userList.size() == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);
        }
        Contest contest = contestMapper.selectByPrimaryKey(resultDTO.getContestId());
        if(contest == null) {
            return ResponseDTO.errorByMsg(CodeMsg.CONTEST_NOT_EXIST);
        }
        User user = userList.get(0);
        // 判断是否有报名
        SignExample signExample = new SignExample();
        signExample.createCriteria().andContestIdEqualTo(contest.getId()).andUserIdEqualTo(user.getId());
        if(signMapper.countByExample(signExample) == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.CONTEST_NOT_SIGN);
        }
        Result result = CopyUtil.copy(resultDTO, Result.class);
        result.setUserId(user.getId());
        if(CommonUtil.isEmpty(result.getId())){
            // 添加操作
            // 判断成绩信息是否存在
            if(isResultExist(result, "")){
                return ResponseDTO.errorByMsg(CodeMsg.RESULT_EXIST);
            }
            result.setId(UuidUtil.getShortUuid());
            if(resultMapper.insertSelective(result) == 0){
                return ResponseDTO.errorByMsg(CodeMsg.RESULT_ADD_ERROR);
            }
        }else {
            // 修改操作
            // 判断成绩信息是否存在
            if(isResultExist(result, result.getId())){
                return ResponseDTO.errorByMsg(CodeMsg.RESULT_EXIST);
            }
            if(resultMapper.updateByPrimaryKeySelective(result) == 0){
                return ResponseDTO.errorByMsg(CodeMsg.RESULT_EDIT_ERROR);
            }
        }
        return ResponseDTO.success(true);
    }

网站公告

今日签到

点亮在社区的每一天
去签到