Community Volunteer | Realize the Community Volunteer Platform System Based on Springboot+Vue

Author's homepage: Programming Thousand Paper Cranes

About the author: Java, front-end, and Python have been developed for many years, and have worked as a senior engineer, project manager, and architect

Main content: Java project development, Python project development, university data and AI project development, MCU project design, interview technology arrangement, latest technology sharing

Favorites, likes, don't get lost, it's good to follow the author

Get the source code at the end of the article

Item number: BS-XX-212

1. Environmental introduction

Locale: Java: jdk1.8

Database: Mysql: mysql5.7

Application server: Tomcat: tomcat8.5.31

Development tools: IDEA or eclipse

Development technology: Springboot+Vue

2. Project introduction

This project is based on the development and implementation of a community volunteer platform management system based on Springboot+Vue. There are two types of users: platform administrators and front-end users. The platform administrator mainly implements: administrator management, user management, announcement management, carousel map management, style display management, event information management, volunteer application review, event participation management, comment filtering management and other related functions. Front-end users mainly have operational functions such as registration and login, viewing event information, viewing announcement information, viewing past event appearances, information comments, and volunteer evaluations. The system has complete functions, friendly and generous interface, and is suitable for graduation design.

The system table structure is as follows:

[Administrator] module, table name: admins

field name

Field Type

name

id

int

(primary key)

username

varchar(50)

account number

pwd

varchar(50)

password

[Carousel map] module, table name: lunbotu

field name

Field Type

name

id

int

(primary key)

title

varchar(50)

title

image

varchar(255)

picture

url

varchar(255)

connection address

[User] module, table name: yonghu

field name

Field Type

name

id

int

(primary key)

cx

varchar(50)

permissions

yonghuming

varchar(50)

username

mima

varchar(50)

password

xingming

varchar(50)

Name

xingbie

varchar(10)

gender

shouji

varchar(50)

cell phone

youxiang

varchar(50)

Mail

jifen

int

integral

shenfenzheng

varchar(50)

ID card

touxiang

varchar(255)

avatar

【Presentation display】Module, table name: fengcaizhanshi

field name

Field Type

name

id

int

(primary key)

suoluetu

varchar(255)

thumbnail

foreign

text

atlas

biaoti

varchar(255)

title

suoshushequ

int

Community

Xiangqing

longtext

details

Faburen

varchar(50)

publisher

addtime

timestamp

添加时间

设置索引, 字段:suoshushequ , 关联表【shequ】中的id 字段

【评论】模块,表名:pinglun

字段名

字段类型

名称

id

int

(主键)

biao

varchar(50)

biaoid

int

表id

biaoti

varchar(255)

标题

pingfen

varchar(255)

评分

pinglunneirong

text

评论内容

pinglunren

varchar(50)

评论人

addtime

timestamp

评论时间

【社区】模块,表名:shequ

字段名

字段类型

名称

id

int

(主键)

shequmingcheng

varchar(255)

社区名称

【活动信息】模块,表名:huodongxinxi

字段名

字段类型

名称

id

int

(主键)

huodongbianhao

varchar(50)

活动编号

tupian

varchar(255)

图片

huodongbiaoti

varchar(255)

活动标题

suoshushequ

int

所属社区

zhaomurenshu

int

招募人数

yibaomingrenshu

int

已报名人数

zhuangtai

varchar(50)

状态

kehuodejifen

int

可获得积分

huodongxiangqing

longtext

活动详情

faburen

varchar(50)

发布人

addtime

timestamp

添加时间

设置索引, 字段:suoshushequ , 关联表【shequ】中的id 字段

【申请志愿者】模块,表名:shenqingzhiyuanzhe

字段名

字段类型

名称

id

int

(主键)

shenqingbianhao

varchar(50)

申请编号

biaoti

varchar(50)

标题

shenqingyonghu

varchar(50)

申请用户

zhenshixingming

varchar(50)

真实姓名

xingbie

varchar(10)

性别

shenfenzhenghao

varchar(50)

身份证号

lianxidianhua

varchar(50)

联系电话

gongzuodanwei

varchar(50)

工作单位

xianjuzhudizhi

varchar(255)

现居住地址

hujidizhi

varchar(255)

户籍地址

shenqingmiaoshu

text

申请描述

shenqingzhuangtai

varchar(50)

申请状态

addtime

timestamp

申请时间

【申请审核】模块,表名:shenqingshenhe

字段名

字段类型

名称

id

int

(主键)

shenqingzhiyuanzheid

int

申请志愿者id

shenqingbianhao

varchar(50)

申请编号

