no message
This commit is contained in:
@@ -1,76 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminHouseAuditController.java
|
||||
* @Description: 管理员房源审核操作控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:48:49
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
|
||||
@WebServlet("/admin/house/audit")
|
||||
public class AdminHouseAuditController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String houseIdStr = request.getParameter("id");
|
||||
String action = request.getParameter("action");
|
||||
|
||||
if (houseIdStr == null || action == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list");
|
||||
return;
|
||||
}
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
String status = "approve".equals(action) ? "1" : "3"; // 1-已上架,3-违规/拒绝
|
||||
|
||||
boolean success = houseDao.updateStatus(houseId, status);
|
||||
|
||||
if (success) {
|
||||
String msg = "approve".equals(action) ? "房源审核通过,已上架" : "房源审核拒绝";
|
||||
String encodedMsg = URLEncoder.encode(msg, "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("操作失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminHouseController.java
|
||||
* @Description: 管理员房源审核控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:51:26
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/house/list")
|
||||
public class AdminHouseController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取不同状态的房源
|
||||
List<House> pendingList = houseDao.findPendingHouses();
|
||||
List<House> publishedList = houseDao.findPublishedHousesForAdmin();
|
||||
List<House> offlineList = houseDao.findOfflineHouses();
|
||||
|
||||
request.setAttribute("pendingList", pendingList);
|
||||
request.setAttribute("publishedList", publishedList);
|
||||
request.setAttribute("offlineList", offlineList);
|
||||
request.setAttribute("pendingCount", pendingList.size());
|
||||
request.setAttribute("publishedCount", publishedList.size());
|
||||
request.setAttribute("offlineCount", offlineList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/admin/house_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminHouseOfflineController.java
|
||||
* @Description: 管理员下架房源控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:52:08
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/house/offline")
|
||||
public class AdminHouseOfflineController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String houseIdStr = request.getParameter("id");
|
||||
if (houseIdStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
boolean success = houseDao.updateStatus(houseId, "2"); // 2-已下架
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("房源已下架", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("操作失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminHouseOnlineController.java
|
||||
* @Description: 管理员重新上架房源控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:53:08
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/house/online")
|
||||
public class AdminHouseOnlineController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String houseIdStr = request.getParameter("id");
|
||||
if (houseIdStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
boolean success = houseDao.updateStatus(houseId, "1"); // 1-已上架
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("房源已重新上架", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("操作失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/house/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.model.entity.Order;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminOrderController.java
|
||||
* @Description: 管理员订单管理控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:53:35
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/order/list")
|
||||
public class AdminOrderController extends HttpServlet {
|
||||
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
List<Order> orderList = orderDao.findAll();
|
||||
|
||||
request.setAttribute("orderList", orderList);
|
||||
request.setAttribute("totalCount", orderList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/admin/order_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.dao.UserDao;
|
||||
import com.hrs.dao.impl.UserDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminStatisticsController.java
|
||||
* @Description: 管理员统计数据AP
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:53:55
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/statistics")
|
||||
public class AdminStatisticsController extends HttpServlet {
|
||||
|
||||
private UserDao userDao = new UserDaoImpl();
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.setStatus(401);
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.setStatus(403);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取统计数据
|
||||
int userCount = userDao.count();
|
||||
int houseCount = houseDao.countAll();
|
||||
int orderCount = orderDao.countAll();
|
||||
int pendingCount = houseDao.findPendingHouses().size();
|
||||
|
||||
// 返回JSON
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
out.print("{");
|
||||
out.print("\"userCount\":" + userCount + ",");
|
||||
out.print("\"houseCount\":" + houseCount + ",");
|
||||
out.print("\"orderCount\":" + orderCount + ",");
|
||||
out.print("\"pendingCount\":" + pendingCount);
|
||||
out.print("}");
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.UserDao;
|
||||
import com.hrs.dao.impl.UserDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminUserController.java
|
||||
* @Description: 管理员用户管理控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:54:18
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/user/list")
|
||||
public class AdminUserController extends HttpServlet {
|
||||
|
||||
private UserDao userDao = new UserDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 检查登录状态和管理员权限
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取所有用户
|
||||
List<User> allUsers = getAllUsers();
|
||||
|
||||
// 分离不同角色
|
||||
List<User> tenants = new java.util.ArrayList<>();
|
||||
List<User> landlords = new java.util.ArrayList<>();
|
||||
List<User> admins = new java.util.ArrayList<>();
|
||||
|
||||
for (User user : allUsers) {
|
||||
if ("0".equals(user.getRoleType())) {
|
||||
tenants.add(user);
|
||||
} else if ("1".equals(user.getRoleType())) {
|
||||
landlords.add(user);
|
||||
} else if ("2".equals(user.getRoleType())) {
|
||||
admins.add(user);
|
||||
}
|
||||
}
|
||||
|
||||
request.setAttribute("tenants", tenants);
|
||||
request.setAttribute("landlords", landlords);
|
||||
request.setAttribute("admins", admins);
|
||||
request.setAttribute("totalCount", allUsers.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/admin/user_list.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
private List<User> getAllUsers() {
|
||||
// 通过DAO获取所有用户
|
||||
// 注意:UserDAO中没有findAll方法,需要添加
|
||||
// 这里先用查询所有租客和房东的方式
|
||||
List<User> allUsers = new java.util.ArrayList<>();
|
||||
allUsers.addAll(userDao.findAllTenants());
|
||||
allUsers.addAll(userDao.findAllLandlords());
|
||||
// 手动添加管理员(管理员数量少,可以从数据库查)
|
||||
User admin = userDao.findByUsername("admin");
|
||||
if (admin != null) {
|
||||
allUsers.add(admin);
|
||||
}
|
||||
return allUsers;
|
||||
}
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.UserDao;
|
||||
import com.hrs.dao.impl.UserDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminUserDeleteController.java
|
||||
* @Description: 管理员删除用户控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:54:34
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/user/delete")
|
||||
public class AdminUserDeleteController extends HttpServlet {
|
||||
|
||||
private UserDao userDao = new UserDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String userIdStr = request.getParameter("id");
|
||||
if (userIdStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long userId = Long.parseLong(userIdStr);
|
||||
|
||||
// 不能删除自己
|
||||
if (userId.equals(loginUser.getId())) {
|
||||
String encodedError = URLEncoder.encode("不能删除自己", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list?error=" + encodedError);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean success = userDao.delete(userId);
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("删除成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("删除失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
package com.hrs.controller.admin;
|
||||
|
||||
import com.hrs.dao.UserDao;
|
||||
import com.hrs.dao.impl.UserDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: AdminUserStatusController.java
|
||||
* @Description: 管理员操作用户状态控制器(启用/禁用)
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:54:49
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/admin/user/status")
|
||||
public class AdminUserStatusController extends HttpServlet {
|
||||
|
||||
private UserDao userDao = new UserDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"2".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String userIdStr = request.getParameter("id");
|
||||
String action = request.getParameter("action"); // enable 或 disable
|
||||
|
||||
if (userIdStr == null || action == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long userId = Long.parseLong(userIdStr);
|
||||
String status = "enable".equals(action) ? "1" : "2";
|
||||
|
||||
boolean success = userDao.updateStatus(userId, status);
|
||||
|
||||
if (success) {
|
||||
String msg = "enable".equals(action) ? "用户已启用" : "用户已禁用";
|
||||
String encodedMsg = URLEncoder.encode(msg, "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("操作失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/admin/user/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.service.HouseService;
|
||||
import com.hrs.service.impl.HouseServiceImpl;
|
||||
import com.hrs.util.ImageUploadUtil;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.MultipartConfig;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import javax.servlet.http.Part;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: HouseAddController.java
|
||||
* @Description: 添加房源控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:55:45
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/house/add")
|
||||
@MultipartConfig(
|
||||
maxFileSize = 5 * 1024 * 1024,
|
||||
maxRequestSize = 25 * 1024 * 1024
|
||||
)
|
||||
public class HouseAddController extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
request.getRequestDispatcher("/jsp/landlord/house_add.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取表单参数
|
||||
String title = request.getParameter("title");
|
||||
String area = request.getParameter("area");
|
||||
String address = request.getParameter("address");
|
||||
String houseType = request.getParameter("houseType");
|
||||
String rentPriceStr = request.getParameter("rentPrice");
|
||||
String rentType = request.getParameter("rentType");
|
||||
String facility = request.getParameter("facility");
|
||||
String description = request.getParameter("description");
|
||||
|
||||
// 验证必填项
|
||||
if (title == null || title.trim().isEmpty()) {
|
||||
request.setAttribute("error", "房源标题不能为空");
|
||||
doGet(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
if (rentPriceStr == null || rentPriceStr.trim().isEmpty()) {
|
||||
request.setAttribute("error", "租金不能为空");
|
||||
doGet(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 处理图片上传
|
||||
Collection<Part> parts = request.getParts();
|
||||
String imgUrl = ImageUploadUtil.saveMultipleImages(parts, request);
|
||||
|
||||
// 生成房源编号
|
||||
String houseNo = generateHouseNo();
|
||||
|
||||
// 创建房源对象
|
||||
House house = new House();
|
||||
house.setLandlordId(loginUser.getId());
|
||||
house.setHouseNo(houseNo);
|
||||
house.setTitle(title);
|
||||
house.setArea(area);
|
||||
house.setAddress(address);
|
||||
house.setHouseType(houseType);
|
||||
house.setRentPrice(new BigDecimal(rentPriceStr));
|
||||
house.setRentType(rentType);
|
||||
house.setFacility(facility);
|
||||
house.setDescription(description);
|
||||
house.setImgUrl(imgUrl);
|
||||
house.setStatus("0"); // 默认待审核状态
|
||||
|
||||
// 使用Service层添加房源
|
||||
HouseService houseService = new HouseServiceImpl();
|
||||
HouseService.AddHouseResult result = houseService.addHouse(house);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
String encodedMsg = URLEncoder.encode(result.getMessage(), "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
request.setAttribute("error", result.getMessage());
|
||||
doGet(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成房源编号
|
||||
*/
|
||||
private String generateHouseNo() {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
return "H" + sdf.format(new Date());
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.dao.ReservationDao;
|
||||
import com.hrs.dao.impl.ReservationDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.util.ImageUploadUtil;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: HouseDeleteController.java
|
||||
* @Description: 删除房源控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:56:09
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/house/delete")
|
||||
public class HouseDeleteController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
private ReservationDao reservationDao = new ReservationDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取房源ID
|
||||
String idStr = request.getParameter("id");
|
||||
if (idStr == null || idStr.trim().isEmpty()) {
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(idStr);
|
||||
|
||||
// 先获取房源信息(为了删除图片)
|
||||
House house = houseDao.findById(houseId);
|
||||
|
||||
if (house == null) {
|
||||
String encodedError = URLEncoder.encode("房源不存在", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?error=" + encodedError);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查是否有关联的订单
|
||||
boolean hasOrders = orderDao.existsByHouseId(houseId);
|
||||
if (hasOrders) {
|
||||
String encodedError = URLEncoder.encode("该房源存在关联订单,无法删除", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?error=" + encodedError);
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查是否有关联的预约
|
||||
boolean hasReservations = reservationDao.existsByHouseId(houseId);
|
||||
if (hasReservations) {
|
||||
String encodedError = URLEncoder.encode("该房源存在关联预约,无法删除", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?error=" + encodedError);
|
||||
return;
|
||||
}
|
||||
|
||||
// 删除数据库记录
|
||||
boolean success = houseDao.delete(houseId);
|
||||
|
||||
if (success && house != null && house.getImgUrl() != null) {
|
||||
// 删除图片文件
|
||||
ImageUploadUtil.deleteImages(house.getImgUrl(), request);
|
||||
String encodedMsg = URLEncoder.encode("删除成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?msg=" + encodedMsg);
|
||||
} else if (success) {
|
||||
String encodedMsg = URLEncoder.encode("删除成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("删除失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,138 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: HouseEditController.java
|
||||
* @Description: 编辑房源控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:56:25
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/house/edit")
|
||||
public class HouseEditController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取房源ID
|
||||
String idStr = request.getParameter("id");
|
||||
if (idStr == null || idStr.trim().isEmpty()) {
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(idStr);
|
||||
House house = houseDao.findById(houseId);
|
||||
|
||||
// 验证是否是自己的房源
|
||||
if (house == null || !house.getLandlordId().equals(loginUser.getId())) {
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
request.setAttribute("house", house);
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
request.getRequestDispatcher("/jsp/landlord/house_edit.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取表单参数
|
||||
String idStr = request.getParameter("id");
|
||||
String title = request.getParameter("title");
|
||||
String area = request.getParameter("area");
|
||||
String address = request.getParameter("address");
|
||||
String houseType = request.getParameter("houseType");
|
||||
String rentPriceStr = request.getParameter("rentPrice");
|
||||
String rentType = request.getParameter("rentType");
|
||||
String facility = request.getParameter("facility");
|
||||
String description = request.getParameter("description");
|
||||
String imgUrl = request.getParameter("imgUrl");
|
||||
|
||||
if (idStr == null || title == null || rentPriceStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(idStr);
|
||||
|
||||
// 创建房源对象
|
||||
House house = new House();
|
||||
house.setId(houseId);
|
||||
house.setTitle(title);
|
||||
house.setArea(area);
|
||||
house.setAddress(address);
|
||||
house.setHouseType(houseType);
|
||||
house.setRentPrice(new BigDecimal(rentPriceStr));
|
||||
house.setRentType(rentType);
|
||||
house.setFacility(facility);
|
||||
house.setDescription(description);
|
||||
house.setImgUrl(imgUrl);
|
||||
|
||||
boolean success = houseDao.update(house);
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("房源修改成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/house/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
request.setAttribute("error", "修改失败,请稍后重试");
|
||||
doGet(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: HouseListController.java
|
||||
* @Description: 房东房源列表控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:56:39
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/house/list")
|
||||
public class HouseListController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 查询房东自己的房源
|
||||
List<House> houseList = houseDao.findByLandlordId(loginUser.getId());
|
||||
|
||||
request.setAttribute("houseList", houseList);
|
||||
request.setAttribute("totalCount", houseList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/landlord/house_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.model.entity.Order;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: OrderConfirmController.java
|
||||
* @Description: 房东确认签约控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午8:56:51
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/order/confirm")
|
||||
public class OrderConfirmController extends HttpServlet {
|
||||
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String orderIdStr = request.getParameter("id");
|
||||
if (orderIdStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/order/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long orderId = Long.parseLong(orderIdStr);
|
||||
Order order = orderDao.findById(orderId);
|
||||
|
||||
// 验证订单是否属于该房东的房源
|
||||
if (order == null) {
|
||||
String encodedError = URLEncoder.encode("订单不存在", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/order/list?error=" + encodedError);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean success = orderDao.updateStatus(orderId, "1"); // 1-已签约
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("已确认签约", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/order/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("操作失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/order/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.model.entity.Order;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: OrderManageController.java
|
||||
* @Description: 房东订单管理控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:01:28
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/order/list")
|
||||
public class OrderManageController extends HttpServlet {
|
||||
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
List<Order> orderList = orderDao.findByLandlordId(loginUser.getId());
|
||||
|
||||
request.setAttribute("orderList", orderList);
|
||||
request.setAttribute("totalCount", orderList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/landlord/order_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.ReservationDao;
|
||||
import com.hrs.dao.impl.ReservationDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: ReservationHandleController.java
|
||||
* @Description: 房东处理预约控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:01:42
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/reservation/handle")
|
||||
public class ReservationHandleController extends HttpServlet {
|
||||
|
||||
private ReservationDao reservationDao = new ReservationDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取参数
|
||||
String idStr = request.getParameter("id");
|
||||
String action = request.getParameter("action"); // confirm 或 reject
|
||||
|
||||
if (idStr == null || action == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/reservation/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long id = Long.parseLong(idStr);
|
||||
String status = "confirm".equals(action) ? "1" : "2";
|
||||
|
||||
boolean success = reservationDao.updateStatus(id, status);
|
||||
|
||||
if (success) {
|
||||
String msg = "confirm".equals(action) ? "已确认预约" : "已拒绝预约";
|
||||
String encodedMsg = URLEncoder.encode(msg, "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/reservation/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("操作失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/landlord/reservation/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package com.hrs.controller.landlord;
|
||||
|
||||
import com.hrs.dao.ReservationDao;
|
||||
import com.hrs.dao.impl.ReservationDaoImpl;
|
||||
import com.hrs.model.entity.Reservation;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: ReservationManageController.java
|
||||
* @Description: 房东预约管理控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:02:01
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/landlord/reservation/list")
|
||||
public class ReservationManageController extends HttpServlet {
|
||||
|
||||
private ReservationDao reservationDao = new ReservationDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"1".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 查询收到的预约
|
||||
List<Reservation> reservationList = reservationDao.findByLandlordId(loginUser.getId());
|
||||
|
||||
request.setAttribute("reservationList", reservationList);
|
||||
request.setAttribute("totalCount", reservationList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/landlord/reservation_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.service.CollectionService;
|
||||
import com.hrs.service.impl.CollectionServiceImpl;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: CollectionAddController.java
|
||||
* @Description: 添加收藏控制器/AJAX请求,返回文本结果
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:02:40
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/collection/add")
|
||||
public class CollectionAddController extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
response.setContentType("text/plain;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
|
||||
// 1. 检查登录状态
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
out.print("not_login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
out.print("not_login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 获取房源ID
|
||||
String houseIdStr = request.getParameter("houseId");
|
||||
if (houseIdStr == null || houseIdStr.trim().isEmpty()) {
|
||||
out.print("error");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = null;
|
||||
try {
|
||||
houseId = Long.parseLong(houseIdStr);
|
||||
} catch (NumberFormatException e) {
|
||||
out.print("error");
|
||||
return;
|
||||
}
|
||||
|
||||
// 原来的代码
|
||||
// boolean exists = collectionDao.isCollected(loginUser.getId(), houseId);
|
||||
// if (exists) {
|
||||
// out.print("exists");
|
||||
// return;
|
||||
// }
|
||||
// boolean success = collectionDao.add(collection);
|
||||
|
||||
// 修改为
|
||||
CollectionService collectionService = new CollectionServiceImpl();
|
||||
CollectionService.CollectionResult result = collectionService.addCollection(loginUser.getId(), houseId);
|
||||
|
||||
if (result.isExists()) {
|
||||
out.print("exists");
|
||||
} else if (result.isSuccess()) {
|
||||
out.print("success");
|
||||
} else {
|
||||
out.print("error");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,127 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.CollectionDao;
|
||||
import com.hrs.dao.impl.CollectionDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: CollectionDeleteController.java
|
||||
* @Description: 取消收藏控制器/支持两种删除方式:
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:03:05
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/collection/delete")
|
||||
public class CollectionDeleteController extends HttpServlet {
|
||||
|
||||
private CollectionDao collectionDao = new CollectionDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取来源参数
|
||||
String from = request.getParameter("from");
|
||||
String idStr = request.getParameter("id");
|
||||
String houseIdStr = request.getParameter("houseId");
|
||||
|
||||
// 判断是否是AJAX请求
|
||||
String ajax = request.getParameter("ajax");
|
||||
|
||||
// 1. 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
if ("true".equals(ajax)) {
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
out.print("{\"success\":false,\"msg\":\"未登录\"}");
|
||||
return;
|
||||
} else {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
if ("true".equals(ajax)) {
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
out.print("{\"success\":false,\"msg\":\"未登录\"}");
|
||||
return;
|
||||
} else {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
boolean success = false;
|
||||
|
||||
// 2. 根据ID删除(从收藏列表删除)
|
||||
if (idStr != null && !idStr.trim().isEmpty()) {
|
||||
Long id = Long.parseLong(idStr);
|
||||
success = collectionDao.deleteById(id);
|
||||
}
|
||||
// 3. 根据房源ID删除(从详情页删除)
|
||||
else if (houseIdStr != null && !houseIdStr.trim().isEmpty()) {
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
success = collectionDao.delete(loginUser.getId(), houseId);
|
||||
}
|
||||
|
||||
// 4. 处理返回结果
|
||||
if ("true".equals(ajax)) {
|
||||
// AJAX请求:返回JSON
|
||||
response.setContentType("application/json;charset=UTF-8");
|
||||
PrintWriter out = response.getWriter();
|
||||
if (success) {
|
||||
out.print("{\"success\":true,\"msg\":\"取消收藏成功\"}");
|
||||
} else {
|
||||
out.print("{\"success\":false,\"msg\":\"取消收藏失败\"}");
|
||||
}
|
||||
} else {
|
||||
// 普通请求:页面跳转
|
||||
if (success) {
|
||||
// 根据来源参数决定跳转位置
|
||||
if ("detail".equals(from) && houseIdStr != null) {
|
||||
// 从详情页删除,跳回详情页
|
||||
String encodedMsg = URLEncoder.encode("取消收藏成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/detail?id=" + houseIdStr + "&msg=" + encodedMsg);
|
||||
} else if ("list".equals(from)) {
|
||||
// 从收藏列表删除,跳回收藏列表
|
||||
String encodedMsg = URLEncoder.encode("取消收藏成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/collection/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
// 默认跳回收藏列表
|
||||
String encodedMsg = URLEncoder.encode("取消收藏成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/collection/list?msg=" + encodedMsg);
|
||||
}
|
||||
} else {
|
||||
if ("detail".equals(from) && houseIdStr != null) {
|
||||
String encodedError = URLEncoder.encode("取消收藏失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/detail?id=" + houseIdStr + "&error=" + encodedError);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("取消收藏失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/collection/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.CollectionDao;
|
||||
import com.hrs.dao.impl.CollectionDaoImpl;
|
||||
import com.hrs.model.entity.Collection;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: CollectionListController.java
|
||||
* @Description: 我的收藏列表控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:03:32
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/collection/list")
|
||||
public class CollectionListController extends HttpServlet {
|
||||
|
||||
private CollectionDao collectionDao = new CollectionDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 1. 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 查询收藏列表
|
||||
List<Collection> collectionList = collectionDao.findByTenantId(loginUser.getId());
|
||||
|
||||
// 3. 存入request
|
||||
request.setAttribute("collectionList", collectionList);
|
||||
request.setAttribute("totalCount", collectionList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
// 4. 转发到JSP
|
||||
request.getRequestDispatcher("/jsp/user/collection_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: HouseDetailController.java
|
||||
* @Description: 房源详情控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:04:08
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/house/detail")
|
||||
public class HouseDetailController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 1. 获取房源ID
|
||||
String idStr = request.getParameter("id");
|
||||
if (idStr == null || idStr.trim().isEmpty()) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = null;
|
||||
try {
|
||||
houseId = Long.parseLong(idStr);
|
||||
} catch (NumberFormatException e) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 查询房源详情
|
||||
House house = houseDao.findById(houseId);
|
||||
if (house == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. 获取当前登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
|
||||
// 4. 将数据存入request
|
||||
request.setAttribute("house", house);
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
// 5. 转发到详情页面
|
||||
request.getRequestDispatcher("/jsp/user/house_detail.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: HouseListController.java
|
||||
* @Description: 房源列表控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:04:41
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/house/list")
|
||||
public class HouseListController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取请求参数
|
||||
String area = request.getParameter("area");
|
||||
String minPriceStr = request.getParameter("minPrice");
|
||||
String maxPriceStr = request.getParameter("maxPrice");
|
||||
|
||||
List<House> houseList;
|
||||
|
||||
// 根据条件查询
|
||||
if (area != null && !area.trim().isEmpty()) {
|
||||
houseList = houseDao.findHousesByArea(area);
|
||||
request.setAttribute("searchArea", area);
|
||||
} else if (minPriceStr != null && maxPriceStr != null && !minPriceStr.isEmpty() && !maxPriceStr.isEmpty()) {
|
||||
int minPrice = Integer.parseInt(minPriceStr);
|
||||
int maxPrice = Integer.parseInt(maxPriceStr);
|
||||
houseList = houseDao.findHousesByPrice(minPrice, maxPrice);
|
||||
request.setAttribute("minPrice", minPrice);
|
||||
request.setAttribute("maxPrice", maxPrice);
|
||||
} else {
|
||||
houseList = houseDao.findPublishedHouses();
|
||||
}
|
||||
|
||||
// 获取当前登录用户(用于判断是否已收藏)
|
||||
HttpSession session = request.getSession(false);
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
|
||||
// 将数据存入request
|
||||
request.setAttribute("houseList", houseList);
|
||||
request.setAttribute("totalCount", houseList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
// 转发到JSP页面
|
||||
request.getRequestDispatcher("/jsp/user/house_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.UserDao;
|
||||
import com.hrs.dao.impl.UserDaoImpl;
|
||||
import com.hrs.service.UserService;
|
||||
import com.hrs.service.impl.UserServiceImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.util.MD5Util;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: LoginController.java
|
||||
* @Description: 登录控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:05:32
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/login")
|
||||
public class LoginController extends HttpServlet {
|
||||
|
||||
private UserDao userDao = new UserDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
// GET请求:显示登录页面
|
||||
// 如果有消息(如注册成功),传递给页面
|
||||
String message = request.getParameter("message");
|
||||
if (message != null) {
|
||||
request.setAttribute("message", message);
|
||||
}
|
||||
request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
// POST请求:处理登录表单提交
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
// 1. 获取表单参数
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
String roleType = request.getParameter("roleType"); // 前端传:0-租客 1-房东 2-管理员
|
||||
|
||||
// 2. 基础验证
|
||||
if (username == null || username.trim().isEmpty() ||
|
||||
password == null || password.trim().isEmpty()) {
|
||||
request.setAttribute("error", "用户名和密码不能为空");
|
||||
request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. 密码MD5加密(因为数据库里存的是MD5)
|
||||
String encryptedPassword = MD5Util.md5(password);
|
||||
|
||||
// 4. 调用Service查询用户
|
||||
UserService userService = new UserServiceImpl();
|
||||
User user = userService.login(username, password, roleType);
|
||||
|
||||
// 5. 验证结果
|
||||
if (user == null) {
|
||||
// 登录失败
|
||||
request.setAttribute("error", "用户名或密码错误");
|
||||
request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 6. 验证角色是否匹配
|
||||
if (!user.getRoleType().equals(roleType)) {
|
||||
request.setAttribute("error", "角色类型不匹配");
|
||||
request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 7. 验证账号状态
|
||||
if ("2".equals(user.getStatus())) {
|
||||
request.setAttribute("error", "账号已被禁用,请联系管理员");
|
||||
request.getRequestDispatcher("/jsp/user/login.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 8. 登录成功,保存用户信息到Session
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("loginUser", user);
|
||||
session.setAttribute("userRole", user.getRoleType());
|
||||
session.setMaxInactiveInterval(30 * 60); // 30分钟超时
|
||||
|
||||
// 9. 根据角色跳转到不同首页
|
||||
String redirectUrl = "/HRS/";
|
||||
switch (user.getRoleType()) {
|
||||
case "0": // 租客
|
||||
redirectUrl = "/HRS/jsp/user/index.jsp";
|
||||
break;
|
||||
case "1": // 房东
|
||||
redirectUrl = "/HRS/jsp/landlord/index.jsp";
|
||||
break;
|
||||
case "2": // 管理员
|
||||
redirectUrl = "/HRS/jsp/admin/index.jsp";
|
||||
break;
|
||||
}
|
||||
|
||||
response.sendRedirect(redirectUrl);
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: LogoutController.java
|
||||
* @Description: 退出登录控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:06:00
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/logout")
|
||||
public class LogoutController extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 1. 获取Session
|
||||
HttpSession session = request.getSession(false);
|
||||
|
||||
// 2. 如果Session存在,销毁它
|
||||
if (session != null) {
|
||||
session.invalidate();
|
||||
}
|
||||
|
||||
// 3. 跳转到登录页面
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
doGet(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.model.entity.Order;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: OrderCancelController.java
|
||||
* @Description: 取消订单控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:06:23
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/order/cancel")
|
||||
public class OrderCancelController extends HttpServlet {
|
||||
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String orderIdStr = request.getParameter("id");
|
||||
if (orderIdStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long orderId = Long.parseLong(orderIdStr);
|
||||
Order order = orderDao.findById(orderId);
|
||||
|
||||
if (order == null || !order.getTenantId().equals(loginUser.getId())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list");
|
||||
return;
|
||||
}
|
||||
|
||||
// 只有待支付的订单可以取消
|
||||
if (!"0".equals(order.getPayStatus())) {
|
||||
String encodedError = URLEncoder.encode("该订单无法取消", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list?error=" + encodedError);
|
||||
return;
|
||||
}
|
||||
|
||||
boolean success = orderDao.updateStatus(orderId, "3"); // 3-已取消
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("订单已取消", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("取消失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,166 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.service.OrderService;
|
||||
import com.hrs.service.impl.OrderServiceImpl;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: OrderCreateController.java
|
||||
* @Description: 创建订单控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:06:38
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/order/create")
|
||||
public class OrderCreateController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取房源ID
|
||||
String houseIdStr = request.getParameter("houseId");
|
||||
if (houseIdStr == null || houseIdStr.trim().isEmpty()) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
House house = houseDao.findById(houseId);
|
||||
|
||||
if (house == null || !"1".equals(house.getStatus())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
request.setAttribute("house", house);
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
request.getRequestDispatcher("/jsp/user/order_create.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String houseIdStr = request.getParameter("houseId");
|
||||
String startDateStr = request.getParameter("startDate");
|
||||
String endDateStr = request.getParameter("endDate");
|
||||
|
||||
if (houseIdStr == null || startDateStr == null || endDateStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
House house = houseDao.findById(houseId);
|
||||
|
||||
if (house == null || !"1".equals(house.getStatus())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return;
|
||||
}
|
||||
|
||||
// 解析日期
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date startDate, endDate;
|
||||
try {
|
||||
startDate = sdf.parse(startDateStr);
|
||||
endDate = sdf.parse(endDateStr);
|
||||
} catch (ParseException e) {
|
||||
request.setAttribute("error", "日期格式错误");
|
||||
request.setAttribute("house", house);
|
||||
request.getRequestDispatcher("/jsp/user/order_create.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 验证日期
|
||||
if (startDate.before(new Date())) {
|
||||
request.setAttribute("error", "租赁开始日期不能早于今天");
|
||||
request.setAttribute("house", house);
|
||||
request.getRequestDispatcher("/jsp/user/order_create.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
if (endDate.before(startDate)) {
|
||||
request.setAttribute("error", "结束日期不能早于开始日期");
|
||||
request.setAttribute("house", house);
|
||||
request.getRequestDispatcher("/jsp/user/order_create.jsp").forward(request, response);
|
||||
return;
|
||||
}
|
||||
|
||||
// 修改为
|
||||
OrderService orderService = new OrderServiceImpl();
|
||||
OrderService.CreateOrderResult result = orderService.createOrder(
|
||||
loginUser.getId(), houseId, startDate, endDate
|
||||
);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
// 对中文消息进行 URL 编码
|
||||
String encodedMsg = URLEncoder.encode(result.getMessage(), "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
request.setAttribute("error", result.getMessage());
|
||||
request.setAttribute("house", house);
|
||||
request.getRequestDispatcher("/jsp/user/order_create.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成订单编号
|
||||
*/
|
||||
private String generateOrderNo() {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
||||
return "ORD" + sdf.format(new Date());
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.model.entity.Order;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: OrderListController.java
|
||||
* @Description: 我的订单列表控制器(租客端)
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:07:07
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/order/list")
|
||||
public class OrderListController extends HttpServlet {
|
||||
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
List<Order> orderList = orderDao.findByTenantId(loginUser.getId());
|
||||
|
||||
request.setAttribute("orderList", orderList);
|
||||
request.setAttribute("totalCount", orderList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/user/order_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.OrderDao;
|
||||
import com.hrs.dao.impl.OrderDaoImpl;
|
||||
import com.hrs.model.entity.Order;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: OrderPayController.java
|
||||
* @Description: 订单支付控制器(模拟支付)
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:07:43
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/order/pay")
|
||||
public class OrderPayController extends HttpServlet {
|
||||
|
||||
private OrderDao orderDao = new OrderDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
String orderIdStr = request.getParameter("id");
|
||||
if (orderIdStr == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list");
|
||||
return;
|
||||
}
|
||||
|
||||
Long orderId = Long.parseLong(orderIdStr);
|
||||
Order order = orderDao.findById(orderId);
|
||||
|
||||
if (order == null || !order.getTenantId().equals(loginUser.getId())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list");
|
||||
return;
|
||||
}
|
||||
|
||||
// 模拟支付:更新支付状态为已支付
|
||||
boolean success = orderDao.updatePayStatus(orderId, "1");
|
||||
|
||||
if (success) {
|
||||
String encodedMsg = URLEncoder.encode("支付成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
String encodedError = URLEncoder.encode("支付失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/order/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.UserDao;
|
||||
import com.hrs.dao.impl.UserDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.service.UserService;
|
||||
import com.hrs.service.impl.UserServiceImpl;
|
||||
import com.hrs.util.MD5Util;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: RegisterController.java
|
||||
* @Description: 注册控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:08:06
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/register")
|
||||
public class RegisterController extends HttpServlet {
|
||||
|
||||
private UserDao userDao = new UserDaoImpl();
|
||||
private UserService userService = new UserServiceImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
// GET请求:显示注册页面
|
||||
request.getRequestDispatcher("/jsp/user/register.jsp").forward(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
// POST请求:处理注册表单提交
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
// 1. 获取表单参数
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
String confirmPassword = request.getParameter("confirmPassword");
|
||||
String realName = request.getParameter("realName");
|
||||
String phone = request.getParameter("phone");
|
||||
String idCard = request.getParameter("idCard");
|
||||
String roleType = request.getParameter("roleType");
|
||||
|
||||
// 2. 创建用户对象
|
||||
User user = new User();
|
||||
user.setUserName(username);
|
||||
user.setPassword(password); // 密码将在Service层加密
|
||||
user.setRealName(realName);
|
||||
user.setPhone(phone);
|
||||
user.setIdCard(idCard);
|
||||
user.setRoleType(roleType); // 0-租客 1-房东
|
||||
user.setStatus("0"); // 默认未认证状态
|
||||
|
||||
// 3. 调用UserService进行注册验证和保存
|
||||
UserService.RegisterResult result = userService.register(user, confirmPassword);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
// 注册成功,跳转到登录页面(使用重定向避免表单重复提交)
|
||||
String encodedMsg = URLEncoder.encode(result.getMessage(), "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/login?message=" + encodedMsg);
|
||||
} else {
|
||||
// 注册失败,留在注册页面显示错误
|
||||
request.setAttribute("error", result.getMessage());
|
||||
request.getRequestDispatcher("/jsp/user/register.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,150 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.HouseDao;
|
||||
import com.hrs.dao.impl.HouseDaoImpl;
|
||||
import com.hrs.model.entity.House;
|
||||
import com.hrs.model.entity.User;
|
||||
import com.hrs.service.ReservationService;
|
||||
import com.hrs.service.impl.ReservationServiceImpl;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: ReservationAddController.java
|
||||
* @Description: 添加预约控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:11:10
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/reservation/add")
|
||||
public class ReservationAddController extends HttpServlet {
|
||||
|
||||
private HouseDao houseDao = new HouseDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
String houseIdStr = request.getParameter("houseId");
|
||||
if (houseIdStr == null || houseIdStr.trim().isEmpty()) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
House house = houseDao.findById(houseId);
|
||||
|
||||
if (house == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/house/list");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
|
||||
request.setAttribute("house", house);
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
request.getRequestDispatcher("/jsp/user/reservation_add.jsp").forward(request, response);
|
||||
// forward后不需要return,因为这是最后一行
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
String houseIdStr = request.getParameter("houseId");
|
||||
String reserveDate = request.getParameter("reserveDate");
|
||||
String reserveTime = request.getParameter("reserveTime");
|
||||
String remark = request.getParameter("remark");
|
||||
|
||||
// 验证参数
|
||||
if (houseIdStr == null || reserveDate == null || reserveTime == null) {
|
||||
// 错误时回到预约表单页
|
||||
request.setAttribute("error", "请填写完整信息");
|
||||
doGet(request, response);
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
Long houseId = Long.parseLong(houseIdStr);
|
||||
House house = houseDao.findById(houseId);
|
||||
|
||||
if (house == null) {
|
||||
request.setAttribute("error", "房源不存在");
|
||||
doGet(request, response);
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
// 组合时间
|
||||
String datetimeStr = reserveDate + " " + reserveTime + ":00";
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Date reserveDateTime;
|
||||
try {
|
||||
reserveDateTime = sdf.parse(datetimeStr);
|
||||
} catch (Exception e) {
|
||||
request.setAttribute("error", "时间格式错误");
|
||||
doGet(request, response);
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
if (reserveDateTime.before(new Date())) {
|
||||
request.setAttribute("error", "预约时间不能早于当前时间");
|
||||
doGet(request, response);
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
// 原来的代码
|
||||
// Reservation reservation = new Reservation();
|
||||
// reservation.setTenantId(loginUser.getId());
|
||||
// reservation.setHouseId(houseId);
|
||||
// reservation.setLandlordId(house.getLandlordId());
|
||||
// reservation.setReserveTime(reserveDateTime);
|
||||
// reservation.setRemark(remark);
|
||||
// boolean success = reservationDao.add(reservation);
|
||||
|
||||
// 修改为
|
||||
ReservationService reservationService = new ReservationServiceImpl();
|
||||
ReservationService.ReservationResult result = reservationService.createReservation(
|
||||
loginUser.getId(), houseId, reserveDateTime, remark
|
||||
);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
// 对中文消息进行 URL 编码
|
||||
String encodedMsg = URLEncoder.encode(result.getMessage(), "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/reservation/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
request.setAttribute("error", result.getMessage());
|
||||
doGet(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.ReservationDao;
|
||||
import com.hrs.dao.impl.ReservationDaoImpl;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: ReservationCancelController.java
|
||||
* @Description: 取消预约控制器
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:12:10
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/reservation/cancel")
|
||||
public class ReservationCancelController extends HttpServlet {
|
||||
|
||||
private ReservationDao reservationDao = new ReservationDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
String idStr = request.getParameter("id");
|
||||
if (idStr == null || idStr.trim().isEmpty()) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/reservation/list");
|
||||
return; // ← 必须加return
|
||||
}
|
||||
|
||||
Long id = Long.parseLong(idStr);
|
||||
boolean success = reservationDao.cancel(id, loginUser.getId());
|
||||
|
||||
if (success) {
|
||||
// ✅ 成功:重定向到预约列表,带成功消息
|
||||
String encodedMsg = URLEncoder.encode("取消预约成功", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/reservation/list?msg=" + encodedMsg);
|
||||
} else {
|
||||
// ❌ 失败:重定向到预约列表,带错误消息
|
||||
String encodedError = URLEncoder.encode("取消预约失败", "UTF-8");
|
||||
response.sendRedirect(request.getContextPath() + "/user/reservation/list?error=" + encodedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package com.hrs.controller.user;
|
||||
|
||||
import com.hrs.dao.ReservationDao;
|
||||
import com.hrs.dao.impl.ReservationDaoImpl;
|
||||
import com.hrs.model.entity.Reservation;
|
||||
import com.hrs.model.entity.User;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Copyright: Copyright (c) 2026 chinasofti
|
||||
*
|
||||
* @ClassName: ReservationListController.java
|
||||
* @Description: 我的预约列表控制器(租客端)
|
||||
*
|
||||
* @version: v1.0.0
|
||||
* @author: 李鑫
|
||||
* @date: 2026年4月13日 上午9:12:43
|
||||
*
|
||||
* Modification History:
|
||||
* Date Author Version Description
|
||||
*---------------------------------------------------------*
|
||||
* 2026年4月13日 李鑫 v1.0.0 新建文件
|
||||
*/
|
||||
@WebServlet("/user/reservation/list")
|
||||
public class ReservationListController extends HttpServlet {
|
||||
|
||||
private ReservationDao reservationDao = new ReservationDaoImpl();
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
// 获取登录用户
|
||||
HttpSession session = request.getSession(false);
|
||||
if (session == null) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
User loginUser = (User) session.getAttribute("loginUser");
|
||||
if (loginUser == null || !"0".equals(loginUser.getRoleType())) {
|
||||
response.sendRedirect(request.getContextPath() + "/user/login");
|
||||
return;
|
||||
}
|
||||
|
||||
// 查询预约列表
|
||||
List<Reservation> reservationList = reservationDao.findByTenantId(loginUser.getId());
|
||||
|
||||
request.setAttribute("reservationList", reservationList);
|
||||
request.setAttribute("totalCount", reservationList.size());
|
||||
request.setAttribute("loginUser", loginUser);
|
||||
|
||||
request.getRequestDispatcher("/jsp/user/reservation_list.jsp").forward(request, response);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user