基于java+springboot+mybatis+vue+elementui的会议管理系统

news2025/1/15 19:45:19

项目介绍

随着社会竞争压力的不断加强 ,企事业单位内部的会议都在不断的增加,有效的会议可以提高企事业内部的沟通,更好的做出符合战略目标的决策。但是当下会议的交接工作一直是通过人们口头传达的方式来进行的,很明显这种方式比较落后,而且被传达的人不能很好的了解会议的内容这也给后面会议内容的执行带来了一定的问题,为了解决这一现状,让每次的会议内容都更好的被传达和执行是当下很多会议决策者和参与者都在关注的一个问题。
为了能够让会议能够更好的被传达和交接,急需一套信息化的会议交接平台出现。现代化的会议交接系统能够帮助会议的决策者和参与者更好的对会议交接工作进行管理,本系统就是基于这样的目的出现的。我们通过java语言,后端springboot框架,数据库mysql,前端vue技术开发了本系统。

开发环境

开发语言:Java
数据库 :MySQL
系统架构:B/S
后端框架:SpringBoot
前端框架:Vue
开发工具:IDEA或者Eclipse,JDK1.8,Maven

系统截图

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

部分代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ChatEntity;
import com.entity.view.ChatView;

import com.service.ChatService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 在线客服
 * 后端接口
 */
