基于JAVA SpringBoot和Vue社区网格化管理服务平台设计

摘要

本文旨在设计并实现一个基于Java SpringBoot和Vue技术的社区网格化管理服务平台。该平台主要包括用户功能和管理员功能两大部分,用户功能涵盖单位管理、问卷调查、论坛讨论、公告查看等;管理员功能则包括单位管理、基础数据维护、帖子和公告类型管理、人口状况管理等。通过前后端分离架构,利用SpringBoot框架在后端提供API接口,前端使用Vue.js进行数据交互,实现社区信息的数字化和智能化管理,提升社区管理效率和服务质量。

功能介绍

管理员和普通用户两种用户角色;

管理员:个人中心、管理员管理、基础数据管理、论坛管理、公告管理、意见征集管理、商业门店管理、单位管理、用户管理、问卷调查管理、试题管理、调查记录管理、轮播图管理等;

普通用户:个人中心、首页、论坛交流、问卷调查、意见征集、商业门店、单位、公告信息等。

技术介绍

后端:Java语言的Spring Boot框架、MySQL数据库、Maven依赖管理等;

前端:Vue、element-ui、axios等。

部分代码展示

public class DanweiController {private static final Logger logger = LoggerFactory.getLogger(DanweiController.class);private static final String TABLE_NAME = "danwei";@Autowiredprivate DanweiService danweiService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//字典@Autowiredprivate ExampaperService exampaperService;//问卷调查@Autowiredprivate ExampapertopicService exampapertopicService;//问卷调查选题@Autowiredprivate ExamquestionService examquestionService;//试题表@Autowiredprivate ExamrecordService examrecordService;//调查记录表@Autowiredprivate ExamredetailsService examredetailsService;//答题详情表@Autowiredprivate ExamrewrongquestionService examrewrongquestionService;//错题表@Autowiredprivate ForumService forumService;//论坛@Autowiredprivate GonggaoService gonggaoService;//公告@Autowiredprivate LiuyanService liuyanService;//意见征集@Autowiredprivate ShangyemendianService shangyemendianService;//商业门店@Autowiredprivate YonghuService yonghuService;//用户@Autowiredprivate 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("yonghuId",request.getSession().getAttribute("userId"));CommonUtil.checkMap(params);PageUtils page = danweiService.queryPage(params);//字典表数据转换List<DanweiView> list =(List<DanweiView>)page.getList();for(DanweiView 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);DanweiEntity danwei = danweiService.selectById(id);if(danwei !=null){//entity转viewDanweiView view = new DanweiView();BeanUtils.copyProperties( danwei , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody DanweiEntity danwei, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,danwei:{}",this.getClass().getName(),danwei.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");Wrapper<DanweiEntity> queryWrapper = new EntityWrapper<DanweiEntity>().eq("danwei_name", danwei.getDanweiName()).eq("danwei_address", danwei.getDanweiAddress()).eq("danwei_types", danwei.getDanweiTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());DanweiEntity danweiEntity = danweiService.selectOne(queryWrapper);if(danweiEntity==null){danwei.setCreateTime(new Date());danweiService.insert(danwei);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody DanweiEntity danwei, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,danwei:{}",this.getClass().getName(),danwei.toString());DanweiEntity oldDanweiEntity = danweiService.selectById(danwei.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");if("".equals(danwei.getDanweiPhoto()) || "null".equals(danwei.getDanweiPhoto())){danwei.setDanweiPhoto(null);}danweiService.updateById(danwei);//根据id更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids, HttpServletRequest request){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());List<DanweiEntity> oldDanweiList =danweiService.selectBatchIds(Arrays.asList(ids));//要删除的数据danweiService.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 yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {List<DanweiEntity> danweiList = 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){//循环DanweiEntity danweiEntity = new DanweiEntity();danweiList.add(danweiEntity);//把要查询是否重复的字段放入map中//单位编号if(seachFields.containsKey("danweiUuidNumber")){List<String> danweiUuidNumber = seachFields.get("danweiUuidNumber");danweiUuidNumber.add(data.get(0));//要改的}else{List<String> danweiUuidNumber = new ArrayList<>();danweiUuidNumber.add(data.get(0));//要改的seachFields.put("danweiUuidNumber",danweiUuidNumber);}}//查询是否重复//单位编号List<DanweiEntity> danweiEntities_danweiUuidNumber = danweiService.selectList(new EntityWrapper<DanweiEntity>().in("danwei_uuid_number", seachFields.get("danweiUuidNumber")));if(danweiEntities_danweiUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(DanweiEntity s:danweiEntities_danweiUuidNumber){repeatFields.add(s.getDanweiUuidNumber());}return R.error(511,"数据库的该表中的 [单位编号] 字段已经存在 存在数据为:"+repeatFields.toString());}danweiService.insertBatch(danweiList);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 = danweiService.queryPage(params);//字典表数据转换List<DanweiView> list =(List<DanweiView>)page.getList();for(DanweiView 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);DanweiEntity danwei = danweiService.selectById(id);if(danwei !=null){//entity转viewDanweiView view = new DanweiView();BeanUtils.copyProperties( danwei , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody DanweiEntity danwei, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,danwei:{}",this.getClass().getName(),danwei.toString());Wrapper<DanweiEntity> queryWrapper = new EntityWrapper<DanweiEntity>().eq("danwei_name", danwei.getDanweiName()).eq("danwei_uuid_number", danwei.getDanweiUuidNumber()).eq("danwei_address", danwei.getDanweiAddress()).eq("danwei_types", danwei.getDanweiTypes())
//            .notIn("danwei_types", new Integer[]{102});logger.info("sql语句:"+queryWrapper.getSqlSegment());DanweiEntity danweiEntity = danweiService.selectOne(queryWrapper);if(danweiEntity==null){danwei.setCreateTime(new Date());danweiService.insert(danwei);return R.ok();}else {return R.error(511,"表中有相同数据");}}}

演示视频

Java SpringBoot和Vue社区服务网格化管理系统

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

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

相关文章

鸢尾博客项目开源

1.博客介绍 鸢尾博客是一个基于Spring BootVue3 TypeScript ViteJavaFx的客户端和服务器端的博客系统。项目采用前端与后端分离&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。后端使用Sa-Token进行权限管理,支持动态菜单权限&#xff0c;服务健康…

IBinder源码分析

基础概念 binder 是 Android 中主要的跨进程通信方式&#xff0c;binder 驱动和 service manager 分别相当于网络协议中的路由器和 DNS&#xff0c;并基于 mmap 实现了 IPC 传输数据时只需一次拷贝。binder 包括 BinderProxy、BpBinder 等各种 Binder 实体&#xff0c;以及对 …

PDF Reader Pro for mac激活版 PDF编辑阅读器

PDF Reader Pro阅读器是一款用户必备的集管理、编辑、转换、阅读功能于一体的专业的全能PDF阅读专家。快速、易用、强大&#xff0c;让您出色完成 PDF 工作&#xff0c;深受全球9000万用户的喜爱。用户可轻松使用PDF Reader Pro进行文档阅读、编辑、注释、填写Form表单、转换、…

图像分割从基础到进阶:阈值化、K-means和Mean-Shift算法的应用

图像分割是计算机视觉中的一项关键技术&#xff0c;用来将图像划分为若干个 有意义 的区域&#xff0c;以便后续的图像处理和分析工作。根据任务的不同&#xff0c;图像分割可以进一步细分为语义分割、实例分割和全景分割&#xff1a; 语义分割 (Semantic Segmentation) 对图像…

生产消费者模型

线程同步 互斥锁(互斥量)条件变量生产/消费者模型 一、互斥锁 C11提供了四种互斥锁&#xff1a; mutex&#xff1a;互斥锁。timed_mutex&#xff1a;带超时机制的互斥锁。recursive_mutex&#xff1a;递归互斥锁。recursive_timed_mutex&#xff1a;带超时机制的递归互斥锁…

国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案

一、方案背景 在当代建筑施工领域&#xff0c;安全监管和防盗监控是保障工程顺利进行和资产安全的关键措施。随着科技进步&#xff0c;传统的监控系统已不足以应对现代工地的安全挑战。因此&#xff0c;基于国标GB28181视频平台EasyCVR的工地防盗视频监控系统应运而生&#xf…

WindowsDocker安装到D盘,C盘太占用空间了。

Windows安装 Docker Desktop的时候,默认位置是安装在C盘,使用Docker下载的镜像文件也是保存在C盘,如果对Docker使用评率比较高的小伙伴,可能C盘空间,会被耗尽,有没有一种办法可以将Docker安装到其它磁盘,同时Docker的数据文件也保存在其他磁盘呢? 答案是有的,我们可以…

【AI日记】24.11.01 LangChain、openai api和github copilot

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 工作1 内容&#xff1a;学习deeplearning.ai的免费课程地址&#xff1a;LangChain Chat with Your DataB站地址&#xff1a;https://www.bilibili.com/video/BV148411D7d2github代码&#xff1a;https:…

HTML静态网页成品作业(HTML+CSS)——花主题介绍网页设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

WinCC V7.5 SP1VBS全局变量的使用

1 <概述> 在 WinCC 使用过程中&#xff0c;有很多应用场合需要把获得的数据保存下来&#xff0c;在其它事件 中来使用&#xff0c;例如在 WinCC 运行后去读取自定义的配置文件中的参数&#xff0c;在控制相应设 备时需要根据这些参数来确定控制方式&#xff0c;那么就需…

Charles抓包_Android

1.下载地址 2.破解方法 3.安卓调试办法 查看官方文档&#xff0c;Android N之后抓包要声明App可用User目录下的CA证书 3.1.在Proxy下进行以下设置&#xff08;路径Proxy->Proxy Settings&#xff09; 3.1.1.不抓包Windows&#xff0c;即不勾选此项&#xff0c;免得打输出不…

微信小程序 高校教材征订系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统分为三个角色&#xff0c;分别是教材科、系教学秘书、教研室主任。系统主要完成功能是教材科要发布教材征订信息&am…

Rust 力扣 - 1343. 大小为 K 且平均值大于等于阈值的子数组数目

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 长度为k且平均值大于等于阈值的子数组数目 等于 长度为k且总和大于等于k * 阈值的子数组数目 我们遍历长度为k的窗口&#xff0c;我们只需要记录窗口内的总和即可&#xff0c;遍历过程中记录总和大于等于k * 阈…

3DMax使用 MCG实现简单克隆修改器

3DMax中的MCG工具集允许用户创建几种不同类型的插件。在这个例子中&#xff0c;我们正在创建一个简单的克隆修改器。 将修改器添加到对象时&#xff0c;将使用“数量”整数值克隆网格n次&#xff0c;并使用X、Y和Z中的“缩放”、“旋转”和“移动”微调器控制每个网格的偏移。…

收卷锥度张力控制(Simulink建模)

1、收卷锥度张力控制功能块(支持5种锥度曲线) 收卷锥度张力控制功能块(支持5种锥度曲线)-CSDN博客文章浏览阅读340次。1、锥度张力控制张力锥度控制(收卷应用)-CSDN博客文章浏览阅读2.2k次。收卷、放卷应用系列文章可以参看下面的文章链接:变频器简单张力控制(线缆收放卷…

【星闪EBM-H63开发板】小熊派固件中心的使用

目录 引言 固件中心 定制固件 创建配置 透传固件的配置信息 串口配置 SLE无线射频配置 SLE连接配置 硬件配置 生成固件 下载和烧录 结语 引言 前面几天介绍了星闪EBM-H63开发板的情况&#xff0c;今天来试试固件中心。 固件中心 固件中心是小熊派提供的用于生成固…

从《Mixtral of Experts》开始讲讲MoE

MoE 在讲这篇论文前先来说说什么是MoE MoE是什么&#xff1f; MoE&#xff0c;全称Mixture of Experts&#xff0c;混合专家模型。MoE是大模型架构的一种&#xff0c;其核心工作设计思路是“术业有专攻”&#xff0c;即将任务分门别类&#xff0c;然后分给多个“专家”进行解…

Java打造智能语音陪聊软件?提升用户体验的新路径

在现在的日常生活中&#xff0c;大家做什么都会寻找一个“搭子”&#xff0c;例如“游戏搭子”&#xff0c;很多时候一时半会找不到就会很苦恼&#xff0c;就因此诞生了语音陪聊软件。然而Java作为一种广泛使用的编程语言&#xff0c;在开发高效、稳定的应用程序方面具有显著优…

js.轮转数组和旋转链表

这是两个相似的题型&#xff0c;一个是数组&#xff0c;另一个是链表。 链接&#xff1a;189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1:…

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西&#xff0c;最好的办法始终是把手打湿&#xff0c;整一个能够运行&#xff0c;可以实验的东西出来。 也只有在程序开发中&#xff0c;我们才能想一个魔法师而不是魔术师&#xff0c;我们真的能够创造一个东西。而且编…