基于springboot,vue校园社团管理系统

开发工具:IDEA

服务器:Tomcat9.0, jdk1.8

项目构建:maven

数据库:mysql5.7

系统分前后台,项目采用前后端分离

前端技术:vue+elementUI

服务端技术:springboot+mybatis-plus

本系统分学生、社长、管理员三个角色,功能如下:

一、学生(用户)功能包括:

1.登录、注册、首页、修改密码、修改个人信息

2.入团申请管理:可以向感兴趣的社团提交申请。

3.浏览社团信息:可以浏览所有社团及其基本信息。

4.活动信息管理:查看活动信息和申请加入活动。

5.通知信息查询:可以查询发布的通知信息。

6.缴费信息管理:实现缴费查询和缴费缴纳功能。

二、社长功能包括:

1.登录、首页、修改密码、修改个人信息

2.入团申请处理:可以对提交社团申请的用户进行审核。

3.社团成员管理:实现对社团的成员查询和删除功能。

4.社团活动管理:可以查看和发布社团活动。

5.社团通知管理:可以查看,发布社团活动,删除本社团发布的通知

6.社团费用管理:可以查看,删除,根据社员编号发布缴费通知。

三、管理员功能包括:

1.登录、首页、修改密码、修改个人信息

2.系统用户管理:可以查看系统所有用户的基本信息,并修改和删除。

3.社团类型管理:可以对社团类型进行修改,删除,查询操作,并且可以根据需求增添社团类型。

4.社团信息管理:可以对社团进行查询,删除,创建社团,修改社团信息。

5.活动信息管理:可以查询,删除社团活动。

6.通知信息管理:可以查询,删除,发布社团活动。

7.查询缴费记录:可以查询各个社团的缴费记录。

文档截图:

学生(用户)截图:

社长截图:

管理员截图:

java 复制代码
package self.cases.teams.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import self.cases.teams.entity.Users;
import self.cases.teams.handle.CacheHandle;
import self.cases.teams.service.UsersService;
import self.cases.teams.utils.DateUtils;
import self.cases.teams.utils.IDUtils;
import self.cases.teams.msg.R;
import self.cases.teams.msg.PageData;

import self.cases.teams.entity.Teams;
import self.cases.teams.service.TeamsService;

import java.util.List;

/**
 * 系统请求响应控制器
 * 社团信息
 */
@Controller
@RequestMapping("/teams")
public class TeamsController extends BaseController {

    protected static final Logger Log = LoggerFactory.getLogger(TeamsController.class);

    @Autowired
    private CacheHandle cacheHandle;

    @Autowired
    private UsersService usersService;

    @Autowired
    private TeamsService teamsService;

    @RequestMapping("")
    public String index() {

        return "pages/Teams";
    }

    @GetMapping("/info")
    @ResponseBody
    public R getInfo(String id) {

        Log.info("查找指定社团信息,ID:{}", id);

        Teams teams = teamsService.getOne(id);

        return R.successData(teams);
    }

    @GetMapping("/all")
    @ResponseBody
    public R getAll(){

        Log.info("获取全部的社团");

        List<Teams> list = teamsService.getAll();

        return R.successData(list);
    }

    @GetMapping("/man")
    @ResponseBody
    public R getListByManId(String manId){

        Log.info("获取指定社团管理员相关的社团列表");

        List<Teams> list = teamsService.getListByManId(manId);

        return R.successData(list);
    }

    @GetMapping("/page")
    @ResponseBody
    public R getPageInfos(Long pageIndex, Long pageSize,
                         String token, Teams teams) {

        Users user = usersService.getOne(cacheHandle.getUserInfoCache(token));

        if(user.getType() == 1){

            teams.setManager(user.getId());
        }

        Log.info("分页查找社团信息,当前页码:{},"
                        + "每页数据量:{}, 模糊查询,附加参数:{}", pageIndex,
                pageSize, teams);

        PageData page = teamsService.getPageInfo(pageIndex, pageSize, teams);

        return R.successData(page);
    }

    @PostMapping("/add")
    @ResponseBody
    public R addInfo(Teams teams) {

        teams.setId(IDUtils.makeIDByCurrent());
        teams.setCreateTime(DateUtils.getNowDate("yyyy-MM-dd"));

        Log.info("添加社团信息,传入参数:{}", teams);

        teamsService.add(teams);

        return R.success();
    }

    @PostMapping("/upd")
    @ResponseBody
    public R updInfo(Teams teams) {

        Log.info("修改社团信息,传入参数:{}", teams);

        teamsService.update(teams);

        return R.success();
    }

    @PostMapping("/del")
    @ResponseBody
    public R delInfo(String id) {

        Log.info("删除社团信息, ID:{}", id);

        Teams teams = teamsService.getOne(id);

        teamsService.delete(teams);

        return R.success();
    }
}
相关推荐
学地理的小胖砸9 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
数据库幼崽9 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
betazhou10 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
满怀101511 小时前
【Vue 3全栈实战】从响应式原理到企业级架构设计
前端·javascript·vue.js·vue
伟笑11 小时前
elementUI 循环出来的表单,怎么做表单校验?
前端·javascript·elementui
喝醉的小喵12 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多12 小时前
Linux——mysql主从复制与读写分离
数据库·mysql
源远流长jerry13 小时前
MySQL的缓存策略
数据库·mysql·缓存
初次见面我叫泰隆13 小时前
MySQL——3、数据类型
数据库·mysql
weixin_4723394615 小时前
MySQL MCP 使用案例
数据库·mysql