基于springboot的家政服务管理系统(含源码+sql+视频导入教程+文档+PPT)

news2024/11/24 7:02:22

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

  基于springboot的家政服务管理系统1拥有三种角色

管理员:用户管理、服务管理、评价管理、预约管理、分配管理等

用户:登录注册、预约服务、取消服务、评价等

服务人员:填写服务进度

架构

1.1 背景描述

  家政管理系统是一种便捷而智能的解决方案,旨在帮助家庭管理家政服务、提高家政工作效率和优化家庭生活体验。该系统涵盖了家政人员管理、任务分配、服务记录、费用结算等功能,为家庭提供了全面的家政服务管理支持。家庭可以通过该系统轻松管理家政人员的信息,包括人员档案、工作经历、技能等,实现对家政人员的全面管理和监督。此外,家庭可以通过系统安排家政任务,制定任务计划,设定提醒功能,确保家政工作有条不紊地进行。家政人员可以通过系统查看任务安排、记录工作内容、提交工作报告,提高工作效率和服务质量。系统还支持费用结算功能,家庭可以方便地查看家政服务费用,并进行支付。家政管理系统的使用将提升家庭生活质量,简化家政服务管理流程,使家庭生活更加便捷、有序和舒适。

2、项目技术

后端框架:springboot、Mybatis

前端技术:html、VUE

2.1 springboot

  Spring Boot是由Pivotal团队提供的基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,使得开发者能快速搭建Spring项目。

2.2 mysql

  MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

  • JAVA版本:JDK1.8(最佳)
  • IDE类型:IDEA、Eclipse都可运行
  • 数据库类型:MySql(5.7、8.x版本都可)
  • tomcat版本:无需
  • maven版本:无限制
  • 硬件环境:Windows

4、功能截图+视频演示+文档目录

4.1 登录

登录

服务预约

服务详情、

4.2 管理员模块

管理员-服务评价

服务分配管理

管理员-预约管理

管理员-服务管理

管理员-服务人员管理

管理员-评价管理

4.3 用户模块

用户后台管理

4.4服务人员模块

服务人员功能列表

4.5文档目录

文档目录

5 、核心代码实现

5.1 配置代码


spring:
  datasource:
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/chuangmeng?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB
server:
  port: 521
redis:
  open: false
shiro:
  redis: false
logging:
  level:
    com:
      mh: debug
