博主介绍:专注于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多个项目源码+论文+演示视频~