大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。
💞当前专栏:Java毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
开发环境
开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7
数据库工具:Navicat12
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
演示视频
jspssm511Springboot的社区维修平台
源码下载地址:
https://download.csdn.net/download/m0_46388260/87987385
论文目录
【如需全文请按文末获取联系】
目录
一、项目简介
社区维修平台主要的模块包括基本住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理模块等功能。管理员对后台对有相应的操作权限。系统中管理员为主要是为了安全有效地存储和管理及维护系统的各类信息,可以对系统进行管理与更新维护。
二、系统设计
2.1软件功能模块设计
模块包括主界面,住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等进行相应的操作。
2.2数据库设计
1、用户信息实体图如图4-4所示:
公告信息实体E-R图,如图4.5所示。
接单信息管理E-R图,如图4.6所示。
订单信息管理E-R图,如图4.7所示。
三、系统项目部分截图
3.1管理员功能模块
管理员通过后台登录页面,可以进行填写用户名和密码,等信息,输入无误后进行登录操作,如图5-1所示
管理员登录成功后进入到系统操作界面,可以对个人中心、住户管理、社区公告管理、维修工管理、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理、留言板管理、系统管理等功能模块进行相对应操作。
管理员通过个人中心可以获取修改密码和个人信息两个子模块,通过个人信息列表可以进行查看管理员的个人信息并进行查看修改操作,如图5-2所示。
住户管理:管理员通过列表查看用户名、密码、住户姓名、性别、头像、手机号等信息,管理员可以进行修改或查看删除操作,也可以通过点击输入用户名可以进行搜索公告,如图5-3所示。
接单信息管理:住户通过接单信息列表可以进行查看订单编号、物品名称、维修类型、用户名、住户姓名、接单内容、接单日期、账号、姓名、电话等信息,进行查看详情、修改或删除操作,通过输入订单编号进行查询操作,如图5-6所示。
举报信息管理:通过列表可以获取标题、账号、姓名、举报内容、举报日期、用户名、住户姓名、审核回复、审核状态、审核等信息,进行查看详情或修改删除操作,并且通过输入标题、姓名进行搜索操作,如图5-9所示。
3.2住户前台功能模块
维修员通过后台登录页面,可以进行填写用户名和密码,等信息,输入无误后进行登录操作,如图5-10所示
个人中心:维修员通过个人中心页面可以进行输入账号、密码、姓名、性别、密码、等级、上传图片、身份证、电话等信息,进行更新信息或退出操作。如图5-11所示。
维修订单:通过点击维修订单可以进行查看维修订单的物品名称、维修类型、发布日期、用户名、住户姓名、手机号、地址等信息,进行查看、接单,在线交流,如图5-17所示。维修员通过点击接单进入接单页面可以进行查看物品名称、维修类型、用户名、住户姓名、接单内容、接单日期、账号、姓名、电话等信息,进行提交或重置操作,如图5-18所示。维修员通过点击交流可以进行页面进行在线查看标题、用户名、住户姓名、进行输入聊天内容、日期等信息,进行在线交流操作,如图5-19所示。
3.3住户后台功能模块
用户通过用户登录页面可以填写用户名和密码,等信息进行登录操作,用户登录成功后,进入用户后台系统页面可以查看个人中心、维修订单管理、接单信息管理、订单信息管理、在线沟通管理、举报信息管理模块等功能模块,进行相对应操作。如图5-20所示。
接单信息管理:住户通过接单信息列表可以进行查看订单编号、物品名称、维修类型、用户名、住户姓名、接单内容、接单日期、账号、姓名、电话等信息,进行查看详情或通过输入订单编号进行查询操作,如图5-24所示。
3.4维修员前台功能模块
维修工通过登录进入到网站页面可以进行查看首页的社区公告、维修工、维修订单、新闻资讯、留言反馈、个人中心、后台管理等信息,进行查看社区维修的相对应操作。如图5-31所示。
四、部分核心代码
4.1 用户部分
package com.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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 org.springframework.web.multipart.MultipartFile;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;
/**
* 上传文件映射表
*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
@Autowired
private ConfigService configService;
/**
* 上传文件
*/
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
/**
* 下载文件
*/
@IgnoreAuth
@RequestMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam String fileName) {
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = new File(upload.getAbsolutePath()+"/"+fileName);
if(file.exists()){
/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
getResponse().sendError(403);
}*/
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
} catch (IOException e) {
e.printStackTrace();
}
return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
获取源码或论文
如需对应的论文或源码,也可以下方微信联系我