基于javaweb+mysql的ssm+maven在线汽车租赁系统(前台+后台)(java+jsp+ssm+layui+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven在线汽车租赁系统(前台+后台)(java+jsp+ssm+layui+mysql)
一、项目简述 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等
*/
@RequestMapping("addRole")
public ResultObj addRole(RoleVo roleVo) {
try {
this.roleService.addRole(roleVo);
return ResultObj.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.ADD_ERROR;
}
}
/**
* 修改角色
*/
@RequestMapping("updateRole")
public ResultObj updateRole(RoleVo roleVo) {
try {
this.roleService.updateRole(roleVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
}
}
/**
* 删除角色
*/
@RequestMapping("deleteRole")
public ResultObj deleteRole(RoleVo roleVo) {
try {
this.roleService.deleteRole(roleVo.getRoleid());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
/**
* 批量删除角色
*/
@RequestMapping("deleteBatchRole")
public ResultObj deleteBatchRole(RoleVo roleVo) {
try {
/**
* 重置密码
* @param userVo
* @return
*/
@RequestMapping("resetUserPwd")
public ResultObj resetUserPwd(UserVo userVo){
try {
this.userService.resetUserPwd(userVo.getUserid());
return ResultObj.RESET_SUCCESS;
}catch (Exception e){
return ResultObj.RESET_ERROR;
}
}
/**
* 加载用户管理的分配角色的数据
* @param userVo
* @return
*/
@RequestMapping("initUserRole")
public DataGridView initUserRole(UserVo userVo){
return this.userService.queryUserRole(userVo.getUserid());
}
/**
* 保存用户和角色的关系
* @param userVo
* @return
*/
@RequestMapping("saveUserRole")
public ResultObj saveUserRole(UserVo userVo){
try {
this.userService.saveUserRole(userVo);
return ResultObj.DISPATCH_SUCCESS;
}catch (Exception e){
e.printStackTrace();
return ResultObj.DISPATCH_ERROR;
}
}
* 添加一个客户
* @param customerVo
* @return
*/
@RequestMapping("addCustomer")
public ResultObj addCustomer(CustomerVo customerVo){
try{
customerVo.setCreatetime(new Date());
this.customerService.addCustomer(customerVo);
return ResultObj.ADD_SUCCESS;
}catch (Exception e){
e.printStackTrace();
return ResultObj.ADD_ERROR;
}
}
/**
* 修改一个客户
* @param customerVo
* @return
*/
@RequestMapping("updateCustomer")
public ResultObj updateCustomer(CustomerVo customerVo){
try{
this.customerService.updateCustomer(customerVo);
return ResultObj.UPDATE_SUCCESS;
}catch (Exception e){
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
}
}
/**
* 删除一个客户
* @param customerVo
* @return
*/
@RequestMapping("deleteCustomer")
public ResultObj deleteCustomer(CustomerVo customerVo){
try {
this.customerService.deleteCustomer(customerVo.getIdentity());
return ResultObj.DELETE_SUCCESS;
}catch (Exception e){
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
/**
* 添加
*
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping("uploadFile")
@ResponseBody
public DataGridView uploadFile(MultipartFile mf) throws IllegalStateException, IOException {
// 文件上传的父目录
String parentPath = AppFileUtils.PATH;
// 得到当前日期作为文件夹名称
String dirName = RandomUtils.getCurrentDateForString();
// 构造文件夹对象
File dirFile = new File(parentPath, dirName);
if (!dirFile.exists()) {
dirFile.mkdirs();// 创建文件夹
}
// 得到文件原名
String oldName = mf.getOriginalFilename();
// 根据文件原名得到新名
String newName = RandomUtils.createFileNameUseTime(oldName, SysConstant.FILE_UPLOAD_TEMP);
File dest = new File(dirFile, newName);
mf.transferTo(dest);
Map<String,Object> map=new HashMap<>();
map.put("src", dirName+"/"+newName);
return new DataGridView(map);
}
/**
* 不下载只显示
*/
@RequestMapping("downloadShowFile")
public ResponseEntity<Object> downloadShowFile(String path, HttpServletResponse response) {
return AppFileUtils.downloadFile(response, path, "");
}
/**
* 下载图片
* @param path
* @param response
* @return
*/
public class RoleController {
@Autowired
private RoleService roleService;
/**
* 加载角色列表返回DataGridView
*/
@RequestMapping("loadAllRole")
public DataGridView loadAllRole(RoleVo roleVo) {
return this.roleService.queryAllRole(roleVo);
}
/**
* 添加角色
*/
@RequestMapping("addRole")
public ResultObj addRole(RoleVo roleVo) {
try {
this.roleService.addRole(roleVo);
return ResultObj.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.ADD_ERROR;
}
}
/**
* 修改角色
*/
@RequestMapping("updateRole")
public ResultObj updateRole(RoleVo roleVo) {
try {
this.roleService.updateRole(roleVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
}
}
/**
* 删除角色
*/
@RequestMapping("deleteRole")
/**
*/
@RestController
@RequestMapping("menu")
public class MenuController {
@Autowired
private MenuService menuService;
@RequestMapping("loadIndexLeftMenuJson")
public List<TreeNode> loadIndexLeftMenuJson(MenuVo menuVo) {
//得到当前用户登录的对象
User user = (User) WebUtils.getHttpSession().getAttribute("user");
List<Menu> list = null;
menuVo.setAvailable(SysConstant.AVAILABLE_TRUE);//只用于查询可用的
if (user.getType() == SysConstant.USER_TYPE_SUPER) {
list = menuService.queryAllMenuForList(menuVo);
} else {
list = menuService.queryMenuByUserIdForList(menuVo, user.getUserid());
}
List<TreeNode> nodes = new ArrayList<>();
//把list里的数据方到nodes
for (Menu menu : list) {
Integer id = menu.getId();
Integer pid = menu.getPid();
String title = menu.getTitle();
String icon = menu.getIcon();
String href = menu.getHref();
Boolean spread = menu.getSpread() == SysConstant.SPREAD_TRUE ? true : false;
String target = menu.getTarget();
nodes.add(new TreeNode(id, pid, title, icon, href, spread, target));
}
return TreeNodeBuilder.builder(nodes, 1);
}
/**
* 加载菜单管理左边的菜单树
* @param menuVo
* @return
*/
@RequestMapping("loadMenuManagerLeftTreeJson")
public DataGridView loadMenuManagerLeftTreeJson(MenuVo menuVo) {
String carimg = carVo.getCarimg();
if (carimg.endsWith(SysConstant.FILE_UPLOAD_TEMP)) {
String filePath = AppFileUtils.updateFileName(carVo.getCarimg(), SysConstant.FILE_UPLOAD_TEMP);
carVo.setCarimg(filePath);
//把原来的删除
Car car = this.carService.queryCarByCarNumber(carVo.getCarnumber());
AppFileUtils.removeFileByPath(car.getCarimg());
}
this.carService.updateCar(carVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
}
}
/**
* 删除一个车辆
*
* @param carVo
* @return
*/
@RequestMapping("deleteCar")
public ResultObj deleteCar(CarVo carVo) {
try {
this.carService.deleteCar(carVo.getCarnumber());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
/**
* 批量删除车辆
*
* @param carVo
* @return
*/
@RequestMapping("deleteBatchCar")
public ResultObj deleteBatchCar(CarVo carVo) {
try {
this.carService.deleteBatchCar(carVo.getIds());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
}
}else {
return ResultObj.STATUS_FALSE;
}
}
/**
* 初始化添加出租单的表单的数据
* @param rentVo
* @return
*/
@RequestMapping("initRentFrom")
public RentVo initRentFrom(RentVo rentVo){
//生成出租单号
rentVo.setRentid(RandomUtils.createRandomStringUseTime(SysConstant.CAR_ORDER_CZ));
//设置起租时间
rentVo.setBegindate(new Date());
//设置操作员
User user = (User) WebUtils.getHttpSession().getAttribute("user");
rentVo.setOpername(user.getRealname());
return rentVo;
}
/**
* 保存出租单信息
* @param rentVo
* @return
*/
@RequestMapping("saveRent")
public ResultObj saveRent(RentVo rentVo) {
try {
//设置创建时间
rentVo.setCreatetime(new Date());
//设置归还状态
rentVo.setRentflag(SysConstant.RENT_BACK_FALSE);
//保存
this.rentService.addRent(rentVo);
return ResultObj.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.ADD_ERROR;
}
}
/******************出租单管理*******************/
/**
* 查询
*/
@RequestMapping("loadAllRent")
System.out.println("账号:" + username);
System.out.println("密码:" + password);
TbUser tbUser = tbUserService.loginCheck(username, password);
//如果登录失败
if (tbUser == null)
{
return "user/user_login";
}
else {
System.out.println("登录成功跳转至首页");
List<BusCar> arrayList = tbUserService.carAllByLimit(0,6);
LinkedList linkedList = new LinkedList();
BusCar busCar = new BusCar();
Set<BusCar> set = new HashSet<>();
for (int i = 0; i < arrayList.size(); i++) {
//车号
busCar.setCarnumber(arrayList.get(i).getCarnumber());
//车封面
busCar.setCarimg(arrayList.get(i).getCarimg());
//车名
busCar.setDescription(arrayList.get(i).getDescription());
//车价
busCar.setPrice(arrayList.get(i).getPrice());
//租金
busCar.setRentprice(arrayList.get(i).getRentprice());
linkedList.add(busCar);
}
model.addAttribute("car",arrayList);
model.addAttribute("tbuser",tbUser);
httpSession.setAttribute("tbuser",tbUser);
return "user/index";
}
}
/*登录成功后进入用户中心*/
@RequestMapping("/user/userCenter.action")
public String userCenter(Model model,HttpSession httpSession){
TbUser tbUser = new TbUser();
tbUser = (TbUser) httpSession.getAttribute("tbuser");
model.addAttribute("tbuser",tbUser);
return "user/user_center";
}
/**
/**
* 文件上传下载的控制器
*
*/
@Controller
@RequestMapping("file")
public class FileController {
/**
* 添加
*
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping("uploadFile")
@ResponseBody
public DataGridView uploadFile(MultipartFile mf) throws IllegalStateException, IOException {
// 文件上传的父目录
String parentPath = AppFileUtils.PATH;
// 得到当前日期作为文件夹名称
String dirName = RandomUtils.getCurrentDateForString();
// 构造文件夹对象
File dirFile = new File(parentPath, dirName);
if (!dirFile.exists()) {
dirFile.mkdirs();// 创建文件夹
}
// 得到文件原名
String oldName = mf.getOriginalFilename();
// 根据文件原名得到新名
String newName = RandomUtils.createFileNameUseTime(oldName, SysConstant.FILE_UPLOAD_TEMP);
File dest = new File(dirFile, newName);
mf.transferTo(dest);
*/
@Controller
public class TbUserController {
/**
* 服务对象
*/
@Autowired
private TbUserService tbUserService;
/*首页*/
@RequestMapping(value = "/user/index.action")
public String showCarIndex(Model mv,HttpSession httpSession){
System.out.println("打开首页成功");
TbUser tbUser = new TbUser();
List<BusCar> arrayList = tbUserService.carAllByLimit(1,6);
mv.addAttribute("car",arrayList);
tbUser = (TbUser) httpSession.getAttribute("tbuser");
mv.addAttribute("tbuser",tbUser);
return "user/index";
}
@RequestMapping("carDetail.action")
public String carDetail(String car,Model model){
BusCar busCarcar = tbUserService.carByCarNumber(car);
model.addAttribute("car",busCarcar);
System.out.println("车牌号是"+car);
return "user/car_detail";
}
/**
* 跳转登录页面
* @param model
* @return
*/
@RequestMapping(value="/user/login.action",method= RequestMethod.GET)
public String login(Model model,HttpSession httpSession) {
model.addAttribute("tbuser",httpSession.getAttribute("tbuser"));
return "user/user_login";
}
@RequestMapping("/user/loginCheck.action")
public String loginCheck(String username, String password, Model model,HttpSession httpSession) {
model.addAttribute("car",arrayList);
model.addAttribute("tbuser",tbUser);
httpSession.setAttribute("tbuser",tbUser);
return "user/index";
}
}
/*登录成功后进入用户中心*/
@RequestMapping("/user/userCenter.action")
public String userCenter(Model model,HttpSession httpSession){
TbUser tbUser = new TbUser();
tbUser = (TbUser) httpSession.getAttribute("tbuser");
model.addAttribute("tbuser",tbUser);
return "user/user_center";
}
/**
* 登录成功后用户可以退出
* @param request
* @return
*/
@RequestMapping(value = "/user/user_out.action",method = RequestMethod.GET)
public String user_out(HttpServletRequest request){
ModelAndView mav = new ModelAndView();
HttpSession session = request.getSession();
session.removeAttribute("tbuser");
System.out.println("用户退出成功");
return "user/user_out";
}
/**
* 跳转注册页面
* @returner
*/
@RequestMapping("/user/register.action")
public String register(Model model) {
TbUser tbUser = new TbUser();
model.addAttribute("tbuser",tbUser);
return "user/user_register";
}
/**
* 注册功能处理
* @param username
}
/**
* 保存用户和角色的关系
* @param userVo
* @return
*/
@RequestMapping("saveUserRole")
public ResultObj saveUserRole(UserVo userVo){
try {
this.userService.saveUserRole(userVo);
return ResultObj.DISPATCH_SUCCESS;
}catch (Exception e){
e.printStackTrace();
return ResultObj.DISPATCH_ERROR;
}
}
}
@RestController
@RequestMapping("car")
public class CarController {
@Autowired
private CarService carService;
/**
* 加载车辆列表返回DataGridView
* @return
*/
@RequestMapping("toUserManager")
public String toUserManager(){
return "system/user/userManager";
}
/**
* 跳转到日志管理页面
* @return
*/
@RequestMapping("toLogInfoManager")
public String toLogInfoManager(){
return "system/logInfo/logInfoManager";
}
/**
* 跳转到公告管理
* @return
*/
@RequestMapping("toNewsManager")
public String toNewsManager(){
return "system/news/newsManager";
}
}
/**
* 业务管理的路由跳转页面
*/
@Controller
@RequestMapping("bus")
public class BusController {
/**
* 跳转到客户管理
* @return
*/
@RequestMapping("toCustomerManager")
public String toCustomerManager(){
return "business/customer/customerManager";
}
/**
* 跳转到车辆管理
* @return
*/
try {
//处理文件名乱码
fileName= URLEncoder.encode(fileName,"UTF-8");
//创建 封装响应头信息的对象
HttpHeaders headers = new HttpHeaders();
//封装响应内容类型(APPLICATION_OCTET_STREAM 响应的内容不限定)
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//设置下载的文件的名称
headers.setContentDispositionFormData("attachment",fileName);
return new ResponseEntity<Object>(bos.toByteArray(),headers, HttpStatus.CREATED);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
/**
* 导出出租单数据
* @param rentid
*/
@RequestMapping("exportRent")
public ResponseEntity<Object> exportRent(String rentid){
//根据出租单号查询出租单信息
Rent rent = rentService.queryRentByRentId(rentid);
//根据身份证号查询客户信息
Customer customer = customerService.queryCustomerByIdentity(rent.getIdentity());
String fileName=customer.getCustname()+"-的出租单.xls";
String sheetName=customer.getCustname()+"出租单";
ByteArrayOutputStream bos = ExportRentUtils.exportRent(rent,customer,sheetName);
try {
//处理文件名乱码
fileName= URLEncoder.encode(fileName,"UTF-8");
//创建 封装响应头信息的对象
HttpHeaders headers = new HttpHeaders();
//封装响应内容类型(APPLICATION_OCTET_STREAM 响应的内容不限定)
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//设置下载的文件的名称
headers.setContentDispositionFormData("attachment",fileName);
/**
* 删除角色
*/
@RequestMapping("deleteRole")
public ResultObj deleteRole(RoleVo roleVo) {
try {
this.roleService.deleteRole(roleVo.getRoleid());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
/**
* 批量删除角色
*/
@RequestMapping("deleteBatchRole")
public ResultObj deleteBatchRole(RoleVo roleVo) {
try {
this.roleService.deleteBatchRole(roleVo.getIds());
return ResultObj.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.DELETE_ERROR;
}
}
/**
* 加载角色管理分配菜单的json
*/
@RequestMapping("initRoleMenuTreeJson")
public DataGridView initRoleMenuTreeJson(Integer roleid) {
return this.roleService.initRoleMenuTreeJson(roleid);
}
/**
* 保存角色和菜单的关系
*/
@RequestMapping("saveRoleMenu")
public ResultObj saveRoleMenu(RoleVo roleVo) {
try {
this.roleService.saveRoleMenu(roleVo);
return ResultObj.DISPATCH_SUCCESS;
} catch (Exception e) {
System.out.println("账号:" + username);
System.out.println("密码:" + password);
TbUser tbUser = tbUserService.loginCheck(username, password);
//如果登录失败
if (tbUser == null)
{
return "user/user_login";
}
else {
System.out.println("登录成功跳转至首页");
List<BusCar> arrayList = tbUserService.carAllByLimit(0,6);
LinkedList linkedList = new LinkedList();
BusCar busCar = new BusCar();
Set<BusCar> set = new HashSet<>();
for (int i = 0; i < arrayList.size(); i++) {
//车号
busCar.setCarnumber(arrayList.get(i).getCarnumber());
//车封面
busCar.setCarimg(arrayList.get(i).getCarimg());
//车名
busCar.setDescription(arrayList.get(i).getDescription());
//车价
busCar.setPrice(arrayList.get(i).getPrice());
//租金
busCar.setRentprice(arrayList.get(i).getRentprice());
linkedList.add(busCar);
}
model.addAttribute("car",arrayList);
model.addAttribute("tbuser",tbUser);
httpSession.setAttribute("tbuser",tbUser);
return "user/index";
}
}
/*登录成功后进入用户中心*/
@RequestMapping("/user/userCenter.action")
public String userCenter(Model model,HttpSession httpSession){
TbUser tbUser = new TbUser();
tbUser = (TbUser) httpSession.getAttribute("tbuser");
model.addAttribute("tbuser",tbUser);
return "user/user_center";
}
* 统计分析
*/
@RequestMapping("stat")
@Controller
public class StatController {
@Autowired
private StatService statService;
@Autowired
private CustomerService customerService;
@Autowired
private RentService rentService;
/**
* 跳转到客户地区统计页面
*/
@RequestMapping("toCustomerAreaStat")
public String toCustomerAreaStat(){
return "stat/customerAreaStat";
}
/**
* 加载客户地区数据
* @return
*/
@RequestMapping("loadCustomerAreaStatJson")
@ResponseBody
public List<BaseEntity> loadCustomerAreaStatJson(){
return this.statService.loadCustomerAreaStatList();
}
/**
* 跳转到客户地区性别统计页面
*/
@RequestMapping("toCustomerAreaSexStat")
public String toCustomerAreaSexStat(){
return "stat/customerAreaSexStat";
}
/**
* 加载客户地区性别统计数据
* @return
*/
@RequestMapping("loadCustomerAreaSexStatJson")
@ResponseBody
public List<BaseEntity> loadCustomerAreaSexStatJson(String area){
System.out.println("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH");
System.out.println(this.statService.loadCustomerAreaSexStatList(area));