基于SpringBoot2+vue2的公寓报修管理系统
1. 参考文章https://blog.xiaobias.com/article/152. 项目简介公寓报修管理系统基于Spring Boot框架与Vue前端技术栈开发旨在为公寓住户、维修人员及管理员提供一个线上报修、维修分配、维修记录跟踪及评价反馈的综合管理平台。系统支持住户在线提交维修申请、查看维修进度、支付维修费用并给予评价维修人员可接收分配任务、申请请假或改派管理员则负责基础数据配置房间信息、物品信息、维修分类等、维修申请的审核与分配、改派申请的审批以及请假信息管理等功能。系统通过角色权限控制管理员、住户、维修人员实现不同用户的操作隔离与数据安全。3. 技术栈层面技术后端框架Spring Boot 2.2.2.RELEASE持久层MyBatis Plus 2.3 MyBatis Spring Boot Starter 2.1.1数据库MySQL 5.7.31安全与认证Apache Shiro 1.3.2 自定义Token拦截器前端框架Vue 2.x Element UI路由Vue Router (hash模式)HTTP客户端Axios工具库Hutool、Fastjson、Apache Commons Lang3、POI (Excel)邮件服务Spring Boot Starter Mail (QQ邮箱SMTP)4. 详细介绍4.1 功能模块系统根据用户角色分为三个主要端4.1.1 管理员端住户管理对住户账号进行增删改查维护住户基本信息账号、姓名、手机、身份证、邮箱等。房间信息管理维护公寓房间的编号、名称、类型、位置并关联住户账号及住户信息。维修人员管理管理维修人员账号、姓名、联系电话、身份证号及擅长的维修分类。维修分类管理定义维修的类别如电工、水工等。物品信息管理登记维修相关物品如配件、工具的编号、名称、数量及详情。维修申请管理查看住户提交的维修申请进行审核通过/驳回审核通过后可执行“维修分配”操作。维修分配管理将已审核的维修申请指派给具体的维修人员记录分配时间。改派申请管理审批维修人员提交的改派申请确认后变更维修任务的执行人。请假信息管理审核维修人员的请假申请支持导入/导出功能。维修记录管理查看所有已完成维修任务的记录含费用、结果支持导出。维修评价管理查看住户对维修服务的评价内容。4.1.2 住户端房间信息查看查看本人所居住房间的详细信息。维修申请在线提交维修申请填写物品名称、维修分类、维修内容、是否优先、要求备注并上传图片。维修记录查看与支付查看自己的维修历史记录对于待支付的维修记录可进行在线支付。维修评价对已完成维修的服务进行评价评分/文字评价。4.1.3 维修人员端维修分配查看查看管理员分配给自己的维修任务可发起“改派申请”或查看维修费用缴纳情况。改派申请若无法执行任务可提交改派申请并说明原因。请假信息提交请假申请请假日期、天数、原因并查看审核结果。维修记录查看查看自己完成的历史维修任务。维修评价查看查看住户对自己服务的评价。4.2 核心业务逻辑报修流程住户填写维修申请 → 管理员审核通过 → 管理员分配维修人员 → 维修人员上门维修 → 维修人员填写维修结果及费用 → 生成维修记录 → 住户支付费用 → 住户评价。改派流程维修人员提交改派申请 → 管理员审核 → 若同意系统重新分配原维修申请给其他维修人员原分配记录保留但任务转移。请假流程维修人员提交请假申请 → 管理员审核 → 请假期间系统可能不分配新任务。用户注册住户通过邮箱验证码完成注册系统使用QQ邮箱发送验证码。权限控制所有接口除登录、注册、部分公开查询外均需携带Token访问Token由后端生成并存入token表有效期1小时。4.3 数据库表结构主要表zhuhu住户表账号、密码、姓名、手机、身份证、邮箱等weixiurenyuan维修人员表账号、密码、姓名、联系电话、维修分类等fangjianxinxi房间信息表房间号、名称、类型、位置、关联住户weixiushenqing维修申请表维修编号、物品名称、分类、内容、图片、是否优先、要求备注、房间信息、住户信息、审核状态等weixiufenpei维修分配表关联维修申请记录分配的维修人员及分配时间weixiujilu维修记录表包含维修结果、费用、是否支付等weixiupingjia维修评价表关联维修记录存储评价内容及时间gaipaishenqing改派申请表申请原因、审核状态qingjiaxinxi请假信息表请假日期、天数、原因、审核状态emailregistercode邮箱验证码表存储注册用验证码users管理员表用户名、密码、角色token用户Token表5. 部分代码5.1 登录Token生成TokenServiceImpl.javaOverridepublicStringgenerateToken(Longuserid,Stringusername,StringtableName,Stringrole){TokenEntitytokenEntitythis.selectOne(newEntityWrapperTokenEntity().eq(userid,userid).eq(role,role));StringtokenCommonUtil.getRandomString(32);CalendarcalCalendar.getInstance();cal.setTime(newDate());cal.add(Calendar.HOUR_OF_DAY,1);// 有效期1小时if(tokenEntity!null){tokenEntity.setToken(token);tokenEntity.setExpiratedtime(cal.getTime());this.updateById(tokenEntity);}else{this.insert(newTokenEntity(userid,username,tableName,role,token,cal.getTime()));}returntoken;}5.2 维修申请控制器WeixiushenqingController.java分页查询RequestMapping(/page)publicRpage(RequestParamMapString,Objectparams,WeixiushenqingEntityweixiushenqing,HttpServletRequestrequest){StringtableNamerequest.getSession().getAttribute(tableName).toString();if(tableName.equals(zhuhu)){weixiushenqing.setZhuhuzhanghao((String)request.getSession().getAttribute(username));}EntityWrapperWeixiushenqingEntityewnewEntityWrapperWeixiushenqingEntity();PageUtilspageweixiushenqingService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,weixiushenqing),params),params));returnR.ok().put(data,page);}5.3 前端路由配置router-static.js片段importweixiurenyuanfrom/views/modules/weixiurenyuan/listimportweixiushenqingfrom/views/modules/weixiushenqing/list// ... 省略其他导入constroutes[{path:/index,name:首页,component:Index,children:[{path:/,name:首页,component:Home},{path:/updatePassword,name:修改密码,component:UpdatePassword},{path:/weixiurenyuan,name:维修人员,component:weixiurenyuan},{path:/weixiushenqing,name:维修申请,component:weixiushenqing},// ... 更多子路由]}]5.4 邮箱验证码发送ZhuhuController.javaIgnoreAuthRequestMapping(/sendemail)publicRsendemail(RequestParamStringemail){StringcodeCommonUtil.getRandomNumber(4);EmailregistercodeEntityemailregistercodenewEmailregistercodeEntity();emailregistercode.setCode(code);emailregistercode.setRole(用户);emailregistercode.setEmail(email);emailregistercodeService.insert(emailregistercode);CommonUtil.sendEmail(email,用户注册,您的注册验证码是【code】请不要把验证码泄漏给其他人如非本人请勿操作。);returnR.ok();}5.5 前端菜单权限配置menu.js片段constmenu{list(){return[{roleName:管理员,backMenu:[...]},{roleName:住户,backMenu:[{child:[{menu:房间信息,tableName:fangjianxinxi}]},{child:[{menu:维修申请,tableName:weixiushenqing}]},{child:[{menu:维修记录,tableName:weixiujilu,buttons:[查看,支付,评价]}]},{child:[{menu:维修评价,tableName:weixiupingjia}]}]},{roleName:维修人员,backMenu:[...]}]}}6. 部分截图7. 项目总结功能完整性系统覆盖了公寓报修管理的全生命周期从住户申请、管理员审核派单、维修人员执行、费用支付到最终评价流程清晰各角色分工明确。技术实践性采用主流Spring Boot MyBatis Plus Vue技术栈实现了前后端分离使用Token进行无状态认证集成邮箱服务用于注册验证提供百度AI人脸比对接口预留具备Excel导入导出、ECharts图表、地图API等扩展能力。权限控制通过Shiro 自定义拦截器实现了基于角色和URL的访问控制且菜单权限使用前端配置文件menu.js动态渲染支持按钮级权限判断。数据库设计表结构规范主键使用自增或时间戳随机数关键字段如维修编号唯一索引使用addtime作为自动创建时间支持审核状态字段sfsh及回复字段。可维护性代码分层清晰Controller、Service、Dao、EntityMyBatis Plus简化了CRUD通用工具类CommonUtil、MPUtil、PageUtils等提高开发效率前端组件化文件上传、富文本编辑器、Excel上传等便于复用。总体而言该项目是一个较为完整的企业级报修管理系统适用于学习或二次开发具备实际部署的可行性。

相关新闻

最新新闻

日新闻

周新闻

月新闻