微信小程序家政预约系统+后台管理系统
博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌
项目名称
微信小程序家政预约系统+后台管理系统
视频效果
https://www.bilibili.com/video/BV1yU4y1D7uD/
系统说明
家政服务网站系统是面向广大家政求职者和家政需求客户开发的系统,完成用户在前台页面的信息浏览、注册操作以及管理员在后台的信息匹配工作,本系统的主要用户角色分为:后台管理员、普通会员、员工、客户。 具体设计方案为:
前台的页面包括:
首页:主要包括用户登录入口,新闻信息显示入口,生活小知识信息显示入口,公司简单介绍以及相关的友情链接等。
家政求职:这是一个提供给家政求职人员的页面,且只有拥有普通会员身份的用户才拥有访问权限,其主要内容是家政求职人员信息的录入和注册,写入的数据直接与后台数据库连接,方便管理员管理。
服务员展示:展示的是本公司的员工风采。
家政需求:这是一个提供给客户的页面,各种用户都可以直接访问此页面,其主要内容是客户信息的录入和注册,写入的数据直接与后台数据库连接,方便管理员管理。
职员信息修改:这是仅提供给已注册且未被分配工作的员工提供的页面,用于员工求职信息变动以后作修改用,也可以是重新发布求职信息。
分类信息:主要是关于本公司的一些招聘、工作提供、招商合作信息。
服务申请:又包括服务信息修改和服务信息再发布。两者的区别是服务信息修改是用在客户未被分配员工时,服务信息再发布是指客户已安排工作的情况下还需要新的需求信息。这样设计两个页面的目的是保证客户编号与客户实际信息一致但又能实现不同的需求,这里是用客户序列号与客户编号共同标识实现。
网站介绍:主要是关于本公司具体的联系方式及网站地址信息。
访客留言:一个供网站会员发表心情日志,信息交流的平台。
后台的设计主要是管理员的各种管理,将在后面的功能模块管理员功能中详细讲解。
4.2系统功能模块划分
2.员工:必须是本网站的普通会员,可以浏览页面信息,登录注册发布求职信息,管理员根据其注册信息分配最佳工作。
3.客户:可以浏览页面信息,登录注册发布家政需求信息,管理员根据其发布的需求分配最合适的员工。
超级管理员:名称为Tsoft的管理员。主要实现的功能是:实现对普通管理员的增加、删除、修改;拥有普通管理员的所有权限。
普通管理员:主要实现的功能:浏览客户、员工信息,修改自身信息;对企业文化、生活小常识、新闻、分类信息等实现增加、删除、修改功能;实现对客户、员工信息的增加、删除、修改,实现员工与客户之间的匹配管理。
新闻管理:实现对公司新闻、行业新闻的浏览、增加、删除、更新等。
分类信息管理:实现对家政供应、家政需求、家政求职、家政培训、招商合作等信息的浏览、增加、删除、更新等。
环境需要
技术栈
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript+jQuery
使用说明
运行截图
用户管理控制层:
package com.houserss.controller;import javax.servlet.http.HttpSession;import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.pojo.User;
import com.houserss.service.IUserService;
import com.houserss.service.impl.UserServiceImpl;
import com.houserss.util.MD5Util;
import com.houserss.util.TimeUtils;
import com.houserss.vo.DeleteHouseVo;
import com.houserss.vo.PageInfoVo;/*** Created by admin*/
@Controller
@RequestMapping("/user/")
public class UserController {@Autowiredprivate IUserService iUserService;/*** 用户登录* @param username* @param password* @param session* @return*/@RequestMapping(value = "login.do",method = RequestMethod.POST)@ResponseBodypublic ServerResponse<User> login(User user,String uvcode, HttpSession session){String code = (String)session.getAttribute("validationCode");if(StringUtils.isNotBlank(code)) {if(!code.equalsIgnoreCase(uvcode)) {return ServerResponse.createByErrorMessage("验证码不正确");}}ServerResponse<User> response = iUserService.login(user.getUsername(),user.getPassword());if(response.isSuccess()){session.setAttribute(Const.CURRENT_USER,response.getData());}return response;}}
管理员管理控制层:
package com.sxl.controller.admin;import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import com.sxl.controller.MyController;@Controller("adminController")
@RequestMapping(value = "/admin")
public class AdminController extends MyController {@RequestMapping(value = "/index")public String frame(Model model, HttpServletRequest request)throws Exception {return "/admin/index";}@RequestMapping(value = "/main")public String main(Model model, HttpServletRequest request)throws Exception {return "/admin/main";}@RequestMapping(value = "/tj1")public String tj1(Model model, HttpServletRequest request)throws Exception {String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";List<Map> list = db.queryForList(sql);model.addAttribute("list", list);System.out.println(list);return "/admin/tj/tj1";}@RequestMapping(value = "/password")public String password(Model model, HttpServletRequest request)throws Exception {return "/admin/password";}@RequestMapping(value = "/changePassword")public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map admin = getAdmin(request);if(oldPassword.equals(admin.get("password").toString())){String sql="update t_admin set password=? where id=?";db.update(sql, new Object[]{newPassword,admin.get("id")});return renderData(true,"1",null);}else{return renderData(false,"1",null);}}
}
修改密码业务逻辑:
package com.sxl.controller.admin;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import com.sxl.controller.MyController;@Controller("userController")
@RequestMapping(value = "/user")
public class UserController extends MyController {@RequestMapping(value = "/index")public String frame(Model model, HttpServletRequest request)throws Exception {return "/user/index";}@RequestMapping(value = "/main")public String main(Model model, HttpServletRequest request)throws Exception {return "/user/main";}@RequestMapping(value = "/password")public String password(Model model, HttpServletRequest request)throws Exception {return "/user/password";}@RequestMapping(value = "/changePassword")public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map user = getUser(request);if(oldPassword.equals(user.get("password").toString())){String sql="update t_user set password=? where id=?";db.update(sql, new Object[]{newPassword,user.get("id")});return renderData(true,"1",null);}else{return renderData(false,"1",null);}}@RequestMapping(value = "/mine")public String mine(Model model, HttpServletRequest request)throws Exception {
Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine";}@RequestMapping(value = "/mineSave")public ResponseEntity<String> mineSave(Model model,HttpServletRequest request,Long id,String username,String password,String name,String gh,String mobile) throws Exception{int result = 0;String sql="update t_user set name=?,gh=?,mobile=? where id=?";result = db.update(sql, new Object[]{name,gh,mobile,id});if(result==1){return renderData(true,"操作成功",null);}else{return renderData(false,"操作失败",null);}}}
通用管理模块:
package com.sxl.controller;import java.nio.charset.Charset;
import java.util.Locale;
import java.util.ResourceBundle;import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang.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 com.sxl.util.JacksonJsonUtil;
import com.sxl.util.StringUtil;
import com.sxl.util.SystemProperties;public class BaseController {public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天@Autowiredprivate SystemProperties systemProperties;/*** 获得配置文件内容*/public String getConfig(String key) {return systemProperties.getProperties(key);}/*** 返回服务器地址 like http://192.168.1.1:8441/UUBean/*/public String getHostUrl(HttpServletRequest request) {String hostName = request.getServerName();Integer hostPort = request.getServerPort();String path = request.getContextPath();if (hostPort == 80) {return "http://" + hostName + path + "/";} else {return "http://" + hostName + ":" + hostPort + path + "/";}}/**** 获取当前的website路径 String*/public static String getWebSite(HttpServletRequest request) {String returnUrl = request.getScheme() + "://"+ request.getServerName();if (request.getServerPort() != 80) {returnUrl += ":" + request.getServerPort();}returnUrl += request.getContextPath();return returnUrl;}/*** 初始化HTTP头.* * @return HttpHeaders*/public HttpHeaders initHttpHeaders() {HttpHeaders headers = new HttpHeaders();MediaType mediaType = new MediaType("text", "html",Charset.forName("utf-8"));headers.setContentType(mediaType);return headers;}/*** 返回 信息数据* * @param status* @param msg* @return*/public ResponseEntity<String> renderMsg(Boolean status, String msg) {if (StringUtils.isEmpty(msg)) {msg = "";}String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,initHttpHeaders(), HttpStatus.OK);return responseEntity;}/*** 返回obj数据* * @param status* @param msg* @param obj* @return*/public ResponseEntity<String> renderData(Boolean status, String msg,Object obj) {if (StringUtils.isEmpty(msg)) {msg = "";}StringBuffer sb = new StringBuffer();sb.append("{");sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");sb.append("}");ResponseEntity<String> responseEntity = new ResponseEntity<String>(sb.toString(), initHttpHeaders(), HttpStatus.OK);return responseEntity;}/**** 获取IP(如果是多级代理,则得到的是一串IP值)*/public static String getIpAddr(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}if (ip != null && ip.length() > 0) {String[] ips = ip.split(",");for (int i = 0; i < ips.length; i++) {if (!"unknown".equalsIgnoreCase(ips[i])) {ip = ips[i];break;}}}return ip;}/*** 国际化获得语言内容* * @param key* 语言key* @param args* @param argsSplit* @param defaultMessage* @param locale* @return*/public static String getLanguage(String key, String args, String argsSplit,String defaultMessage, String locale) {String language = "zh";String contry = "cn";String returnValue = defaultMessage;if (!StringUtil.isEmpty(locale)) {try {String[] localeArray = locale.split("_");language = localeArray[0];contry = localeArray[1];} catch (Exception e) {}}try {ResourceBundle resource = ResourceBundle.getBundle("lang.resource",new Locale(language, contry));returnValue = resource.getString(key);if (!StringUtil.isEmpty(args)) {String[] argsArray = args.split(argsSplit);for (int i = 0; i < argsArray.length; i++) {returnValue = returnValue.replace("{" + i + "}",argsArray[i]);}}} catch (Exception e) {}return returnValue;}
}
微信小程序家政预约系统+后台管理系统相关推荐
- 微信小程序挂号预约系统+后台管理系统
<微信小程序挂号预约系统+后台管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的挂号预约系统前台和Java做的后台管理系统: 微信小 ...
- 微信小程序场地预约系统+后台管理系统SSM-JAVA【数据库设计、论文、源码、开题报告】
功能介绍 本系统实现的是和场地相关的信息管理和发布,加入了场地公告的功能. 操作角色为管理员和用户. 管理员的功能为场地类型管理.场地管理.用户管理.预约管理.取消申请管理.退回押金管理: 用户的功能 ...
- 微信小程序在线考试系统+后台管理系统|前后分离VUE
<微信小程序在线考试系统+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采 ...
- 精品微信小程序在线考试系统+后台管理系统|前后分离VUE
<微信小程序在线考试系统+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采 ...
- 微信小程序家庭理财系统+后台管理系统|前后分离VUE
<微信小程序家庭理财系统+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采 ...
- [精品毕设]微信小程序在线考试系统+后台管理|前后分离VUE
<微信小程序在线考试系统+后台管理系统|前后分离VUE>该项目含有源码.文档等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采 ...
- 计算机实战项目、毕业设计、课程设计之 [含论文+辩论PPT+源码等]微信小程序家庭理财系统+后台管理|前后分离VUE[包运行成功
<微信小程序家庭理财系统+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采 ...
- 会议室预订小程序,共享会议室小程序,微信小程序会议室预约系统毕设作品
项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序会议室预约系统,前台用户使用小程序,后台管理使用基PHP+MySql的B/S架构:通过后台添加会议室信息.管理用户信息.管理预约信 ...
- JAVA微信小程序浴室预约系统毕业设计 开题报告
本文给出的java微信小程序系统毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序浴室预约系统,前台用户使用 ...
最新文章
- 首发|机器学习未来十年:你需要把握的趋势和热点
- matlab 算法设计,计算方法——算法设计及其MATLAB实现
- pl/sql连接数据库
- 项目经理必读:虚拟化评估与设计14步
- Entity framework 意外删除了表,如何在不影响其它表的情况下恢复回来 (EF数据库迁移原理)...
- python数组随机打乱_对Python random模块打乱数组顺序的实例讲解
- Cocos2d-x 3.2 异步动态加载 -- 保卫萝卜开发总结
- python- 基础 map方法
- 简明的后台样式查询模板
- ubuntu下创建定时任务的两种方式及常见问题解决方案
- JQuery杂项方法
- Java三种循环结构的区别
- NBU官方Doc網址https://www.veritas.com/support/en_US/article.DOC5332
- ASP.NET中 Repeater 的使用前台绑定
- android 菜鸟面单打印_菜鸟Android
- html中三角函数表示什么,三角函数a怎么求
- 树形结构的数据库表Schema设计
- 计算机制图的特点和原理,计算机地图制图原理、特点及发展趋势
- C语言的stdio.h文件
- python 多元线性回归_多元统计分析之多元线性回归的R语言实现
热门文章
- UA SIE545 优化理论基础0 优化建模1 优化问题的基本形式
- 短信开发-基础知识篇
- eureka配置账号密码才能访问
- DedeCMS_V5.8.1 ShowMsg 模板注入远程代码执行漏洞分析
- Log4j日志分类和过滤敏感字段
- Win11 部分用户遇到截图时产生错误问题,微软已收到反馈正在修复中
- 2019电赛D题方案:简易电路特性测试仪
- Redis面试-- 21问,你接得住不?
- Codeforces Round #730 (Div. 2) D1. RPD and Rap Sheet (Easy Version)
- Rancher部署项目流程