biaoti

varchar(50)

标题

shenqingyonghu

varchar(50)

申请用户

zhenshixingming

varchar(50)

真实姓名

shenhe

varchar(50)

审核

beizhu

text

备注

shenheren

varchar(50)

审核人

addtime

timestamp

添加时间

设置索引, 字段:shenqingzhiyuanzheid , 关联表【shenqingzhiyuanzhe】中字段id

【邀请成为志愿者】模块,表名:yaoqingchengweizhiyuanzhe

字段名

字段类型

名称

id

int

(主键)

yonghuid

int

用户id

yonghuming

varchar(50)

用户名

xingming

varchar(50)

姓名

biaoti

varchar(50)

标题

neirong

longtext

内容

yaoqingren

varchar(50)

邀请人

addtime

timestamp

添加时间

设置索引, 字段:yonghuid , 关联表【yonghu】中字段id

【公告】模块,表名:gonggao

字段名

字段类型

名称

id

int

(主键)

biaoti

varchar(50)

标题

neirong

longtext

内容

faburen

varchar(50)

发布人

addtime

timestamp

添加时间

【报名活动】模块,表名:baominghuodong

字段名

字段类型

名称

id

int

(主键)

baomingbianhao

varchar(50)

报名编号

huodongxinxiid

int

活动信息id

huodongbianhao

varchar(50)

活动编号

huodongbiaoti

varchar(255)

活动标题

suoshushequ

int

所属社区

kehuodejifen

int

可获得积分

faburen

varchar(50)

发布人

shenhezhuangtai

varchar(50)

审核状态

baomingshuoming

text

报名说明

baomingren

varchar(50)

报名人

addtime

timestamp

报名时间

设置索引, 字段:huodongxinxiid , 关联表【huodongxinxi】中字段id

设置索引, 字段:suoshushequ , 关联表【shequ】中的id 字段

【报名审核】模块,表名:baomingshenhe

字段名

字段类型

名称

id

int

(主键)

baominghuodongid

int

报名活动id

baomingbianhao

varchar(50)

报名编号

huodongbianhao

varchar(50)

活动编号

huodongbiaoti

varchar(255)

活动标题

suoshushequ

int

所属社区

kehuodejifen

int

可获得积分

baomingren

varchar(50)

报名人

shenhe

varchar(50)

审核

beizhu

text

备注

shenheren

varchar(50)

审核人

addtime

timestamp

添加时间

设置索引, 字段:baominghuodongid , 关联表【baominghuodong】中字段id

设置索引, 字段:suoshushequ , 关联表【shequ】中的id 字段

【志愿者评价】模块,表名:zhiyuanzhepingjia

字段名

字段类型

名称

id

int

(主键)

huodongxinxiid

int

活动信息id

huodongbianhao

varchar(50)

活动编号

huodongbiaoti

varchar(255)

活动标题

suoshushequ

int

所属社区

faburen

varchar(50)

发布人

zhiyuanzhe

varchar(50)

志愿者

pingfen

varchar(50)

评分

shifouniming

varchar(50)

是否匿名

pingjiaren

varchar(50)

评价人

pingjianeirong

longtext

评价内容

addtime

timestamp

添加时间

设置索引, 字段:huodongxinxiid , 关联表【huodongxinxi】中字段id

设置索引, 字段:suoshushequ , 关联表【shequ】中的id 字段

三,系统展示

 

 志愿者活动

 活动评价

志愿者评价

活动风采展示

 系统公告

用户注册

 志愿者个人中心

个人资料管理

 志愿者申请管理

活动报名查询

评论评价管理

管理员登录

 管理员管理

 轮播图和公告管理

活动风采展示

 社区管理和活动信息管理

 志愿者审核管理

 活动报名审核 

过滤词管理

四,核心代码展示

package com.spring.controller;

import com.jntoo.db.*;
import com.jntoo.db.utils.*;
import com.spring.dao.*;
import com.spring.entity.*;
import com.spring.service.*;
import com.spring.util.*;
import com.spring.util.Info;
import java.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import tk.mybatis.mapper.entity.Example;

/**
 * 管理员 */
@Controller
public class AdminsController extends BaseController {

    @Autowired
    private AdminsMapper dao;

    @Autowired
    private AdminsService service;

