计算机毕业设计 校园志愿者管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

发布于:2024-10-13 ⋅ 阅读:(131) ⋅ 点赞:(0)

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
————————————————
计算机毕业设计《1000套》

Python毕设精品项目

微信小程序毕设精品项目

大数据及机器学习毕设精品项目

目录

1、项目介绍及开发技术

1.1 项目介绍

1.2 开发技术

2、系统功能设计结构图

3、功能截图

3.1 前台功能

3.2 后台功能

4、数据库表结构设计

5、关键代码

5.1 志愿者活动报名Controller模块 

5.2 志愿者活动报名Service模块 

5.3 志愿者活动报名ServiceImpl模块

5.4  志愿者活动报名Dao模块

6、论文目录结构

7、源码获取


1、项目介绍及开发技术

1.1 项目介绍

在校园文化建设中,志愿服务活动扮演着重要角色,它不仅能够丰富学生的校园生活,还能培养社会责任感和实践能力。然而,传统的志愿者活动管理方式存在诸多不便,如信息传递不畅、活动组织效率低下、志愿者参与度不高等问题。为了解决这些问题,提升志愿者活动的组织和管理效率,我们设计并开发了一个校园志愿者管理系统。

背景:
随着志愿服务活动的多样化和参与人数的增加,校园内对志愿者活动的管理需求日益增长。传统的管理方式,如纸质登记、口头通知等,已经无法满足现代校园对活动管理的高效和便捷要求。因此,建立一个集成化的数字平台,以支持志愿者活动的发布、报名、管理和反馈,成为了校园文化建设的迫切需求。

目的意义:

  • 1. 提高活动组织效率:系统通过在线活动发布和管理,使得活动信息能够迅速传达给所有感兴趣的志愿者,提高了活动的组织和响应速度。
  • 2. 增强志愿者参与度:系统提供活动报名、志愿者活动记录等功能,鼓励更多的学生参与到志愿服务中来,增强了志愿者的参与感和归属感。
  • 3. 优化信息传递:通过公告、论坛和客服等功能,系统提供了一个信息交流的平台,使得志愿者能够及时获取活动信息和反馈。
  • 4. 促进校园文化交流:系统不仅是一个管理工具,也是一个文化交流的平台,通过论坛交流和活动分享,促进了校园文化的传播和交流。
  • 5. 支持决策制定:系统收集的志愿者活动数据和用户反馈,为校园管理者提供了决策支持,有助于优化活动安排和资源配置。

综上所述,校园志愿者管理系统的设计与实现,不仅能够为校园提供一个高效、便捷的志愿者活动管理平台,还能够通过信息的快速流通和志愿者的积极参与,增强校园文化的活力和凝聚力。通过技术手段优化志愿者活动管理流程,该系统有望成为推动校园文化建设和志愿服务发展的重要力量。
 

1.2 开发技术

类别 技术名称 用途/描述
开发语言 Java 一种广泛使用的面向对象编程语言。
框架 Spring Boot 简化Spring应用的初始搭建以及开发过程。
ORM工具 MyBatis Plus MyBatis的增强工具,简化CRUD操作。
数据库 MySQL 流行的关系型数据库管理系统。
构建工具 Maven 项目管理和理解工具。
开发工具 IDEA 集成开发环境,用于代码编写和调试。
JDK版本 JDK 1.8+ Java开发工具包,提供运行Java程序所需的环境。
前端框架 Vue 用于构建用户界面的渐进式JavaScript框架。
UI框架 Element UI 基于Vue的桌面端组件库。
前端技术 HTML 网页内容的标准标记语言。
前端技术 CSS 描述HTML文档的样式。
前端技术 JS 网页脚本语言,用于实现网页的动态效果。

2、系统功能设计结构图

功能模块结构图

├── 前端
│   ├── 登录
│   ├── 注册
│   ├── 首页
│   ├── 活动
│   ├── 论坛
│   ├── 公告
│   ├── 志愿者活动
│   ├── 个人中心
│   │   ├── 个人信息
│   │   ├── 活动报名
│   │   ├── 志愿者活动报名
│   │   ├── 志愿者活动
│   │   └── 志愿者留言
│   ├── 客服

└── 后端
    ├── 登录
    ├── 管理员管理
    ├── 志愿者管理
    ├── 非志愿者管理
    ├── 客服聊天管理
    ├── 活动管理
    ├── 活动报名管理
    ├── 论坛管理
    ├── 公告管理
    ├── 志愿者活动管理
    ├── 志愿者活动报名管理
    └── 基础数据管理
        └── 轮播图管理

