基于Java+SpringBoot+vue的社区维修平台设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

news/2024/10/31 7:33:41/

 博主介绍:专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

Java项目精品实战案例(300套)

目录

一、效果演示

二、前言介绍

三、主要技术

四、系统设计(部分)

4.1、主要功能模块设计         

4.2、系统登录设计

五、运行截图

5.1、管理员功能模块

5.1.1、个人信息

5.1.2、住户管理

5.1.3、社区公告管理

5.1.4、维修工管理

5.1.5、接单信息管理

5.1.6、订单信息管理

5.1.7、在线沟通管理

5.1.8、举报信息管理

5.2、住户前台功能模块

5.2.1、个人中心

5.2.2、留言反馈

5.2.3、维修工

5.2.4、新闻资讯

5.2.5、维修订单

5.2.6、接单界面

5.2.7、交流界面

5.3、住户后台功能模块

5.3.1、个人信息

5.3.2、维修订单管理

5.3.3、接单信息管理

5.3.4、订单信息管理

5.3.5、在线沟通管理

5.3.6、举报信息管理

5.4、维修员前台功能模块

5.4.1、个人中心

5.4.2、新闻资讯

5.4.3、维修订单

5.4.4、 接单界面

5.4.5、 交流界面

5.5、维修员后台功能模块

5.5.1、接单信息

5.5.2、订单信息管理

5.5.3、在线沟通管理

六、数据库设计(部分)

七、代码参考

八、源码获取


一、效果演示

基于Springboot+vue的社区维修平台演示视频

二、前言介绍

21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。

三、主要技术

技术名作用
SpringBoot后端框架
Vue前端框架
MySQL数据库

四、系统设计(部分)

4.1、主要功能模块设计         

4.2、系统登录设计

 

五、运行截图

5.1、管理员功能模块

管理员通过后台登录页面,可以进行填写用户名和密码,等信息,输入无误后进行登录操作,如图5-1所示

管理员登录成功后进入到系统操作界面,可以对个人中心、住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等功能模块进行相对应操作。

管理员通过个人中心可以获取修改密码和个人信息两个子模块

5.1.1、个人信息

图5-2个人信息页面

5.1.2、住户管理

图5-3住户管理页面

5.1.3、社区公告管理

图5-4社区公关管理页面

5.1.4、维修工管理

图5-5维修工页面

5.1.5、接单信息管理

图5-6接单信息管理

5.1.6、订单信息管理

图5-7订单信息管理页面

5.1.7、在线沟通管理

图5-8在线沟通管理界面图

5.1.8、举报信息管理

图5-9举报信息管理页面

5.2、住户前台功能模块

维修员通过后台登录页面,可以进行填写用户名和密码,等信息,输入无误后进行登录操作,如图5-10所示

图5-10维修员登录页面

5.2.1、个人中心

图5-12个人中心页面

5.2.2、留言反馈

图5-13留言反馈界面图

5.2.3、维修工

图5-14维修工详情界面图

图5-15维修工举报界面图

5.2.4、新闻资讯

图5-16新闻资讯页面

5.2.5、维修订单

图5-17维修订单界面图 

5.2.6、接单界面

图5-18接单界面图

5.2.7、交流界面

图5-19交流界面图 

5.3、住户后台功能模块

用户通过用户登录页面可以填写用户名和密码,等信息进行登录操作,用户登录成功后,进入用户后台系统页面可以查看个人中心、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理模块等功能模块,进行相对应操作。如图5-20所示。

 

图5-20用户系统界面图

用户通过点击个人中心可以进行查看修改密码、个人信息两个子模块

5.3.1、个人信息

图5-21个人信息页面

5.3.2、维修订单管理

图5-22维修订单界面图 

图5-23添加维修订单界面图

5.3.3、接单信息管理

图5-24接单信息管理界面图

5.3.4、订单信息管理

图5-26订单信息管理界面图

5.3.5、在线沟通管理

图5-27在线沟通界面图

5.3.6、举报信息管理

图5-28在线沟通界面图 

5.4、维修员前台功能模块

维修员通过后台登录页面,可以进行填写用户名和密码,等信息,输入无误后进行登录操作,如图5-29所示

图5-30维修员登录页面