@RestController
@RequestMapping("/chat")
public class ChatController {
    @Autowired
    private ChatService chatService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ChatEntity chat,
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
		PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ChatEntity chat, HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
		PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( ChatEntity chat){
       	EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
      	ew.allEq(MPUtil.allEQMapPre( chat, "chat")); 
        return R.ok().put("data", chatService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ChatEntity chat){
        EntityWrapper< ChatEntity> ew = new EntityWrapper< ChatEntity>();
 		ew.allEq(MPUtil.allEQMapPre( chat, "chat")); 
		ChatView chatView =  chatService.selectView(ew);
		return R.ok("查询在线客服成功").put("data", chatView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ChatEntity chat = chatService.selectById(id);
        return R.ok().put("data", chat);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ChatEntity chat = chatService.selectById(id);
        return R.ok().put("data", chat);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ChatEntity chat, HttpServletRequest request){
    	chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(chat);
    	if(StringUtils.isNotBlank(chat.getAsk())) {
			chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    		chat.setIsreply(1);
    	}
    	if(StringUtils.isNotBlank(chat.getReply())) {
    		chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
    		chat.setAdminid((Long)request.getSession().getAttribute("userId"));
    	}
        chatService.insert(chat);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ChatEntity chat, HttpServletRequest request){
    	chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(chat);
    	chat.setUserid((Long)request.getSession().getAttribute("userId"));
    	if(StringUtils.isNotBlank(chat.getAsk())) {
			chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    		chat.setIsreply(1);
    	}
    	if(StringUtils.isNotBlank(chat.getReply())) {
    		chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
    		chat.setAdminid((Long)request.getSession().getAttribute("userId"));
    	}
        chatService.insert(chat);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ChatEntity chat, HttpServletRequest request){
        //ValidatorUtils.validateEntity(chat);
        chatService.updateById(chat);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        chatService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ChatEntity> wrapper = new EntityWrapper<ChatEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = chatService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NLP文章和视频违规声明原创案例集锦

一、 文章违规声明原创案例集锦 平台鼓励用户就自行创作并发布的作品标识原创,但作品本身应符合以下前提: 1、受著作权法保护(如公开性质内容不具备著作权,则不在原创范围内) 2、不得侵犯他人权益(如未经授权使用他人内容,则不在原创范围内) 3、符合平台运营规范(…

C++利器STL——vector详解

要努力&#xff0c;但不要着急&#xff0c;繁花锦簇&#xff0c;硕果累累都需要过程&#xff01; 目录 1.vector的介绍及使用 1.1vector的介绍 1.2vector的使用 2.vector模拟实现 3.vector常见试题 1.vector的介绍及使用 1.1vector的介绍 1. vector是表示可变大小数组的序列容…

从查询语句执行流程看MySQL架构

言 常言道&#xff0c;看待一个事情要先知全貌&#xff0c;从高维度认识、理解&#xff0c;然后再深入各个细节&#xff0c;一一击破。MySQL的学习也不例外&#xff0c;那么你知道一条SQL在MySQL中执行要经历哪些步骤吗&#xff1f;每个步骤都有MySQL的哪些“零件”参与吗&…

双十二薅羊毛!这几款数码好物不可错过

双十二即将开始&#xff0c;在这段时间里有的人已经将自己心仪的塞满了整个购物车了吧&#xff0c;而有的人还没想好到底要入手什么&#xff0c;如果你也是还在纠结的话&#xff0c;不知道该买什么又或是想知道哪些产品更适合你入手&#xff0c;不妨来看看小编今天为你带来的这…

【JavaScript函数】

JavaScript函数1 本节目标2 函数的概念3 函数的使用3.1 声明函数3.2 调用函数3.3 函数的封装4 函数的参数4.1 形参和实参4.2 执行过程4.3 注意点4.4 函数形参和实参个数不匹配问题5 函数的返回值5.1 return语句5.2 函数返回值注意事项5.3 break,continue,return的区别6 argumen…

Python 中的安全密码处理

前言 几乎每个应用程序都需要某种形式的身份验证、密码处理或使用安全凭据&#xff0c;例如 API 密钥。您可能不是安全专家&#xff0c;但您应该知道如何安全地处理所有这些密码和凭据&#xff0c;以保护应用程序用户的凭据和数据以及您自己的 API 密钥和各种令牌。 &#xf…

GitHub 最全的开发资源汇总系列

GitHub 最全的开发资源汇总系列 了解学习开发各种项目&#xff01;&#xff01;&#xff01; GitHub 最全的开发资源汇总系列 由伯乐在线持续更新 Java 资源大全&#xff1b;Java资源大全中文版&#xff0c;包括开发库、开发工具、网站、博客、微信、微博等。 —— Java资源…

建筑结构抗震分析之施加地震波的方法与理论机理

一、地震波的输入有三种方式&#xff1a; 第一种是是质量加速度施加法&#xff0c;通过达朗贝尔原理&#xff0c;将地震作用转化为施加在质点上惯性力&#xff1b;第二种是底部位移法&#xff0c;在结构底部直接输入位移地震波&#xff0c;模拟地面震动反应&#xff0c;计算结…

Function 源码解析与实践

作者&#xff1a;陈昌浩 1 导读 if…else…在代码中经常使用&#xff0c;听说可以通过 Java 8 的 Function 接口来消灭 if…else…&#xff01;Function 接口是什么&#xff1f;如果通过 Function 接口接口消灭 if…else…呢&#xff1f;让我们一起来探索一下吧。 2 Functio…

共享新机遇 共谋新发展 | 蓝海创意云携元宇宙技术参展2022昆明南博会

11月19日&#xff0c;第6届中国-南亚博览会暨第26届中国昆明进出口商品交易会&#xff08;以下简称南博会&#xff09;在昆明盛大开幕&#xff0c;经过10年的精心打造&#xff0c;南博会已经成为集国际贸易、投资洽谈、文化交流等为一体的高水平综合性国际博览会。 蓝海创意云…

草料二维码表单如何推送至工作群

在我们使用草料二维码进行隐患排查、故障报修、预约报名、巡检异常等场景时&#xff0c;需要时不时查看草料后台&#xff0c;检查是否有新的信息更新&#xff0c;或者提交后人工再单独通知一次&#xff0c;经常造成信息传递不及时&#xff0c;那么能不能当有表单提交时&#xf…

项目管理软件有哪些,哪个好用?

做过项目的朋友肯定都知道&#xff0c;项目管理软件是专门用来帮助计划和控制项目资源、成本与进度的计算机应用程序。这类软件可以帮助企业管理项目进度&#xff0c;节省项目人力成本支出&#xff0c;增进团队协作与沟通&#xff0c;提升团队成员工作效率&#xff0c;让资源可…

Java本地高性能缓存实践

Java缓存技术可分为远端缓存和本地缓存&#xff0c;远端缓存常用的方案有著名的redis和memcache&#xff0c;而本地缓存的代表技术主要有HashMap&#xff0c;Guava Cache&#xff0c;Caffeine和Encahche。远端缓存将在后面的博文中进行深入探讨&#xff0c;此处挖个坑&#xff…

【013】基于Vue的酒店客房管理系统(含管理员、普通用户两种身份(附源码数据库、课设报告)

这里写目录标题一、系统详细介绍二、系统部分设计思路三、项目获取一、系统详细介绍 前言&#xff1a; 这次带来的是基于NodejsVueMysql的酒店客房管理系统&#xff0c;含非常非常详细的课设报告&#xff0c;觉得物超所值&#xff01;文末附源码数据库、论文百度云链接 系统登…

高空简易水果采摘装置设计(CAD+proe)

目 录 摘 要 I Abstract II 1 绪论 1 1.1 选题背景及意义 1 1.2研究现状 1 1.2.1国外果园采摘机械现状 1 1.2.2国内果园采摘机械现状 4 1.2.3果园机械存在问题 5 1.2.4果园采摘机械的发展趋势 6 1.3研究主要内容 7 2 高空简易水果采摘装置原理 8 2.1 水果实采摘方式的选择 8 2.…

零基础入门JavaWeb——HTML相关知识

一、HTML概念 HTML是Hyper Text Markup Language的缩写。意思是超文本标记语言。它的作用是搭建网页结构&#xff0c;在网页上展示内容。 1.1 超文本 HTML文件本质上是文本文件&#xff0c;而普通的文本文件只能显示字符。但是HTML技术通过HTML标签把其他网页、图片、音频、…

微信公众号留言如何实时提醒

几乎每个官方品牌都有一个微信公众号&#xff0c;并且会不定期发布和品牌、产品相关的内容&#xff0c;也经常会收到一些用户的留言。但并不是运营人员每时每刻都登录在公众号后台&#xff0c;查看并回复这些用户的问题&#xff0c;如果我希望有用户给我们公众号留言后&#xf…

运动酒店,如何“奇袭”文旅产业精准蓝海赛道——缤跃酒店

近日&#xff0c;缤跃酒店战略牵手昌泰高速&#xff0c;进驻雷公坳文体产业园&#xff0c;共建江西大健康产业重点基地。作为锦江酒店(中国区)旗下360度健康运动中高端生活方式品牌&#xff0c;缤跃高调与南昌雷公坳文体产业园达成战略合作&#xff0c;强势入驻体育产业园&…

Python读取复杂电子表格(CSV)数据小技巧一则

关于CSV格式 逗号分隔值&#xff08;Comma-Separated Values&#xff0c;CSV&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。“CSV”并不是一种单一的、…

竞赛——【蓝桥杯】2022年12月第十四届蓝桥杯模拟赛第二期Java

1、最小的2022 问题描述 请找到一个大于 2022 的最小数&#xff0c;这个数转换成二进制之后&#xff0c;最低的 6 个二进制为全为 0 。 请将这个数的十进制形式作为答案提交。 答案提交 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数…