系统MVC框架,请求流程展示:

3、功能截图

3.1 前台功能

3.2 后台功能

4、数据库表结构设计


CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) NOT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';



DROP TABLE IF EXISTS `feihuodong`;

CREATE TABLE `feihuodong` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `feizhiyuan_id` int(11) DEFAULT NULL COMMENT '非志愿者',
  `feihuodong_name` varchar(200) DEFAULT NULL COMMENT '活动名称  Search111 ',
  `feihuodong_uuid_number` varchar(200) DEFAULT NULL COMMENT '活动编号',
  `feihuodong_photo` varchar(200) DEFAULT NULL COMMENT '活动照片',
  `feihuodong_address` varchar(200) DEFAULT NULL COMMENT '活动地点',
  `feihuodong_types` int(11) DEFAULT NULL COMMENT '活动类型 Search111',
  `feihuodong_kucun_number` int(11) DEFAULT NULL COMMENT '活动人数',
  `feihuodong_tiaojian` varchar(200) DEFAULT NULL COMMENT '参加活动条件',
  `feihuodong_content` longtext COMMENT '活动介绍 ',
  `feihuodong_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='活动';


DROP TABLE IF EXISTS `feihuodong_yuyue`;

CREATE TABLE `feihuodong_yuyue` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `feihuodong_yuyue_uuid_number` varchar(200) DEFAULT NULL COMMENT '报名编号 Search111 ',
  `feihuodong_id` int(11) DEFAULT NULL COMMENT '活动',
  `zhiyuanzhe_id` int(11) DEFAULT NULL COMMENT '志愿者',
  `feihuodong_yuyue_text` longtext COMMENT '报名理由',
  `feihuodong_yuyue_yesno_types` int(11) DEFAULT NULL COMMENT '报名状态 Search111 ',
  `feihuodong_yuyue_yesno_text` longtext COMMENT '审核回复',
  `feihuodong_yuyue_shenhe_time` timestamp NULL DEFAULT NULL COMMENT '审核时间',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '活动报名时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='活动报名';


DROP TABLE IF EXISTS `feizhiyuan`;

CREATE TABLE `feizhiyuan` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `feizhiyuan_name` varchar(200) DEFAULT NULL COMMENT '非志愿者姓名 Search111 ',
  `feizhiyuan_phone` varchar(200) DEFAULT NULL COMMENT '非志愿者手机号',
  `feizhiyuan_id_number` varchar(200) DEFAULT NULL COMMENT '非志愿者身份证号',
  `feizhiyuan_photo` varchar(200) DEFAULT NULL COMMENT '非志愿者头像',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别',
  `feizhiyuan_email` varchar(200) DEFAULT NULL COMMENT '非志愿者邮箱',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='非志愿者';



DROP TABLE IF EXISTS `forum`;

CREATE TABLE `forum` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `forum_name` varchar(200) DEFAULT NULL COMMENT '帖子标题  Search111 ',
  `zhiyuanzhe_id` int(11) DEFAULT NULL COMMENT '志愿者',
  `feizhiyuan_id` int(11) DEFAULT NULL COMMENT '非志愿者',
  `users_id` int(11) DEFAULT NULL COMMENT '管理员',
  `forum_content` longtext COMMENT '发布内容',
  `super_ids` int(11) DEFAULT NULL COMMENT '父id',
  `forum_state_types` int(11) DEFAULT NULL COMMENT '帖子状态',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '发帖时间',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='论坛';



CREATE TABLE `token` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userid` bigint(20) NOT NULL COMMENT '儿童id',
  `username` varchar(100) NOT NULL COMMENT '儿童名',
  `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
  `role` varchar(100) DEFAULT NULL COMMENT '角色',
  `token` varchar(200) NOT NULL COMMENT '密码',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='token表';


CREATE TABLE `zhihuodong` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `zhiyuanzhe_id` int(11) DEFAULT NULL COMMENT '志愿者',
  `zhihuodong_name` varchar(200) DEFAULT NULL COMMENT '活动名称  Search111 ',
  `zhihuodong_uuid_number` varchar(200) DEFAULT NULL COMMENT '活动编号',
  `zhihuodong_photo` varchar(200) DEFAULT NULL COMMENT '活动照片',
  `zhihuodong_address` varchar(200) DEFAULT NULL COMMENT '活动地点',
  `zhihuodong_types` int(11) DEFAULT NULL COMMENT '活动类型 Search111',
  `zhihuodong_kucun_number` int(11) DEFAULT NULL COMMENT '活动人数',
  `zhihuodong_tiaojian` varchar(200) DEFAULT NULL COMMENT '参加活动条件',
  `zhihuodong_content` longtext COMMENT '活动介绍 ',
  `zhihuodong_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='志愿者活动';