维修工通过登录进入到网站页面可以进行查看首页的社区公告、维修工、维修订单、新闻资讯、留言反馈、个人中心、后台管理等信息,进行查看社区维修的相对应操作。如图5-31所示。

图5-31维修员系统页面

5.4.1、个人中心

图5-32个人中心页面

5.4.2、新闻资讯

图5-34新闻资讯页面

5.4.3、维修订单

图5-35维修订单界面图

5.4.4、 接单界面

图5-36接单界面图

5.4.5、 交流界面

图5-37交流界面图

5.5、维修员后台功能模块

维修工通过登录页面可以填写用户名和密码,等信息进行登录操作,维修工登录成功后,进入用户后台系统页面可以查看个人中心、接单信息管理、订单信息管理、在线沟通管理模块等功能模块,进行相对应操作。

5.5.1、接单信息

图5-38接单信息管理界面图

图5-39维修订单界面图

5.5.2、订单信息管理

图5-40订单信息管理界面图

5.5.3、在线沟通管理

图5-41在线沟通界面图

 

六、数据库设计(部分)

数据模型中的实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如,公司中的每个员工,家里中的每个家具。

本系统的E-R图如下图所示:

1、用户信息实体图如图4-4所示:

图4-4用户信息实体图

公告信息实体E-R图,如图4.5所示。

 图4.5公告信息E-R图

七、代码参考

package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
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.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;/*** 通用接口*/
@RestController
public class CommonController{@Autowiredprivate CommonService commonService;@Autowiredprivate ConfigService configService;private static AipFace client = null;private static String BAIDU_DITU_AK = null;@RequestMapping("/location")public R location(String lng,String lat) {if(BAIDU_DITU_AK==null) {BAIDU_DITU_AK = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")).getValue();if(BAIDU_DITU_AK==null) {return R.error("请在配置管理中正确配置baidu_ditu_ak");}}Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);return R.ok().put("data", map);}/*** 人脸比对* * @param face1 人脸1* @param face2 人脸2* @return*/@RequestMapping("/matchFace")public R matchFace(String face1, String face2) {if(client==null) {/*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();String token = BaiduUtil.getAuth(APIKey, SecretKey);if(token==null) {return R.error("请在配置管理中正确配置APIKey和SecretKey");}client = new AipFace(null, APIKey, SecretKey);client.setConnectionTimeoutInMillis(2000);client.setSocketTimeoutInMillis(60000);}JSONObject res = null;try {File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);String img1 = Base64Util.encode(FileUtil.FileToByte(file1));String img2 = Base64Util.encode(FileUtil.FileToByte(file2));MatchRequest req1 = new MatchRequest(img1, "BASE64");MatchRequest req2 = new MatchRequest(img2, "BASE64");ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();requests.add(req1);requests.add(req2);res = client.match(requests);System.out.println(res.get("result"));} catch (FileNotFoundException e) {e.printStackTrace();return R.error("文件不存在");} catch (IOException e) {e.printStackTrace();} return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));}/*** 获取table表中的column列表(联动接口)* @param table* @param column* @return*/@IgnoreAuth@RequestMapping("/option/{tableName}/{columnName}")public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);if(StringUtils.isNotBlank(level)) {params.put("level", level);}if(StringUtils.isNotBlank(parent)) {params.put("parent", parent);}List<String> data = commonService.getOption(params);return R.ok().put("data", data);}/*** 根据table中的column获取单条记录* @param table* @param column* @return*/@IgnoreAuth@RequestMapping("/follow/{tableName}/{columnName}")public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);params.put("columnValue", columnValue);Map<String, Object> result = commonService.getFollowByOption(params);return R.ok().put("data", result);}/*** 修改table表的sfsh状态* @param table* @param map* @return*/@RequestMapping("/sh/{tableName}")public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {map.put("table", tableName);commonService.sh(map);return R.ok();}/*** 获取需要提醒的记录数* @param tableName* @param columnName* @param type 1:数字 2:日期* @param map* @return*/@IgnoreAuth@RequestMapping("/remind/{tableName}/{columnName}/{type}")public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("table", tableName);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));}}int count = commonService.remindCount(map);return R.ok().put("count", count);}/*** 单列求和*/@IgnoreAuth@RequestMapping("/cal/{tableName}/{columnName}")public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);Map<String, Object> result = commonService.selectCal(params);return R.ok().put("data", result);}/*** 分组统计*/@IgnoreAuth@RequestMapping("/group/{tableName}/{columnName}")public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);List<Map<String, Object>> result = commonService.selectGroup(params);return R.ok().put("data", result);}/*** (按值统计)*/@IgnoreAuth@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("xColumn", xColumnName);params.put("yColumn", yColumnName);List<Map<String, Object>> result = commonService.selectValue(params);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");for(Map<String, Object> m : result) {for(String k : m.keySet()) {if(m.get(k) instanceof Date) {m.put(k, sdf.format((Date)m.get(k)));}}}return R.ok().put("data", result);}}