    /**
     *  后台列表页
     *
     */
    @RequestMapping("/admins_list")
    public String list() {
        // 检测是否有登录,没登录则跳转到登录页面
        if (!checkLogin()) {
            return showError("尚未登录", "./login.do");
        }

        String order = Request.get("order", "id"); // 获取前台提交的URL参数 order  如果没有则设置为id
        String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort  如果没有则设置为desc
        int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据
        Example example = new Example(Admins.class); //  创建一个扩展搜索类
        Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类
        String where = " 1=1 "; // 创建初始条件为:1=1
        where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句
        criteria.andCondition(where); // 将条件写进上面的扩展条件类中
        if (sort.equals("desc")) { // 判断前台提交的sort 参数是否等于  desc倒序  是则使用倒序,否则使用正序
            example.orderBy(order).desc(); // 把sql 语句设置成倒序
        } else {
            example.orderBy(order).asc(); // 把 sql 设置成正序
        }
        int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page  如果没有则设置为1
        page = Math.max(1, page); // 取两个数的最大值,防止page 小于1
        List<Admins> list = service.selectPageExample(example, page, pagesize); // 获取当前页的行数

        // 将列表写给界面使用
        assign("totalCount", request.getAttribute("totalCount"));
        assign("list", list);
        assign("orderby", order); // 把当前排序结果写进前台
        assign("sort", sort); // 把当前排序结果写进前台
        return json(); // 将数据写给前端
    }

    public String getWhere() {
        _var = new LinkedHashMap(); // 重置数据
        String where = " ";
        // 以下也是一样的操作,判断是否符合条件,符合则写入sql 语句
        if (!Request.get("username").equals("")) {
            where += " AND username LIKE '%" + Request.get("username") + "%' ";
        }
        return where;
    }

    @RequestMapping("/admins_add")
    public String add() {
        _var = new LinkedHashMap(); // 重置数据

        return json(); // 将数据写给前端
    }

    @RequestMapping("/admins_updt")
    public String updt() {
        _var = new LinkedHashMap(); // 重置数据
        int id = Request.getInt("id");
        // 获取行数据,并赋值给前台jsp页面
        Admins mmm = service.find(id);
        assign("mmm", mmm);
        assign("updtself", 0);

        return json(); // 将数据写给前端
    }

    @RequestMapping("/admins_updtself")
    public String updtself() {
        _var = new LinkedHashMap(); // 重置数据
        // 更新个人资料
        int id = (int) request.getSession().getAttribute("id");
        Admins mmm = service.find(id);
        assign("mmm", mmm);
        assign("updtself", 1);
        return json(); // 将数据写给前端
    }

    /**
     * 添加内容
     * @return
     */
    @RequestMapping("/adminsinsert")
    public String insert() {
        _var = new LinkedHashMap(); // 重置数据
        String tmp = "";
        Admins post = new Admins(); // 创建实体类
        // 设置前台提交上来的数据到实体类中
        post.setUsername(Request.get("username"));

        post.setPwd(Request.get("pwd"));

        service.insert(post); // 插入数据
        int charuid = post.getId().intValue();

        if (isAjax()) {
            return jsonResult(post);
        }
        return showSuccess("保存成功", Request.get("referer").equals("") ? request.getHeader("referer") : Request.get("referer"));
    }

    /**
     * 更新内容
     * @return
     */
    @RequestMapping("/adminsupdate")
    public String update() {
        _var = new LinkedHashMap(); // 重置数据
        // 创建实体类
        Admins post = new Admins();
        // 将前台表单数据填充到实体类
        if (!Request.get("username").equals("")) post.setUsername(Request.get("username"));
        if (!Request.get("pwd").equals("")) post.setPwd(Request.get("pwd"));

        post.setId(Request.getInt("id"));
        service.update(post); // 更新数据
        int charuid = post.getId().intValue();

        if (isAjax()) {
            return jsonResult(post);
        }
        if (Request.getInt("updtself") == 1) {
            return showSuccess("保存成功", "admins_updtself.do");
        }

        return showSuccess("保存成功", Request.get("referer")); // 弹出保存成功,并跳转到前台提交的 referer 页面
    }

    /**
     *  删除
     */
    @RequestMapping("/admins_delete")
    public String delete() {
        _var = new LinkedHashMap(); // 重置数据
        if (!checkLogin()) {
            return showError("尚未登录");
        }
        int id = Request.getInt("id"); // 根据id 删除某行数据
        Map map = Query.make("admins").find(id);

        service.delete(id); // 根据id 删除某行数据
        return showSuccess("删除成功", request.getHeader("referer")); //弹出删除成功,并跳回上一页
    }
}
package com.spring.controller;

import com.alibaba.fastjson.JSON;
import com.spring.util.JsonResult;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;

/**
 * 控制器基类
 */
public abstract class BaseController {

    @Autowired
    protected HttpServletRequest request; // 注入