CREATE TABLE `zhiyuanzhe` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `zhiyuanzhe_name` varchar(200) DEFAULT NULL COMMENT '志愿者姓名 Search111 ',
  `zhiyuanzhe_phone` varchar(200) DEFAULT NULL COMMENT '志愿者手机号',
  `zhiyuanzhe_id_number` varchar(200) DEFAULT NULL COMMENT '志愿者身份证号',
  `zhiyuanzhe_photo` varchar(200) DEFAULT NULL COMMENT '志愿者头像',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别',
  `zhiyuanzhe_email` varchar(200) DEFAULT NULL COMMENT '志愿者邮箱',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='志愿者';

5、关键代码

5.1 志愿者活动报名Controller模块 



package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
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.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 志愿者活动报名
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/zhihuodongYuyue")
public class ZhihuodongYuyueController {
    private static final Logger logger = LoggerFactory.getLogger(ZhihuodongYuyueController.class);

    private static final String TABLE_NAME = "zhihuodongYuyue";

    @Autowired
    private ZhihuodongYuyueService zhihuodongYuyueService;


    @Autowired
    private TokenService tokenService;

    @Autowired
    private ChatService chatService;//客服聊天
    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private FeihuodongService feihuodongService;//活动
    @Autowired
    private FeihuodongYuyueService feihuodongYuyueService;//活动报名
    @Autowired
    private FeizhiyuanService feizhiyuanService;//非志愿者
    @Autowired
    private ForumService forumService;//论坛
    @Autowired
    private GonggaoService gonggaoService;//公告
    @Autowired
    private ZhihuodongService zhihuodongService;//志愿者活动
    @Autowired
    private ZhiyuanzheService zhiyuanzheService;//志愿者
    @Autowired
    private ZhiyuanzheLiuyanService zhiyuanzheLiuyanService;//志愿者留言
    @Autowired
    private UsersService usersService;//管理员


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("志愿者".equals(role))
            params.put("zhiyuanzheId",request.getSession().getAttribute("userId"));
        else if("非志愿者".equals(role))
            params.put("feizhiyuanId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = zhihuodongYuyueService.queryPage(params);

        //字典表数据转换
        List<ZhihuodongYuyueView> list =(List<ZhihuodongYuyueView>)page.getList();
        for(ZhihuodongYuyueView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        ZhihuodongYuyueEntity zhihuodongYuyue = zhihuodongYuyueService.selectById(id);
        if(zhihuodongYuyue !=null){
            //entity转view
            ZhihuodongYuyueView view = new ZhihuodongYuyueView();
            BeanUtils.copyProperties( zhihuodongYuyue , view );//把实体数据重构到view中
            //级联表 志愿者活动
            //级联表
            ZhihuodongEntity zhihuodong = zhihuodongService.selectById(zhihuodongYuyue.getZhihuodongId());
            if(zhihuodong != null){
            BeanUtils.copyProperties( zhihuodong , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "zhiyuanzheId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setZhihuodongId(zhihuodong.getId());
            }
            //级联表 志愿者
            //级联表
            ZhiyuanzheEntity zhiyuanzhe = zhiyuanzheService.selectById(zhihuodongYuyue.getZhiyuanzheId());
            if(zhiyuanzhe != null){
            BeanUtils.copyProperties( zhiyuanzhe , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "zhiyuanzheId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setZhiyuanzheId(zhiyuanzhe.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody ZhihuodongYuyueEntity zhihuodongYuyue, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,zhihuodongYuyue:{}",this.getClass().getName(),zhihuodongYuyue.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("志愿者".equals(role))
            zhihuodongYuyue.setZhiyuanzheId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<ZhihuodongYuyueEntity> queryWrapper = new EntityWrapper<ZhihuodongYuyueEntity>()
            .eq("zhihuodong_id", zhihuodongYuyue.getZhihuodongId())
            .eq("zhiyuanzhe_id", zhihuodongYuyue.getZhiyuanzheId())
            .in("zhihuodong_yuyue_yesno_types", new Integer[]{1,2})
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ZhihuodongYuyueEntity zhihuodongYuyueEntity = zhihuodongYuyueService.selectOne(queryWrapper);
        if(zhihuodongYuyueEntity==null){
            zhihuodongYuyue.setZhihuodongYuyueYesnoTypes(1);
            zhihuodongYuyue.setInsertTime(new Date());
            zhihuodongYuyue.setCreateTime(new Date());
            zhihuodongYuyueService.insert(zhihuodongYuyue);
            return R.ok();
        }else {
            if(zhihuodongYuyueEntity.getZhihuodongYuyueYesnoTypes()==1)
                return R.error(511,"有相同的待审核的数据");
            else if(zhihuodongYuyueEntity.getZhihuodongYuyueYesnoTypes()==2)
                return R.error(511,"有相同的审核通过的数据");
            else
                return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody ZhihuodongYuyueEntity zhihuodongYuyue, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,zhihuodongYuyue:{}",this.getClass().getName(),zhihuodongYuyue.toString());
        ZhihuodongYuyueEntity oldZhihuodongYuyueEntity = zhihuodongYuyueService.selectById(zhihuodongYuyue.getId());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("志愿者".equals(role))
//            zhihuodongYuyue.setZhiyuanzheId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

            zhihuodongYuyueService.updateById(zhihuodongYuyue);//根据id更新
            return R.ok();
    }


    /**
    * 审核
    */
    @RequestMapping("/shenhe")
    public R shenhe(@RequestBody ZhihuodongYuyueEntity zhihuodongYuyueEntity, HttpServletRequest request){
        logger.debug("shenhe方法:,,Controller:{},,zhihuodongYuyueEntity:{}",this.getClass().getName(),zhihuodongYuyueEntity.toString());

        ZhihuodongYuyueEntity oldZhihuodongYuyue = zhihuodongYuyueService.selectById(zhihuodongYuyueEntity.getId());//查询原先数据

//        if(zhihuodongYuyueEntity.getZhihuodongYuyueYesnoTypes() == 2){//通过
//            zhihuodongYuyueEntity.setZhihuodongYuyueTypes();
//        }else if(zhihuodongYuyueEntity.getZhihuodongYuyueYesnoTypes() == 3){//拒绝
//            zhihuodongYuyueEntity.setZhihuodongYuyueTypes();
//        }
        zhihuodongYuyueEntity.setZhihuodongYuyueShenheTime(new Date());//审核时间
        zhihuodongYuyueService.updateById(zhihuodongYuyueEntity);//审核

        return R.ok();
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<ZhihuodongYuyueEntity> oldZhihuodongYuyueList =zhihuodongYuyueService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        zhihuodongYuyueService.deleteBatchIds(Arrays.asList(ids));

        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer zhiyuanzheId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<ZhihuodongYuyueEntity> zhihuodongYuyueList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            ZhihuodongYuyueEntity zhihuodongYuyueEntity = new ZhihuodongYuyueEntity();
//                            zhihuodongYuyueEntity.setZhihuodongYuyueUuidNumber(data.get(0));                    //报名编号 要改的
//                            zhihuodongYuyueEntity.setZhihuodongId(Integer.valueOf(data.get(0)));   //活动 要改的
//                            zhihuodongYuyueEntity.setZhiyuanzheId(Integer.valueOf(data.get(0)));   //非志愿者 要改的
//                            zhihuodongYuyueEntity.setZhihuodongYuyueText(data.get(0));                    //报名理由 要改的
//                            zhihuodongYuyueEntity.setZhihuodongYuyueYesnoTypes(Integer.valueOf(data.get(0)));   //报名状态 要改的
//                            zhihuodongYuyueEntity.setZhihuodongYuyueYesnoText(data.get(0));                    //审核回复 要改的
//                            zhihuodongYuyueEntity.setZhihuodongYuyueShenheTime(sdf.parse(data.get(0)));          //审核时间 要改的
//                            zhihuodongYuyueEntity.setInsertTime(date);//时间
//                            zhihuodongYuyueEntity.setCreateTime(date);//时间
                            zhihuodongYuyueList.add(zhihuodongYuyueEntity);


                            //把要查询是否重复的字段放入map中
                                //报名编号
                                if(seachFields.containsKey("zhihuodongYuyueUuidNumber")){
                                    List<String> zhihuodongYuyueUuidNumber = seachFields.get("zhihuodongYuyueUuidNumber");
                                    zhihuodongYuyueUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> zhihuodongYuyueUuidNumber = new ArrayList<>();
                                    zhihuodongYuyueUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("zhihuodongYuyueUuidNumber",zhihuodongYuyueUuidNumber);
                                }
                        }

                        //查询是否重复
                         //报名编号
                        List<ZhihuodongYuyueEntity> zhihuodongYuyueEntities_zhihuodongYuyueUuidNumber = zhihuodongYuyueService.selectList(new EntityWrapper<ZhihuodongYuyueEntity>().in("zhihuodong_yuyue_uuid_number", seachFields.get("zhihuodongYuyueUuidNumber")));
                        if(zhihuodongYuyueEntities_zhihuodongYuyueUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(ZhihuodongYuyueEntity s:zhihuodongYuyueEntities_zhihuodongYuyueUuidNumber){
                                repeatFields.add(s.getZhihuodongYuyueUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [报名编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        zhihuodongYuyueService.insertBatch(zhihuodongYuyueList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }




    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        CommonUtil.checkMap(params);
        PageUtils page = zhihuodongYuyueService.queryPage(params);

        //字典表数据转换
        List<ZhihuodongYuyueView> list =(List<ZhihuodongYuyueView>)page.getList();
        for(ZhihuodongYuyueView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段

        return R.ok().put("data", page);
    }

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        ZhihuodongYuyueEntity zhihuodongYuyue = zhihuodongYuyueService.selectById(id);
            if(zhihuodongYuyue !=null){


                //entity转view
                ZhihuodongYuyueView view = new ZhihuodongYuyueView();
                BeanUtils.copyProperties( zhihuodongYuyue , view );//把实体数据重构到view中

                //级联表
                    ZhihuodongEntity zhihuodong = zhihuodongService.selectById(zhihuodongYuyue.getZhihuodongId());
                if(zhihuodong != null){
                    BeanUtils.copyProperties( zhihuodong , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setZhihuodongId(zhihuodong.getId());
                }
                //级联表
                    ZhiyuanzheEntity zhiyuanzhe = zhiyuanzheService.selectById(zhihuodongYuyue.getZhiyuanzheId());
                if(zhiyuanzhe != null){
                    BeanUtils.copyProperties( zhiyuanzhe , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setZhiyuanzheId(zhiyuanzhe.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody ZhihuodongYuyueEntity zhihuodongYuyue, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,zhihuodongYuyue:{}",this.getClass().getName(),zhihuodongYuyue.toString());
        Wrapper<ZhihuodongYuyueEntity> queryWrapper = new EntityWrapper<ZhihuodongYuyueEntity>()
            .eq("zhihuodong_yuyue_uuid_number", zhihuodongYuyue.getZhihuodongYuyueUuidNumber())
            .eq("zhihuodong_id", zhihuodongYuyue.getZhihuodongId())
            .eq("zhiyuanzhe_id", zhihuodongYuyue.getZhiyuanzheId())
            .eq("zhihuodong_yuyue_text", zhihuodongYuyue.getZhihuodongYuyueText())
            .in("zhihuodong_yuyue_yesno_types", new Integer[]{1,2})
            .eq("zhihuodong_yuyue_yesno_text", zhihuodongYuyue.getZhihuodongYuyueYesnoText())
//            .notIn("zhihuodong_yuyue_types", new Integer[]{102})
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ZhihuodongYuyueEntity zhihuodongYuyueEntity = zhihuodongYuyueService.selectOne(queryWrapper);
        if(zhihuodongYuyueEntity==null){
            zhihuodongYuyue.setZhihuodongYuyueYesnoTypes(1);
            zhihuodongYuyue.setInsertTime(new Date());
            zhihuodongYuyue.setCreateTime(new Date());
        zhihuodongYuyueService.insert(zhihuodongYuyue);

            return R.ok();
        }else {
            if(zhihuodongYuyueEntity.getZhihuodongYuyueYesnoTypes()==1)
                return R.error(511,"有相同的待审核的数据");
            else if(zhihuodongYuyueEntity.getZhihuodongYuyueYesnoTypes()==2)
                return R.error(511,"有相同的审核通过的数据");
            else
                return R.error(511,"表中有相同数据");
        }
    }

}

5.2 志愿者活动报名Service模块 

 package com.service;

import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.ZhihuodongYuyueEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;

/**
 * 志愿者活动报名 服务类
 */
public interface ZhihuodongYuyueService extends IService<ZhihuodongYuyueEntity> {

    /**
    * @param params 查询参数
    * @return 带分页的查询出来的数据
    */
     PageUtils queryPage(Map<String, Object> params);

}

5.3 志愿者活动报名ServiceImpl模块


package com.service.impl;

import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.ZhihuodongYuyueDao;
import com.entity.ZhihuodongYuyueEntity;
import com.service.ZhihuodongYuyueService;
import com.entity.view.ZhihuodongYuyueView;

/**
 * 志愿者活动报名 服务实现类
 */
@Service("zhihuodongYuyueService")
@Transactional
public class ZhihuodongYuyueServiceImpl extends ServiceImpl<ZhihuodongYuyueDao, ZhihuodongYuyueEntity> implements ZhihuodongYuyueService {

    @Override
    public PageUtils queryPage(Map<String,Object> params) {
        Page<ZhihuodongYuyueView> page =new Query<ZhihuodongYuyueView>(params).getPage();
        page.setRecords(baseMapper.selectListView(page,params));
        return new PageUtils(page);
    }


}

5.4  志愿者活动报名Dao模块


package com.dao;

import com.entity.ZhihuodongYuyueEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;

import org.apache.ibatis.annotations.Param;
import com.entity.view.ZhihuodongYuyueView;

/**
 * 志愿者活动报名 Dao 接口
 *
 * @author 
 */
public interface ZhihuodongYuyueDao extends BaseMapper<ZhihuodongYuyueEntity> {

   List<ZhihuodongYuyueView> selectListView(Pagination page,@Param("params")Map<String,Object> params);

}

6、论文目录结构

摘要... I

Abstract... II

1 绪论... 1
   1.1 项目简介... 1
   1.2 调查研究... 1
       1.2.1 研究背景及意义... 1
       1.2.2 国内外研究现状... 2
       1.2.3 研究主要内容... 2
   1.3 论文的章节安排... 3

2 系统相关技术介绍... 4
   2.1 Java语言... 4
   2.2 SpringBoot框架... 4
   2.3 Vue框架... 4
   2.4 MySQL数据库... 4

3 系统需求分析... 6
   3.1 可行性分析... 6
       3.1.1 技术可行性... 6
       3.1.2 经济可行性... 6
       3.1.3 操作可行性... 6
   3.2 系统功能需求... 6
       3.2.1 用户端功能需求... 6
       3.2.2 XX端功能需求... 6
       3.2.3 管理员端功能需求... 6
   3.3 系统性能需求... 6

4 系统总体设计... 7
   4.1 系统总体架构设计... 7
   4.2 系统的功能设计... 7
   4.3 数据库设计... 7
       4.3.1 概念设计E-R图... 7
       4.3.2 逻辑设计关系模式... 7
       4.3.3 数据库物理设计... 7

5 系统详细实现... 14
   5.1 系统实现环境... 14
   5.2 用户端... 14
       5.2.1 登录页面... 14
       5.2.2 注册页面... 14
       5.2.3 XXXX页面... 14
       5.2.4 XXXX页面... 14
       5.2.5 XXXX页面... 14
   5.3 XXXX端... 15
       5.3.1 XXXX页面... 15
       5.3.2 XXXX页面... 15
       5.3.3 XXXX页面... 15
       5.3.4 XXXX页面... 15
   5.4 管理端... 15
       5.4.1 用户管理页面... 15
       5.4.2 XXXX页面... 15
       5.4.3 XXXX页面... 16
       5.4.4 XXXX页面... 16

6 系统测试... 16
   6.1 测试目的... 16
   6.2 测试方法... 16
   6.3 测试用例... 16
       6.3.1 XXXX测试... 16
       6.3.2 XXXX测试... 16
   6.4 测试结果... 16

结论... 17

参考文献... 18

致谢... 19

更多源码:

计算机毕业设计选题1000套等你来!!!

Python毕设精品项目

微信小程序毕设精品项目  

大数据及机器学习毕设精品项目 

7、源码获取

感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

喜欢文章可以点赞、收藏、关注、评论

下方联系方式获取源码


网站公告

今日签到

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