基于javaweb+mysql的springboot家政服务系统(java+springboot+html+echarts+maven+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot家政服务系统(java+springboot+html+echarts+maven+mysql)
项目介绍
本项目为后管系统,主要功能包括: 1. 用户的注册、登录、退出系统 2. 用户的搜索功能 3. 家政人员上传资料、身份认证和资格认证 4. 消费者发布预约、查看预约、确认预约、评价订单、删除订单、修改个人资料 5. 家政人员修改个人资料、申请预约、接受订单、取消订单、完成订单 6. 管理员对用户管理、认证管理和系统的量化查看
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 8.0版本;
6.是否Maven项目:是;
技术栈
前端 1. UI界面:Bootstrap 2. 弹窗:Sweetalert 3. Js事件:jQuery/ajax 4. 可视化报表:ECharts 5. 下拉框:Bootstrap-Select 后端 1. 服务层:SpringBoot 2. 持久层:Mybatis 3. 分页:Pagehelper 4. 连接池:c3p0
- 实体类:Lombok
使用说明
-
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
-
使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
- 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8081/ 登录 消费者登录账号/密码:18796283605/123456 家政人员登录账号/密码:18860425033/123456 管理员账号/密码:18796283601/123456
@RequestParam("id") String id
) {
ResponseResult<Company> result = new ResponseResult<>();
Company company = adminService.getCompanyByID(Integer.parseInt(id));
result.setData(company);
return result;
}
@PostMapping("/cancelCustomerByID")
@ResponseBody
public ResponseResult<Void> cancelCustomerByID (
@RequestParam("id") String id
) {
adminService.updateCustomerStatusByID(Integer.parseInt(id), 2);
return new ResponseResult<>();
}
@PostMapping("/certifyCustomerByID")
@ResponseBody
public ResponseResult<Void> certifyCustomerByID (
@RequestParam("id") String id
) {
adminService.updateCustomerStatusByID(Integer.parseInt(id), 1);
return new ResponseResult<>();
}
@PostMapping("/cancelHousekeeperByID")
@ResponseBody
public ResponseResult<Void> cancelHousekeeperByID (
@RequestParam("id") String id
) {
adminService.updateHousekeeperStatusByID(Integer.parseInt(id), 2);
return new ResponseResult<>();
}
@PostMapping("/certifyHousekeeperByID")
@ResponseBody
public ResponseResult<Void> certifyHousekeeperByID (
@RequestParam("id") String id
) {
adminService.updateHousekeeperStatusByID(Integer.parseInt(id), 1);
/**
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:
*/
@Service
public class MessageServiceImpl implements MessageService {
@Autowired
private MessageMapper messageMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private HKPersonMapper hkPersonMapper;
/**
* unreadStatus 表示未读状态
*/
private final int unreadStatus = 0;
/**
* readStatus 表示已读
*/
private final int readStatus = 1;
@Override
public List<Message> getMessageByToID(HttpSession session) {
String phone = (String)session.getAttribute("username");
if (StringUtils.isEmpty(phone)) {
throw new UserNoLoginException("用户未登录!");
} else {
int id = userMapper.selectHKIDByPhone(phone);
return messageMapper.getMessageByToID(id);
}
}
@Override
public Integer insertMessage(String msgContent, HttpSession session, int toID) throws UserNoLoginException, NoMessagePermission {
String phone = (String)session.getAttribute("username");
String toPhone = hkPersonMapper.getHousekeeperByID(toID).getHkPhone();
if (StringUtils.isEmpty(phone)) {
username = session.getAttribute("username").toString();
String tempPwd = userMapper.getPasswordByUsername(username);
if (!tempPwd.equals(oldPassword)) {
throw new PasswordIsErrorException("原始密码填写错误!");
} else {
userMapper.updatePassword(username, newPassword);
result = personMapper.updatePassword(username, newPassword);
}
}
return result;
}
@Override
public Customer selectCertifyCustomer(HttpSession session) {
Customer customer = new Customer();
if (session == null) {
throw new UserNoLoginException("用户未登录!");
} else {
String username = session.getAttribute("username").toString();
customer = personMapper.selectCertifyCustomer(username);
}
return customer;
}
@Override
public Integer certifyCustomer(HttpSession session, Customer customer) throws UserNoLoginException {
int result = 0;
String username = new String();
if (session == null) {
throw new UserNoLoginException("用户未登录");
} else {
username = session.getAttribute("username").toString();
result = personMapper.certifyCustomer(customer.getCmName(), customer.getCmCardID(), customer.getCmCardPhoto(), customer.getCmStatus(), username);
}
return result;
}
@Override
public Integer getCertifyStatus(HttpSession session) {
int result = 0;
String username = (String)session.getAttribute("username");
if (StringUtils.isEmpty(username)) {
throw new UserNoLoginException("用户未登录");
} else {
result = personMapper.getCertifyStatus(username);
}
return result;
}
@Override
public List<Message> getAllMessage() {
return personMapper.getAllMessage();
}
@Autowired
private IndexMapper indexMapper;
@Autowired
private TypeMapper typeMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private HKPersonMapper hkPersonMapper;
@Autowired
private UserMapper userMapper;
@Override
public List<Type> getAllType() {
List<Type> list = new ArrayList<Type>();
list = indexMapper.getAllType();
return list;
}
@Override
public List<Type> getAllSmallType(Integer type_id) {
return indexMapper.getAllSmallType(type_id);
}
@Override
public List<HouseKeeper> getTopHousekeeper(int type) {
List<Integer> hkIDList = orderMapper.getTopOrderByTypeID(type);
List<HouseKeeper> list = new ArrayList<>();
for (int i : hkIDList) {
HouseKeeper houseKeeper = hkPersonMapper.getHousekeeperByID(i);
list.add(houseKeeper);
}
for (HouseKeeper hk : list) {
String hkName = indexMapper.getCompanyNameByID(hk.getCompanyID());
hk.setCompanyName(hkName);
}
return list;
}
@Override
public Integer getTypeID(String param) {
return typeMapper.getTypeIDByName(param);
}
/**
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:
*/
@Service
public class HKPersonServiceImpl implements HKPersonService {
@Autowired
private HKPersonMapper hkPersonMapper;
@Autowired
private IndexMapper indexMapper;
@Override
public HouseKeeper selectHKByPhone(HttpSession session) {
String phone = (String)session.getAttribute("username");
if (StringUtils.isEmpty(phone)) {
throw new UserNoLoginException("用户未登录");
} else {
return hkPersonMapper.selectHKByPhone(phone);
}
}
@Override
public Integer updateHKPerson(HouseKeeper houseKeeper) {
return hkPersonMapper.updateHK(houseKeeper);
}
@Override
public Integer certifyHK(HouseKeeper houseKeeper) {
return hkPersonMapper.certifyHK(houseKeeper);
}
@Override
}
@Override
public Integer insertCustomer(Customer customer) throws UsernameConflictException {
Integer result = 0;
String phone = customer.getCmPhone();
if (userMapper.getUserByUsername(phone) != null) {
throw new UsernameConflictException("用户已经存在!");
} else {
String password = customer.getCmPassword();
int role = 1;
int status = 1;
User user = new User();
user.setUsername(phone);
user.setPassword(password);
user.setRole(role);
user.setStatus(status);
result = adminMapper.insertCustomer(customer);
userMapper.insert(user);
}
return result;
}
@Override
public Integer updateLoginStatus(String username) {
Integer result = 0;
result = adminMapper.updateStatusLogin(username);
return result;
}
@Override
public Integer insertHouseKeeper(HouseKeeper houseKeeper) {
return null;
}
@Override
public List<EchartsData> getOrderData() {
return adminMapper.getOrderData();
}
@Override
public List<EchartsData> getAppoimentData() {
/**
* 跳转至消息页面
* @return 消息页面
*/
@GetMapping("/toMessageHk")
public String toMessageHk() {
return "hk-person/message-hk";
}
/**
* 跳转至商家认证页面
* @return 商家认证页面
*/
@GetMapping("/toCertifyHk")
public String toCertifyHk() {
return "hk-person/certify-hk";
}
/**
* 跳转至公司认证页面
* @return 公司认证页面
*/
@GetMapping("/toCertifyCompany")
public String toCertifyCompany() {
return "hk-person/certify-company";
}
@PostMapping("/getHKPerson")
@ResponseBody
public ResponseResult<HouseKeeper> getHKPerson (
HttpSession session
) {
ResponseResult<HouseKeeper> result = new ResponseResult<>();
HouseKeeper hk = hkPersonService.selectHKByPhone(session);
result.setData(hk);
return result;
}
@PostMapping("/updateHousekeeperInfo")
@ResponseBody
public ResponseResult<Void> updateHousekeeperInfo (
} else {
filePath = "/upload/list-head.png";
}
company.setBusLicPhoto(filePath);
companyService.certifyCompany(company);
return new ResponseResult<>();
}
@PostMapping("/loadContent")
@ResponseBody
public ResponseResult<HouseKeeper> loadContent (
@RequestParam("param") String param
) {
Integer paramInt = Integer.parseInt(param);
ResponseResult<HouseKeeper> result = new ResponseResult<>();
HouseKeeper hk = hkPersonService.getHousekeeperByID(paramInt);
result.setData(hk);
return result;
}
@PostMapping("/loadComment")
@ResponseBody
public ResponseResult<List<Comment>> loadComment (
@RequestParam("param") String param
) {
Integer paramInt = Integer.parseInt(param);
ResponseResult<List<Comment>> result = new ResponseResult<>();
List<Comment> list = commentService.getCommentListByID(paramInt);
result.setData(list);
return result;
}
}
@PostMapping("/getOrderData")
@ResponseBody
public ResponseResult<List<EchartsData>> getOrderData(){
ResponseResult<List<EchartsData>> response = new ResponseResult<>();
List<EchartsData> echartsData = adminService.getOrderData();
response.setData(echartsData);
return response;
}
@PostMapping("/getAppoimentData")
@ResponseBody
public ResponseResult<List<EchartsData>> getAppoimentData(){
ResponseResult<List<EchartsData>> response = new ResponseResult<>();
List<EchartsData> echartsData = adminService.getAppoimentData();
response.setData(echartsData);
return response;
}
@PostMapping("/updateUserInfo")
@ResponseBody
public ResponseResult<Void> updateUserInfo (
@RequestParam("id") String id,
@RequestParam("password") String password,
@RequestParam("role") String role,
@RequestParam("status") String status
) {
adminService.updateUserInfo(Integer.parseInt(id), password, Integer.parseInt(role), Integer.parseInt(status));
return new ResponseResult<>();
}
@PostMapping("/getAllCustomerCertify")
@ResponseBody
public ResponseResult<List<Customer>> getAllCustomerCertify () {
ResponseResult<List<Customer>> result = new ResponseResult<>();
List<Customer> list = adminService.getAllCustomerCertify();
result.setData(list);
return result;
}
@PostMapping("/getAllHousekeeperCertify")
@ResponseBody
public ResponseResult<List<HouseKeeper>> getAllHousekeeperCertify () {
ResponseResult<List<HouseKeeper>> result = new ResponseResult<>();
List<HouseKeeper> list = adminService.getAllHousekeeperCertify();
result.setData(list);
return result;
}
@PostMapping("/getAllCompanyCertify")
*/
@PostMapping("/loginSuccess")
@ResponseBody
public ResponseResult<Void> loginSuccess (
HttpSession session
) throws UserNoLoginException {
String username = (String) session.getAttribute("username");
ResponseResult<Void> result = new ResponseResult<>();
if (StringUtils.isEmpty(username)) {
throw new UserNoLoginException("用户未登录");
} else {
if (session.getAttribute("username").toString() != null) {
result.setState(200);
}
}
return result;
}
}
/**
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:
*/
@Service
public class OrderServiceImpl implements OrderService {
/**
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:
*/
@Service
public class OrderServiceImpl implements OrderService {
private static int PAGESIZE = 10;
@Autowired
private OrderMapper orderMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private TypeMapper typeMapper;
@Autowired
private AppointmentMapper appointmentMapper;
@Override
public PageInfo<Order> getAllOrder(HttpSession session, int currentPage) {
String username = session.getAttribute("username").toString();
if (StringUtils.isEmpty(username)) {
throw new UserNoLoginException("用户未登录...");
} else {
int cmID = userMapper.selectCmIDByPhone(username);
if (currentPage <= 0) {
currentPage = 1;
}
PageHelper.startPage(currentPage, PAGESIZE);
List<Order> list = orderMapper.getAllOrder(cmID);
PageInfo<Order> pageInfo = new PageInfo<>(list);
for (Order order : list) {
String hkName = userMapper.selectHKNameByHkID(order.getHkID());
order.setHkName(hkName);
int days = CalcDate.calcDays(order.getOrderBeginTime(), order.getOrderEndTime());
order.setOrderDur(days);
}
return pageInfo;
}
}
@Override
public Order getOrderByID(int id) {
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:首页Service实现类
*/
@Service
public class IndexServiceImpl implements IndexService {
@Autowired
private IndexMapper indexMapper;
@Autowired
private TypeMapper typeMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private HKPersonMapper hkPersonMapper;
@Autowired
private UserMapper userMapper;
@Override
public List<Type> getAllType() {
List<Type> list = new ArrayList<Type>();
list = indexMapper.getAllType();
return list;
}
@Override
public List<Type> getAllSmallType(Integer type_id) {
return indexMapper.getAllSmallType(type_id);
}
@Override
public List<HouseKeeper> getTopHousekeeper(int type) {
List<Integer> hkIDList = orderMapper.getTopOrderByTypeID(type);
List<HouseKeeper> list = new ArrayList<>();
for (int i : hkIDList) {
HouseKeeper houseKeeper = hkPersonMapper.getHousekeeperByID(i);
list.add(houseKeeper);
}
for (HouseKeeper hk : list) {
String hkName = indexMapper.getCompanyNameByID(hk.getCompanyID());
hk.setCompanyName(hkName);
}
return list;
@Autowired
private TypeMapper typeMapper;
@Autowired
private HKPersonMapper hkPersonMapper;
@Override
public Integer insertAppointment(Appointment appointment, String username) throws AppointFailedException, UserNoLoginException {
Integer cmID = appMapper.getCustomerIDByUsername(username);
if (cmID == null) {
throw new UserNoLoginException("用户未登录!");
}
appointment.setCmID(cmID);
Integer result = appMapper.insertAppointment(appointment);
if (result > 0) {
return result;
} else {
throw new AppointFailedException("预约失败!");
}
}
@Override
public List<Appointment> getStatusApp(HttpSession session, int status) throws UserNoLoginException {
int hkID = 0;
if (session == null) {
throw new UserNoLoginException("用户未登录");
} else {
String username = session.getAttribute("username").toString();
hkID = userMapper.selectHKIDByPhone(username);
}
List<Appointment> list = appMapper.getStatusApp(status);
for (Appointment app : list) {
List<Integer> applyList = JsonUtil.json2List(app.getApplyJson(), Integer.class);
app.setApplyList(applyList);
app.setHkID(hkID);
}
return list;
}
@Override
public PageInfo<Appointment> getStatusApp(HttpSession session, int status,int currentPage) throws UserNoLoginException {
int hkID = 0;
if (session == null) {
@RequestMapping("/getTopRepair")
@ResponseBody
public ResponseResult<List<HouseKeeper>> getTopRepair () {
ResponseResult<List<HouseKeeper>> result = new ResponseResult<>();
List<HouseKeeper> list = indexService.getTopHousekeeper(9);
result.setData(list);
return result;
}
@RequestMapping("/getTopMove")
@ResponseBody
public ResponseResult<List<HouseKeeper>> getTopMove () {
ResponseResult<List<HouseKeeper>> result = new ResponseResult<>();
List<HouseKeeper> list = indexService.getTopHousekeeper(13);
result.setData(list);
return result;
}
@RequestMapping("/getRecommend")
@ResponseBody
public ResponseResult<List<HouseKeeper>> getRecommend (
HttpSession session
) {
ResponseResult<List<HouseKeeper>> result = new ResponseResult<>();
List<HouseKeeper> list = indexService.getRecommend(session);
result.setData(list);
return result;
}
@PostMapping("/getTypeID")
@ResponseBody
public ResponseResult<Integer> getTypeID (
@RequestParam("param") String param
) {
ResponseResult<Integer> result = new ResponseResult<>();
int id = indexService.getTypeID(param);
result.setData(id);
return result;
}
}
@Override
public Integer updatePassword(HttpSession session, String oldPassword, String newPassword) throws UserNoLoginException, PasswordIsErrorException {
Integer result = 0;
String username = new String();
if (session == null) {
throw new UserNoLoginException("用户未登录");
} else {
username = session.getAttribute("username").toString();
String tempPwd = userMapper.getPasswordByUsername(username);
if (!tempPwd.equals(oldPassword)) {
throw new PasswordIsErrorException("原始密码填写错误!");
} else {
userMapper.updatePassword(username, newPassword);
result = adminMapper.updatePassword(username, newPassword);
}
}
return result;
}
}
/**
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:预约Controller
*/
@Controller()
@RequestMapping("/app")
public class AppointmentController extends BaseController{
@Autowired
private AppointmentService appService;
/**
* 跳转我的预约页面
public ResponseResult<Integer> userLogin(
@RequestParam("username") String username,
@RequestParam("password") String password,
@RequestParam("vertifyCode") String vertifyCode,
HttpSession session
) {
System.out.println("前台输入验证码:" + vertifyCode);
ResponseResult<Integer> response = new ResponseResult<>();
// 从session中获取之前保存的验证码跟前台传来的验证码进行匹配
Object kaptcha = session.getAttribute(RANDOMCODEKEY);
if(!vertifyCode.equals(kaptcha)){
response.setState(502);
}
Boolean result = userService.login(username, password);
if (result) {
System.out.println("用户存在,登录成功");
response.setData(userService.getLoginRole(username));
}
session.setAttribute("username", username);
session.setAttribute("role", userService.getLoginRole(username));
return response;
}
/**
* 退出登录
* @param session
* @return
*/
@GetMapping("/logout")
public String userLogout (HttpSession session) {
session.removeAttribute("username");
session.invalidate();
return "login";
}
/**
* 登录成功
* @param session
* @return
* @throws UserNoLoginException
*/
@PostMapping("/loginSuccess")
@ResponseBody
public ResponseResult<Void> loginSuccess (
HttpSession session
) throws UserNoLoginException {
String username = (String) session.getAttribute("username");
public String getSingleMessage(Integer id) {
return personMapper.getSingleMessage(id);
}
@Override
public Integer deleteSingleMessage(Integer id) {
return personMapper.deleteSingleMessage(id);
}
}
/**
* Created by IntelliJ IDEA 2020.1.
* Project: house
* Description:订单控制类
*/
@Controller
@RequestMapping("/order")
public class OrderController extends BaseController {
@Autowired
private OrderService orderService;
@Autowired
private CommentService commentService;
/**
* 跳转至我的订单页面
* @return 我的订单页面
int cmID = 0;
String username = (String) session.getAttribute("username");
if (StringUtils.isEmpty(username)) {
throw new UserNoLoginException("用户未登录");
} else {
cmID = userMapper.selectCmIDByPhone(username);
}
List<Appointment> list = appMapper.selectAppListByCmID(cmID);
for (Appointment app : list) {
List<Integer> applyList = JsonUtil.json2List(app.getApplyJson(), Integer.class);
app.setApplyList(applyList);
}
return list;
}
@Override
public PageInfo<Appointment> getAllAppCustomer(HttpSession session, int currentPage) {
int cmID = 0;
String username = (String) session.getAttribute("username");
if (StringUtils.isEmpty(username)) {
throw new UserNoLoginException("用户未登录");
} else {
cmID = userMapper.selectCmIDByPhone(username);
if (currentPage <= 0) {
currentPage = 1;
}
PageHelper.startPage(currentPage, PAGESIZE);
List<Appointment> list = appMapper.selectAppListByCmID(cmID);
PageInfo<Appointment> pageInfo = new PageInfo<>(list);
for (Appointment app : list) {
List<Integer> applyList = JsonUtil.json2List(app.getApplyJson(), Integer.class);
app.setApplyList(applyList);
}
return pageInfo;
}
}
/**
* 家政人员获得预约列表
* @param session
* @return
*/
@Override
public PageInfo<Appointment> getAllApp(HttpSession session, int currentPage) {
int hkID = 0;
String username = (String)session.getAttribute("username");
if (StringUtils.isEmpty(username)) {
throw new UserNoLoginException("用户未登录");
} else {
hkID = userMapper.selectHKIDByPhone(username);