八、源码获取

大家点赞、收藏、关注、评论啦 、查看文章结尾👇🏻获取联系方式👇🏻

精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例(300套)

私信我即可打包获取300多个项目源码+论文+演示视频~

​​​​


http://www.ppmy.cn/news/40674.html

相关文章

C++ 枚举(enum)数据结构相关知识

enum数据结构 枚举&#xff08;enumeration&#xff09;是C中的一种用户自定义数据类型&#xff0c;它允许为一组整数赋予有意义的名称。枚举类型的主要目的是提高代码的可读性和可维护性。 枚举类型用关键字enum定义。以下是一个简单的枚举类型示例&#xff1a; enum Color {…

磁盘调度算法习题

注意&#xff08;不论被访问的下一个磁道号是几&#xff0c;计算移动距离都是&#xff1a;大数减小数&#xff09; 一&#xff0e;磁盘共有200个柱面(0-199)&#xff0c;它刚刚从92号磁道移到98号随道完成读写&#xff0c;假设此时系统中等待访问磁盘盘的磁道序列为190&#xf…

Python 判断闰年、Python 平方根

Python 判断闰年 以下实例用于判断用户输入的年份是否为闰年&#xff1a; # -*- coding: UTF-8 -*-# Filename : test.py # author by : www.w3cschool.cnyear int(input("输入一个年份: ")) if (year % 4) 0:if (year % 100) 0:if (year % 400) 0:print("…

REVA首届世界巡回交流会——澳门站 亚太峰会!

近日金融相关媒体报道:REVA亚太峰会将定于2023年5月8日—5月10日在澳门举行为期三天的会议交流,本次峰会由REVA主办,这一次的亚太峰会是疫情放开后国内外互联网市场交流的良好契机,也加速推动着国家和地区间互联网的经济、技术交流与合作。此次首战澳门亚太峰会会议,将拉开Reva…

Python结合OpenAI的GPT-3 API做数据分析

本文使用了OpenAI的GPT-3 API来生成数据分析报告。GPT-3是一种基于深度学习的自然语言处理模型&#xff0c;可以生成高质量的自然语言文本。在本示例中&#xff0c;我使用GPT-3来分析给定的CSV文件中的数据&#xff0c;并生成相应的报告。 以下是完整的Python代码示例&#xf…

使用Comparator 对List<Map>格式不严格字段排序

public static void main( String[] args ){String col1 "time";String col2 "num";//双数据源的集合ArrayList<Map> lists produceData(col1, col2);//对双数据源集合惊醒排序 这里2个字段的灵活配置升序降序SortBy2Cols(lists,col1,OrderType.D…

第九章 且慢,弄清索引之阻碍让SQL飞

参考《收获&#xff0c;不止SQL优化》作者: 梁敬彬 / 梁敬弘 一、 索引的不足之处 二、 索引的取舍 三、 结合案例 四、 习题 习题1&#xff1a; &#xff08;1&#xff09; SQL写法导致&#xff1a;列上加函数、列隐式类型转换、HINT固定全表扫描 &#xff08;2&#xff09; S…

OpenCV实战(14)——图像线条提取

OpenCV实战(14)——图像线条提取 0. 前言1. 检测图像轮廓1.1 图像轮廓1.2 使用 Canny 算子检测图像轮廓2. 使用霍夫变换检测图像中的线条2.1 线条的表示2.2 霍夫变换检测直线2.3 概率霍夫变换2.4 霍夫变换与概率霍夫变换对比2.5 霍夫变换检测圆3. 完整代码小结系列链接0. 前言…