mybatis-plus:
  type-aliases-package: com.mh.*.entity
  mapper-locations: classpath*:/mapper/*/*.xml

5.2 其它核心代码


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

6 、获取方式

👇 大家点赞、收藏、关注、评论啦 👇🏻获取联系方式,后台回复关键词:家政👇🏻

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

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

相关文章

傅里叶分析之掐死教程(完整版)更新于2014.06.06

作 者&#xff1a;韩 昊 知 乎&#xff1a;Heinrich 微 博&#xff1a;花生油工人 知乎专栏&#xff1a;与时间无关的故事 谨以此文献给大连海事大学的吴楠老师&#xff0c;柳晓鸣老师&#xff0c;王新年老师以及张晶泊老师。 转载的同学请保留上面这句话&#xff0c;谢谢。如果…

许昌文旅助手:AI智能体在文旅领域的创新应用

哈哈&#xff0c;大家好&#xff0c;我是王帅旭&#xff0c;来自大禹智库&#xff0c;也是《实战AI智能体》一书的作者。今天&#xff0c;咱们就来聊聊一个超级有趣的案例——许昌文旅助手&#xff0c;看看AI智能体是如何在文旅领域大放异彩的&#xff01; 无限拓展的能力集&am…

大数据开发--1.3 Linux的常用命令大全

目录 一. 终端命令格式 命令格式 说明&#xff1a; 二. 显示文件列表命令 -ls 作用 格式 ls常用选项 案例 三. 目录操作命令 -pwd 作用 格式 案例 四. 目录操作命令 -cd 作用 格式 案例 五. 目录操作命令 -mkdir 作用 格式 案…

c语言中的有关“sizeof”和“strlen”在“数组”以及“指针”中应用的举例

数组名表示首元素地址 但是有两个意外 1. sizeof&#xff08;数组名&#xff09; 2. &数组名----这里的数组名表示整个数组&#xff0c;取出的是数组的地址。 &#xff08;1&#xff09;字符数组的sizeof &#xff08;2&#xff09;字符数组的strlen &#xff08;3&…

高远科技总经理张会斌受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 北京高远华信科技有限公司总经理张会斌先生受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“哪些AI工具与技术可以应用于项目管理”。大会将于10月26-27日在北京举办&#xff0c…

APP自动化搭建与应用

APP自动化环境搭建 用于做APP端UI自动化&#xff0c;adb连接手机设备。 需要的工具java编辑器&#xff1a;jdk、Android-sdk软件开发工具组、appium的python客户端、nodes.js、夜神模拟器、apk包、uiautomatorviewer 第一步&#xff1a;安装sdk&#xff0c;里面包含建立工具bu…

1.1K Star,跨平台开发者工具箱

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 在现代开发环境中&#xff0c;提升工作效率的工具不可或缺&#xff0…

如何在百度地图上添加自己店铺的位置?

随着互联网的快速发展&#xff0c;如今许多事都可以通过网络去解决&#xff0c;例如线上支付、线上购物、线上订餐等&#xff0c;包括日常出行&#xff0c;人们也可以依靠地图软件去规划路线&#xff0c;然后导航至目的地。其中&#xff0c;百度地图作为国内领先的地图导航平台…

手写mybatis之数据源池化技术实现

前言 在上一章节我们解析了 XML 中数据源配置信息&#xff0c;并使用 Druid 创建数据源完成数据库的操作。但其实在 Mybatis 中是有自己的数据源实现的&#xff0c;包括无池化的 UnpooledDataSource 实现方式和有池化的 PooledDataSource 实现方式。 你可以把池化技术理解为享…

如何将精益思维应用于智能音箱的产品设计?

在激烈的市场竞争中&#xff0c;如何让自家的智能音箱脱颖而出&#xff0c;成为用户心中的“智能生活伴侣”&#xff1f;答案或许就藏在“精益思维”这一理念之中。本文&#xff0c;天行健精益生产顾问将带大家深入探索&#xff0c;如何将精益思维巧妙应用于智能音箱的产品设计…

排序算法之你不得不知道的(1)

一、排序运用场景 &#xff08;1&#xff09;排序概念&#xff1a;将一组杂乱无章的数据按照一定的规律&#xff08;升序或降序&#xff09;组织起来。 &#xff08;2&#xff09;运用场景&#xff1a; &#xff08;1&#xff09;淘宝、支付宝、京东等购物平台的价格排序、质…

vue的h函数和template语法如何混用?

前言&#xff1a; h函数定义&#xff1a; 我们编写的代码转化为真正的dom时&#xff0c;首先会先转换为VNode,然后多个Vnode进行结合起来转化为VDOM&#xff0c;最后VDOM才渲染成真实的DOM。在 Vue.js 中&#xff0c;h 函数是 createElement 的别名&#xff0c;它是 Vue 用来创…

如何使用ssm实现基于vue的学生宿舍设备报修管理系统的设计与实现+vue

TOC ssm804基于vue的学生宿舍设备报修管理系统的设计与实现vue 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大&#xff0c;人为计算方面才是一个巨大的短板&#xff0c;所以发明了各种计算设备&#xff0c;从结绳记事&#xff0c;到算筹&#xff0c;以及算盘&#x…

基于java SpringBoot和Vue校园求职招聘系统设计

摘要 随着信息技术的迅猛发展&#xff0c;基于Java Spring Boot和Vue的校园求职招聘系统设计成为了解决高校就业难问题的重要手段。本文旨在探讨如何利用Java Spring Boot框架构建后端服务&#xff0c;以及使用Vue.js进行前端开发&#xff0c;从而创建一个高效、易用且功能全面…

【JavaScript】JS核心语法及函数

文章目录 一、初识 JS二、JS 核心语法2-1 变量2-2 数据类型typeofString 对象 2-3 数组创建数组常用属性方法 2-4 运算符号加号运算符 减号运算符 -比较运算符逻辑运算符 2-5 控制语句for-inbreakcontinue 三、函数3-1 常用系统函数3-2 自定义函数函数声明函数调用 3-3 创建对象…

RISC-V知识点目录

分支预测 分支预测概述https://blog.csdn.net/zhangshangjie1/article/details/136947089?sharetypeblogdetail&sharerId136947089&sharereferPC&sharesourcezhangshangjie1&spm1011.2480.3001.8118分支指令的方向预测https://blog.csdn.net/zhangshangjie1/a…

高效微调理解(prompt-tuning,p-tuning v1,p-tuning v2,lora)

高效微调&#xff08;prompt-tuning&#xff0c;p-tuning v1&#xff0c;p-tuning v2&#xff0c;lora&#xff09; 1.prompt-tuning&#xff1a; 例子理解&#xff1b;保持原本模型参数不变&#xff0c;通过训练提示词的参数调整prompt&#xff0c;使其与下游任务匹配。 例子…

HCIP-HarmonyOS Application Developer 习题(八)

&#xff08;填空&#xff09;1、声明式开发范式中使用装饰器( )装饰的结构体具有组件化能力&#xff0c;能够成为一个自定义组件。 答案&#xff1a;component 分析&#xff1a;component 装饰的struct表示该结构体具有组件化能力&#xff0c;能够成为一个独立的组件&#xff…

IT行业哪些证书可以应对就业难?

作为IT运维专业人士&#xff0c;持续增强自身的专业技能和知识是提升职场竞争力、实现升职加薪的关键途径。 下面为大家搜罗了5本适合IT运维人员考取的证书。 一、ITSS认证 ITSS&#xff0c;即信息技术服务标准&#xff0c;是一套涵盖了IT服务领域的标准库和方法论。 这是我…

企业升级首选:Windows 11 24H2 LTSC 纯净企业版!

今日&#xff0c;系统之家小编给大家带来最新的Windows11 24H2 LTSC 2024 纯净企业版下载&#xff0c;该版本系统是离线制作而成&#xff0c;各种各样的捆绑软件也都删除了&#xff0c;确保系统是安全无毒&#xff0c;还具备出色的稳定性与安全性&#xff0c;非常适合企业用户办…