    @Autowired
    protected HttpServletResponse response; // 注入

    @Autowired
    protected HttpSession session; // 注入

    protected ModelAndView mView;

    protected Map<Object, Object> _var;

    /**
     * 控制器
     */
    public BaseController() {
        //request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        //response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
        mView = new ModelAndView();
        _var = new LinkedHashMap();
    }

    /**
     * 往模板中写入数据
     * @param name
     * @param value
     */
    protected void assign(String name, Object value) {
        request.setAttribute(name, value);
        _var.put(name, value);
    }

    /**
     * 弹出框
     * @param message
     * @param code
     * @param jumpUrl
     * @param jumpTime
     * @return
     */
    protected String showMessage(String message, int code, Object data, String jumpUrl, int jumpTime) {
        if (isAjax()) {
            JsonResult jsonResult = new JsonResult(code, message, data);
            return renderString(response, JSON.toJSONString(jsonResult));
        }

        assign("message", message == null ? data : message);
        assign("code", code);
        assign("jumpUrl", jumpUrl);
        assign("jumpTime", jumpTime);

        return "message";
    }

    /**
     * 将写入json写到前端
     * @return
     */
    public String json() {
        return jsonResult(_var);
    }

    public String jsonReturn(String message, int code, Object data) {
        JsonResult result = new JsonResult(code, message, data);
        return renderString(response, JSON.toJSONString(result));
    }

    public String jsonResult(Object data) {
        return jsonReturn(null, 0, data);
    }

    public String jsonError(String msg) {
        return jsonReturn(msg, 1, null);
    }

    public Object getRequestAttributeMap() {
        //Map<Object,Object> map = new LinkedHashMap();
        Enumeration<String> names = request.getAttributeNames();

        while (names.hasMoreElements()) {
            String key = names.nextElement();
            if (!_var.containsKey(key)) {
                // 没有,则写入
                _var.put(key, request.getAttribute(key));
            }
        }
        return _var;
    }

    public String getJson() {
        Map<Object, Object> map = new LinkedHashMap();
        Enumeration<String> names = request.getAttributeNames();

        while (names.hasMoreElements()) {
            String key = names.nextElement();
            Object value = request.getAttribute(key);
            map.put(key, value);
        }
        return renderString(response, JSON.toJSONString(map));
    }

    /**
     * 将字符串渲染到客户端
     *
     * @param response 渲染对象
     * @param string 待渲染的字符串
     * @return null
     */
    public String renderString(HttpServletResponse response, String string) {
        try {
            request.getSession();
            OutputStream stream = response.getOutputStream();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            stream.write(string.getBytes());
            stream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "success";
    }

    protected boolean isAjax() {
        String accept = request.getHeader("accept");
        if (accept != null && accept.indexOf("application/json") != -1) {
            return true;
        }

        String xRequestedWith = request.getHeader("X-Requested-With");
        if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) {
            return true;
        }

        String ajax = request.getParameter("format");
        if ("json".equalsIgnoreCase(ajax)) {
            return true;
        }
        return false;
    }

    /**
     * 检测是否登录
     * @return
     */
    protected boolean checkLogin() {
        if (request.getSession().getAttribute("username") == null || "".equals(request.getSession().getAttribute("username"))) {
            return false;
        }
        return true;
    }

    /**
     * 弹出错误信息
     * @param message
     * @return
     */
    protected String showError(String message) {
        return showMessage(message, 1, null, "javascript:history(-1);", 2250);
    }

    /**
     *  弹出错误信息
     * @param message
     * @param code
     * @return
     */
    protected String showError(String message, int code) {
        return showMessage(message, code, null, "javascript:history(-1);", 2250);
    }

    /**
     * 弹出错误信息
     * @param message
     * @param url
     * @return
     */
    protected String showError(String message, String url) {
        return showMessage(message, 1, null, url, 2250);
    }

    /**
     * 弹出成功信息
     * @param data
     * @return
     */
    protected String showSuccess(Object data) {
        return showMessage(null, 0, data, request.getHeader("referer"), 2250);
    }

    /**
     * 弹出成功信息
     * @param data
     * @param url
     * @return
     */
    protected String showSuccess(String data, String url) {
        return showMessage(null, 0, data, url, 2250);
    }
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

Front-end practical projects developed based on Nodejs, Vue and other front-end technologies

Related works based on WeChat applet and Android APP application development

Development and application of embedded IoT based on 51 single-chip microcomputer

AI intelligent application based on various algorithms

Various data management and recommendation systems based on big data

 

 

Guess you like

Origin blog.csdn.net/BS009/article/details/132554025