基于javaweb+mysql的ssm+maven维修报修管理系统(管理员、维修人员、普通用户)(java+jsp+ssm+maven+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
管理员:登录、平台管理、用户管理、报修受理与维修人员分配
普通用户:登录、注册、报修查询、报修、报修结果确认及评价
维修人员:登录、报修确认
普通用户:
管理员:
维修人员:
技术框架
JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) Maven MySQL jQuery JavaScript CSS
基于javaweb+mysql的SSM+Maven维修报修管理系统(管理员、维修人员、普通用户)(java+jsp+ssm+maven+mysql)
Long userId = userService.getUser(request, response).getUsrId();
res=userInfoService.updateUserInfo(userId,trueName,phone,address);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
}
@Controller
@RequestMapping("/placard")
public class PlacardController {
@Autowired
private PlacardService placardService;
/**
* 添加通知
*
* @param title
* @param content
* @param request
* @param response
* @return
*/
@ResponseBody
@Service
public class UserService {
@Autowired
UserManager userManager;
@Autowired
UserInfoManager userInfoManager;
/**
* 登录
*
* @param userName
* @param password
* @param rememberMe
* @param request
* @param response
* @return
*/
@Transactional(propagation = Propagation.REQUIRED)
public Res login(String userName, String password, String rememberMe, HttpServletRequest request,
HttpServletResponse response) {
Res res = new Res();
try {
if (ValidateUtils.isNull(userName)) {
throw new SerialException("用户名不能为空");
}
if (ValidateUtils.isNull(password)) {
throw new SerialException("密码不能为空");
}
User user = userManager.getUser(userName, password);
if (user == null) {
request.getSession().setAttribute("sessionBean", null);
throw new ServiceException("用户名或者密码错误");
} else {
user.setIsOnline(1);
user.setLoginIp(request.getRemoteAddr());
/**
* 封装返回json数据
*
*
*/
public class Res {
public static final String MESSAGE_NAME_ERROR = "error";
// public static final String MESSAGE_NAME_EXCEPTION="exception";
private int code;
private Map<String, Object> response;
private Map<String, Object> message;
public Res() {
code = 200;
response = new HashMap<String, Object>();
message = new HashMap<String, Object>();
}
public ModelAndView toView(HttpServletResponse response2) {
ModelAndView mav = new ModelAndView();
MappingJacksonJsonView jsonView = new MappingJacksonJsonView();
Map<String, Object> attributes = new HashMap<String, Object>();
if (code == 200) {
attributes.put("code", code);
attributes.put("response", response);
} else {
attributes.put("code", code);
attributes.put("message", message);
}
jsonView.setAttributesMap(attributes);
mav.setView(jsonView);
response2.addHeader("Access-Control-Allow-Origin", "*");
return mav;
}
public ModelAndView toView2(HttpServletResponse response2) {
Map<String, Object> attributes = new HashMap<String, Object>();
@RequestParam(value = "directPage", required = false) String directPage,
HttpServletRequest request,HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
if(user==null){
throw new ServiceException("未登录");
}
res.addRespose("isLogin", 1);
res.addRespose("groupId", user.getGroupId());
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
@ResponseBody
@RequestMapping("/logout")
public ModelAndView logout(
@RequestParam(value = "directPage", required = false) String directPage,
HttpServletRequest request,HttpServletResponse response) {
Res res = new Res();
try {
res = userService.logout(request, response);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 用户注册接口
* @param userName
* @param password
* @param password2
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/singIn")
public ModelAndView singIn(
@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "password", required = false) String password,
@RequestParam(value = "password2", required = false) String password2,
String sessionKey = cookie.getValue();
user = userManager.getBySessionKey(sessionKey);
if (user != null && user.getIsOnline() == 1) {
isOnline = true;
request.getSession().setAttribute("sessionKey", user.getSessionKey());
}
}
}
}
}
if (!isOnline) {
Res res = new Res();
res.addNoPermission("未登录");
res.toView(response);
}
return isOnline;
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
}
/**
* 在业务处理器处理请求执行完成后,生成视图之前执行的动作 可在modelAndView中加入数据,比如当前时间
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
/**
* 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等
*
* 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
public String[] getPublicUrls() {
return publicUrls;
}
public void setPublicUrls(String[] publicUrls) {
this.publicUrls = publicUrls;
}
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 用户登录接口
*
* @param userName
* @param password
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/login")
public ModelAndView login(@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "password", required = false) String password,
@RequestParam(value = "rememberMe", required = false) String rememberMe,
@RequestParam(value = "directPage", required = false) String directPage,
HttpServletRequest request,HttpServletResponse response) {
Res res = new Res();
try {
res = userService.login(userName, password, rememberMe, request, response);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 判断是否登录
* @param directPage
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/checkLogin")
public ModelAndView isLogin(
@RequestParam(value = "directPage", required = false) String directPage,
HttpServletRequest request,HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
throw new ServiceException("用户类型错误");
} else {
int gid = Integer.parseInt(groupId);
if (gid != 1 && gid != 2 && gid != 3) {
throw new ServiceException("分用户类型错误");
}
}
//用户注册信息
user.setUsrAccount(userName);
user.setUsrPassword(password);
user.setUsrMobile(usrMobile);
user.setGroupId(Integer.parseInt(groupId));
user.setRegisterTime(new Date());
userManager.insert(user);
//用户基本信息
UserInfo userInfo = new UserInfo();
userInfo.setUsrId(user.getUsrId());
userInfo.setPhone(usrMobile);
userInfo.setAddress(address);
userInfo.setTrueName(userName);
userInfo.setUpdateTime(new Date());
userInfo.setCreateTime(new Date());
userInfoManager.insert(userInfo);
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
return res;
}
public Res removeUser(String userId) {
Res res = new Res();
try {
if(!ValidateUtils.isLong(userId)){
throw new ServiceException("用户id错误");
}
if("1".equals(userId)){
throw new ServiceException("不能删除系统管理员admin");
}
userManager.removeUser(Long.parseLong(userId));
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
return res;
}
}
response.getWriter().write("<h1>Hello " + name + "</h1>");
} catch (IOException e) {
}
return null;
}
}
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 用户登录接口
*
* @param userName
* @param password
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/login")
public ModelAndView login(@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "password", required = false) String password,
@RequestParam(value = "rememberMe", required = false) String rememberMe,
}
return res.toView(response);
}
}
@Controller
@RequestMapping("/repairAllocation")
public class RepairAllocationController {
@Autowired
private RepairAllocationService repairAllocationService;
@Autowired
private UserService userService;
@ResponseBody
@RequestMapping("/allotRepairOrder")
public ModelAndView allotRepairOrder(
@RequestParam(value = "orderId", required = false, defaultValue = "") String orderId,
@RequestParam(value = "userId", required = false, defaultValue = "") String userId,
HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
res = repairAllocationService.allotRepairOrder(orderId, userId,user.getUsrId());
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
}
String sessionKey = cookie.getValue();
user = userManager.getBySessionKey(sessionKey);
if (user != null && user.getIsOnline() == 1) {
isOnline = true;
request.getSession().setAttribute("sessionKey", user.getSessionKey());
}
}
}
}
}
if (!isOnline) {
Res res = new Res();
res.addNoPermission("未登录");
res.toView(response);
}
return isOnline;
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
}
/**
* 在业务处理器处理请求执行完成后,生成视图之前执行的动作 可在modelAndView中加入数据,比如当前时间
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
/**
* 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等
*
* 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
public String[] getPublicUrls() {
return publicUrls;
}
public void setPublicUrls(String[] publicUrls) {
this.publicUrls = publicUrls;
}
}
user.setRegisterIp(request.getRemoteAddr());
user.setRegUserAgent(request.getHeader("User-Agent"));
user.setIsOnline(0);
user.setStatus(1);
userManager.insert(user);
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
return res;
}
// 获取登录用户id
@Transactional
public User getUser(HttpServletRequest request, HttpServletResponse response) {
boolean isOnline = false;
try {
User user = null;
String sessionKey = (String) request.getSession().getAttribute("sessionKey");
if (sessionKey != null) {
user = userManager.getBySessionKey(sessionKey);
if (user != null && user.getIsOnline() == 1) {
isOnline = true;
}
}
if (isOnline) {
return user;
} else {
throw new ServiceException("未登录");
}
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
}
@Transactional
public Res changePassword(Long userId, String password, String password2) {
Res res = new Res();
try {
if (ValidateUtils.isNull(password) || ValidateUtils.isNull(password2)) {
throw new ServiceException("密码不能为空");
}
User user = userManager.getUser(userId);
if (!user.getUsrPassword().equals(password)) {
throw new ServiceException("原密码错误");
}
userManager.update(user);
SessionBean sessionBean = new SessionBean();
sessionBean.setGroupId(user.getGroupId());
sessionBean.setMobile(user.getUsrMobile());
sessionBean.setNickName(user.getUsrNickName());
sessionBean.setSessionKey(user.getSessionKey());
sessionBean.setUserAccount(user.getUsrAccount());
sessionBean.setUserId(user.getUsrId());
request.getSession().setAttribute("sessionBean", sessionBean);
if (ValidateUtils.isInt(rememberMe) && Integer.parseInt(rememberMe) == 1) {
Cookie cookie = new Cookie("sessionKey", user.getSessionKey());
cookie.setMaxAge(7 * 24 * 60 * 60);
cookie.setPath("/");
response.addCookie(cookie);
} else {
Cookie cookie = new Cookie("sessionKey", user.getSessionKey());
cookie.setMaxAge(10 * 60);
cookie.setPath("/");
response.addCookie(cookie);
}
res.addRespose("user", user);
}
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
return res;
}
@Transactional
public Res singIn(String userName, String password, String password2, HttpServletRequest request,
HttpServletResponse response) {
Res res = new Res();
try {
if (ValidateUtils.isNull(userName)) {
throw new ServiceException("用户名不能为空");
}
if (ValidateUtils.isNull(password) || ValidateUtils.isNull(password2)) {
throw new ServiceException("密码不能为空");
}
if (userName.length() < 3) {
throw new ServiceException("用户名不能小于3个字符");
}
private RepairAllocationService repairAllocationService;
@Autowired
private UserService userService;
@ResponseBody
@RequestMapping("/allotRepairOrder")
public ModelAndView allotRepairOrder(
@RequestParam(value = "orderId", required = false, defaultValue = "") String orderId,
@RequestParam(value = "userId", required = false, defaultValue = "") String userId,
HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
res = repairAllocationService.allotRepairOrder(orderId, userId,user.getUsrId());
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
}
@Controller
@RequestMapping("/index")
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
return res;
}
// 获取登录用户id
@Transactional
public User getUser(HttpServletRequest request, HttpServletResponse response) {
boolean isOnline = false;
try {
User user = null;
String sessionKey = (String) request.getSession().getAttribute("sessionKey");
if (sessionKey != null) {
user = userManager.getBySessionKey(sessionKey);
if (user != null && user.getIsOnline() == 1) {
isOnline = true;
}
}
if (isOnline) {
return user;
} else {
throw new ServiceException("未登录");
}
} catch (ServiceException e) {
throw e;
} catch (Exception e) {
throw new ServiceException(e.getMessage(), e);
}
}
@Transactional
public Res changePassword(Long userId, String password, String password2) {
Res res = new Res();
try {
if (ValidateUtils.isNull(password) || ValidateUtils.isNull(password2)) {
throw new ServiceException("密码不能为空");
}
User user = userManager.getUser(userId);
if (!user.getUsrPassword().equals(password)) {
throw new ServiceException("原密码错误");
}
Res res = new Res();
try {
User user = userService.getUser(request, response);
res = repairOrderService.getMyRepairOrderList(user);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 获取我维修的订单
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/getMyTaskOrder")
public ModelAndView getMyTaskOrder(HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
res = repairOrderService.getMyTaskOrder(user);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 评价订单
* @param orderId
* @param star
* @param comment
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/commentOrder")
public ModelAndView commentOrder(
@RequestParam(value = "orderId", required = false, defaultValue = "") String orderId,
@RequestParam(value = "star", required = false, defaultValue = "") String star,
@RequestParam(value = "comment", required = false, defaultValue = "") String comment,
HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 获取我维修的订单
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/getMyTaskOrder")
public ModelAndView getMyTaskOrder(HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
res = repairOrderService.getMyTaskOrder(user);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 评价订单
* @param orderId
* @param star
* @param comment
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/commentOrder")
public ModelAndView commentOrder(
@RequestParam(value = "orderId", required = false, defaultValue = "") String orderId,
@RequestParam(value = "star", required = false, defaultValue = "") String star,
@RequestParam(value = "comment", required = false, defaultValue = "") String comment,
HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
User user = userService.getUser(request, response);
res = repairOrderService.commentOrder(orderId,star,comment,user);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
public ModelAndView addPlacard(@RequestParam(value = "title", required = false, defaultValue = "") String title,
@RequestParam(value = "content", required = false, defaultValue = "") String content,
HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
res = placardService.addPlacard(title, content);
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
/**
* 获取最新通知
*
* @param request
* @param response
* @return
*/
@ResponseBody
@RequestMapping("/getLastedPlacard")
public ModelAndView getLastedPlacard(HttpServletRequest request, HttpServletResponse response) {
Res res = new Res();
try {
res = placardService.getLastedPlacard();
} catch (ServiceException e) {
e.printStackTrace();
res.addError(Res.MESSAGE_NAME_ERROR, e.getMessage());
}
return res.toView(response);
}
}