【停车场车辆管理系统】从零搭建——AdminController搭建

发布于:2023-07-04 ⋅ 阅读:(197) ⋅ 点赞:(0)

【停车场车辆管理系统】从零搭建——项目分析

【停车场车辆管理系统】从零搭建——数据库搭建

【停车场车辆管理系统】从零搭建——后端搭建

【停车场车辆管理系统】从零搭建——后端Model类

【停车场车辆管理系统】从零搭建——Mapper搭建

【停车场车辆管理系统】从零搭建——AdminController搭建

【停车场车辆管理系统】从零搭建——UserController搭建

【停车场车辆管理系统】从零搭建——前端react搭建

Controller

写完了数据库业务层,我们开始写控制层。
再回顾一遍项目需求:

管理员模块

  1. 个人信息模块:
    查找数据库中个人信息展示,修改按钮=》修改所有个人信息包括密码。个人车辆信息,修改车辆信息
  2. 车位信息:
    表格形式展示自己所管理的小区的所有车位,录入车位、修改车位信息、删除车位
  3. 车位承包信息:
    表格形式展示自己所管理小区的所有【车位承包申请表】,这个模块需要车主发起申请才会有数据,管理员可以选择同意或拒绝。临时停车信息就不用发起申请了
  4. 停车收费信息:
    表格形式展示自己所管理小区的车位停车情况,录入停车订单这块我考虑订单直接在承包申请同意之后自动生成

车主

  1. 个人信息:展示个人信息,修改所有信息包括密码
  2. 车位占用:查看所有未被占用车位,发起承包或停车
  3. 停车费用管理:查看自己的订单,选择缴费

项目需求还是比较清晰的,controller这快我们根据角色来写,也就是分为AdminController和UserController。
在这里插入图片描述
首先,我们创建一个AdminController.java文件

public class AdminController {
}

我们为它输入注解:

@Controller
@RequestMapping("admin")
@CrossOrigin(origins = "*", maxAge = 3600)
public class AdminController {
}

解释一下:

  • @Controller:表示当前类为处理器,对象存放在SpringMVC中

  • @RequestMapping:表示当前方法为处理器方法。该方法要对value属性所指定的 URI 进行处理与响应。被注解的方法的方法名可以随意
    位置:

    1. 在方法上面(推荐)
    2. 在类上面

    使用@RequestMapper修饰的方法叫做处理器方法或者控制器方法
    使用@RequestMapper修饰的方法可以处理请求的,类似servlet中的doGet()doPost()
    作用 是把一个请求和一个方法绑定在一起,一个请求指定一个方法处理。
    属性:value :是一个字符串,表示请求url地址的(some.do),value的值必须是唯一的,不能重复,在使用时,推荐使用/开头

  • @CrossOrigin解决跨域问题

    • origins:是允许访问的列表(origins=“网址”)
    • maxAge:准备响应前的 缓存持续的 最大时间

然后我们把Mapper类自动装配进去:


@Controller
@RequestMapping("admin")
@CrossOrigin(origins = "*", maxAge = 3600)
public class AdminController {
// 自动装配
    @Autowired
    AdminMapper adminMapper;
    @Autowired
    CarMapper carMapper;
    @Autowired
    CityMapper cityMapper;
    @Autowired
    ParkingOrderMapper parkingOrderMapper;
    @Autowired
    ParkMapper parkMapper;
    @Autowired
    RentApplicationMapper rentApplicationMapper;
    @Autowired
    UserMapper userMapper;

@Autowired是一种注解,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired标注可以放在成员变量上,也可以放在成员变量的set方法上,也可以放在任意方法上表示,自动执行当前方法,如果方法有参数,会在IOC容器中自动寻找同类型参数为其传值。

下面我们来写第一个方法:

登录

我们首先分析,登录方法需要获取前端传递过来的一个Admin类型的数据,然后我们调用adminMapperselectFromAdminByAdminPhoneAndAdminPassword方法,最后将mapper接口的返回值返回到前端。

    /**
     * 登录
     *
     * @param admin
     * @return
     */
    @RequestMapping("adminLogin")
    @ResponseBody
    public Admin adminLogin(@RequestBody Admin admin) {
        return adminMapper.selectFromAdminByAdminPhoneAndAdminPassword(admin.getAdminPhone(), admin.getAdminPassword());
    }

其中,@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

个人信息模块

后端的代码都挺简单的,两三行,没什么好讲解的,弄懂逻辑基本上都能写的出来。

  	/**
     * 查看个人信息
     *
     * @param admin
     * @return
     */
    @RequestMapping("selectMyInfo")
    @ResponseBody
    public Admin selectMyInfo(@RequestBody Admin admin) {
        return adminMapper.selectFromAdminByAdminId(admin.getAdminId());
    }

    /**
     * 修改个人信息
     *
     * @param admin
     */
    @RequestMapping("updateMyInfo")
    @ResponseBody
    public void updateMyInfo(@RequestBody Admin admin) {
        adminMapper.updateAdminByAdminId(admin);
    }

车位管理

    /**
     * 查看所有车位
     *
     * @param admin
     * @return
     */
    @RequestMapping("selectParkInCity")
    @ResponseBody
    public List<Park> selectParkInCity(@RequestBody Admin admin) {
        return parkMapper.selectAllFromParkByCityId(admin.getCityId());
    }

    /**
     * 添加车位
     *
     * @param park
     */
    @RequestMapping("insertIntoPark")
    @ResponseBody
    public void insertIntoPark(@RequestBody Park park) {
        parkMapper.insertIntoPark(park);
    }

    /**
     * 删除车位
     *
     * @param park
     */
    @RequestMapping("deletePark")
    @ResponseBody
    public void deletePark(@RequestBody Park park) {
        parkMapper.updateParkSetParkStateByParkId(3, park.getParkId());
    }

    /**
     * 更新车位信息
     * 
     * @param park
     */
    @RequestMapping("updatePark")
    @ResponseBody
    public void updatePark(@RequestBody Park park) {
        parkMapper.updateParkByParkId(park);
    }

车位承包信息

这个部分代码比较长,我仔细说下。

查看所有承包申请

    /**
     * 查看所有承包申请
     *
     * @return
     */
    @RequestMapping("selectAllRentApplication")
    @ResponseBody
    public List<RentApplicationUse> selectAllRentApplication(@RequestBody Admin admin) {

        List<RentApplication> rentApplicationList = rentApplicationMapper.selectAllFromRentApplication(admin.getCityId());
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }
  1. 首先,前端传递过来一个admin类,这个类有什么作用呢?在这个方法里,我们所用到的主要是admin的cityId。需要通过admin的cityId来定位,目前查看的承包信息是属于哪个小区的。
  2. 所以方法体第一行,
    List<RentApplication> rentApplicationList = rentApplicationMapper.selectAllFromRentApplication(admin.getCityId());
    
    其实正常到这一行就return了,但大家可能发现,第二行有个从来没有见过的RentApplicationUse类,这是后来为了便于前端数据处理而创建的类。
  3. RentApplicationUse类的属性如下:
        private RentApplication rentApplication;
        private List<String> car_park_user;
    
    可以看出来,第一个属性用于存储承包表信息,而第二个属性则是存放车辆、停车场、用户的信息。
  4. 从代码的第二行开始,创建了一个RentApplicationUse的List类。同时对第一行获取的RentApplication进行遍历。每次遍历时,获取car、park、user的信息,填入RentApplicationUse类中。

后边涉及到查询的代码基本上都是这样,将car、park、user的信息填入类中。
这个其实也有另一种解决方案,就是直接为RentApplication类添加private List<String> car_park_user;属性,但是不知道为什么当初选择了这种方法。

查询相关代码

    /**
     * 查看所有承包申请
     *
     * @return
     */
    @RequestMapping("selectAllRentApplication")
    @ResponseBody
    public List<RentApplicationUse> selectAllRentApplication(@RequestBody Admin admin) {

        List<RentApplication> rentApplicationList = rentApplicationMapper.selectAllFromRentApplication(admin.getCityId());
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 可一键拒绝的申请
     * 
     * @param admin
     * @return
     */
    @RequestMapping("selectRentApplicationCannotAgree")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplicationCannotAgree(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByNotEmptyPark(admin.getCityId());
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getCarId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }


    /**
     * 查看待审批申请
     *
     * @return
     */
    @RequestMapping("selectRentApplication0")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplication0(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByRentApplicationState(admin.getCityId(), 0);
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            System.out.println(rentApplication.toString());
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 查看已同意申请
     *
     * @return
     */
    @RequestMapping("selectRentApplication1")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplication1(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByRentApplicationState(admin.getCityId(), 1);
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getCarId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 查看已拒绝申请
     *
     * @return
     */
    @RequestMapping("selectRentApplication2")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplication2(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByRentApplicationState(admin.getCityId(), 2);
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

同意申请

同意申请的时候,不但要对当前的申请表的审核状态进行改变,也需要对停车位的占用情况进行变化,并且生成一个停车订单。

    /**
     * 同意申请
     * 修改申请状态和车位
     *
     * @param rentApplication
     */
    @RequestMapping("agree")
    @ResponseBody
    public void agree(@RequestBody RentApplication rentApplication) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        //更新申请表
        rentApplicationMapper.updateRentApplicationSetRentApplicationStateByrentApplicationId(1, rentApplication.getRentApplicationId());
        //更新车位
        parkMapper.updateParkSetParkStateAndCarIdByParkId(1, rentApplication.getCarId(), rentApplication.getParkId());
        //新增订单
        ParkingOrder parkingOrder = new ParkingOrder();
        parkingOrder.setParkId(rentApplication.getParkId());
        parkingOrder.setCarId(rentApplication.getCarId());
        parkingOrder.setUserId(rentApplication.getUserId());
        parkingOrder.setCityId(parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getCityId());
        parkingOrder.setParkingOrderPrice(parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getRentPrice());
        parkingOrder.setParkingTime(simpleDateFormat.format(date));
        parkingOrder.setExpirationTime(simpleDateFormat.format(date.getTime() + (1000L * 60 * 60 * 24 * 30)));
        parkingOrder.setParkingOrderState(0);
        parkingOrder.setPayState(0);
        parkingOrderMapper.insertIntoParkingOrder(parkingOrder);
    }

拒绝申请

    /**
     * 拒绝申请
     *
     * @param rentApplication
     */
    @RequestMapping("refuse")
    @ResponseBody
    public void refuse(@RequestBody RentApplication rentApplication) {
        rentApplicationMapper.updateRentApplicationSetRentApplicationStateByrentApplicationId(2, rentApplication.getRentApplicationId());
    }

查看停车订单

这里和上面一样,创建了一个parkingOrderUse

public class ParkingOrderUse {
    private ParkingOrder parkingOrder;
    private List<String> carNumberAndParkNumber;
}

在进行订单查询的时候,需要将用户与车辆信息返回到前端。首先先获取当前小区的所有订单信息,然后逐个遍历将车辆信息填入,这里用了个selectCarNumberAndParkNumberAndUserName方法,将具体操作封装起来了。

    /**
     * 查看所有停车订单
     *
     * @param admin
     * @return
     */
    @RequestMapping("selectParkingOrder")
    @ResponseBody
    public List<ParkingOrderUse> selectParkingOrder(@RequestBody Admin admin) {
        List<ParkingOrder> parkingOrderList = parkingOrderMapper.selectFromParckingOrderByCityId(admin.getCityId());
        List<ParkingOrderUse> parkingOrderUses = new ArrayList<>();
        for (ParkingOrder parkingOrder : parkingOrderList) {
            List<String> strings = selectCarNumberAndParkNumberAndUserName(parkingOrder.getCarId(), parkingOrder.getParkId(), parkingOrder.getUserId());
            ParkingOrderUse parkingOrderUse = new ParkingOrderUse(parkingOrder, strings);
            parkingOrderUses.add(parkingOrderUse);
        }
        return parkingOrderUses;
    }

    /**
     * 搜索车牌、停车位、所属人
     * 
     * @param carId
     * @param parkId
     * @param userId
     * @return
     */
    @RequestMapping("selectCarNumberAndParkNumber")
    @ResponseBody
    public List<String> selectCarNumberAndParkNumberAndUserName(Integer carId, Integer parkId, Integer userId) {
        List<String> res = new ArrayList<>();
        res.add(carMapper.selectCarNumberFromCarByCarId(carId));
        res.add(parkMapper.selectFromParkByParkId(parkId).getParkNumber());
        res.add(userMapper.selectFromUserByUserId(userId).getUserName());
        return res;
    }

完整代码

AdminController的具体创建过程就是这样,有看不明白的地方可以留言或私信,以下是完整代码:

package com.example.vehiclemanagement.controller;

import com.example.vehiclemanagement.mapper.*;
import com.example.vehiclemanagement.model.*;
import com.example.vehiclemanagement.model.utilModel.ParkingOrderUse;
import com.example.vehiclemanagement.model.utilModel.RentApplicationUse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("admin")
@CrossOrigin(origins = "*", maxAge = 3600)
public class AdminController {
    @Autowired
    AdminMapper adminMapper;
    @Autowired
    CarMapper carMapper;
    @Autowired
    CityMapper cityMapper;
    @Autowired
    ParkingOrderMapper parkingOrderMapper;
    @Autowired
    ParkMapper parkMapper;
    @Autowired
    RentApplicationMapper rentApplicationMapper;
    @Autowired
    UserMapper userMapper;

    /**
     * 登录
     *
     * @param admin
     * @return
     */
    @RequestMapping("adminLogin")
    @ResponseBody
    public Admin adminLogin(@RequestBody Admin admin) {
        return adminMapper.selectFromAdminByAdminPhoneAndAdminPassword(admin.getAdminPhone(), admin.getAdminPassword());
    }

    /**
     * 查看个人信息
     *
     * @param admin
     * @return
     */
    @RequestMapping("selectMyInfo")
    @ResponseBody
    public Admin selectMyInfo(@RequestBody Admin admin) {
        return adminMapper.selectFromAdminByAdminId(admin.getAdminId());
    }

    /**
     * 修改个人信息
     *
     * @param admin
     */
    @RequestMapping("updateMyInfo")
    @ResponseBody
    public void updateMyInfo(@RequestBody Admin admin) {
        adminMapper.updateAdminByAdminId(admin);
    }

    /**
     * 查看所有车位
     *
     * @param admin
     * @return
     */
    @RequestMapping("selectParkInCity")
    @ResponseBody
    public List<Park> selectParkInCity(@RequestBody Admin admin) {
        return parkMapper.selectAllFromParkByCityId(admin.getCityId());
    }

    /**
     * 添加车位
     *
     * @param park
     */
    @RequestMapping("insertIntoPark")
    @ResponseBody
    public void insertIntoPark(@RequestBody Park park) {
        parkMapper.insertIntoPark(park);
    }

    /**
     * 删除车位
     *
     * @param park
     */
    @RequestMapping("deletePark")
    @ResponseBody
    public void deletePark(@RequestBody Park park) {
        parkMapper.updateParkSetParkStateByParkId(3, park.getParkId());
    }

    /**
     * 更新车位信息
     * 
     * @param park
     */
    @RequestMapping("updatePark")
    @ResponseBody
    public void updatePark(@RequestBody Park park) {
        parkMapper.updateParkByParkId(park);
    }

    /**
     * 查看所有承包申请
     *
     * @return
     */
    @RequestMapping("selectAllRentApplication")
    @ResponseBody
    public List<RentApplicationUse> selectAllRentApplication(@RequestBody Admin admin) {

        List<RentApplication> rentApplicationList = rentApplicationMapper.selectAllFromRentApplication(admin.getCityId());
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 可一键拒绝的申请
     * 
     * @param admin
     * @return
     */
    @RequestMapping("selectRentApplicationCannotAgree")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplicationCannotAgree(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByNotEmptyPark(admin.getCityId());
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getCarId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }


    /**
     * 查看待审批申请
     *
     * @return
     */
    @RequestMapping("selectRentApplication0")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplication0(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByRentApplicationState(admin.getCityId(), 0);
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            System.out.println(rentApplication.toString());
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 查看已同意申请
     *
     * @return
     */
    @RequestMapping("selectRentApplication1")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplication1(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByRentApplicationState(admin.getCityId(), 1);
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getCarId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 查看已拒绝申请
     *
     * @return
     */
    @RequestMapping("selectRentApplication2")
    @ResponseBody
    public List<RentApplicationUse> selectRentApplication2(@RequestBody Admin admin) {
        List<RentApplication> rentApplicationList = rentApplicationMapper.selectFromRentApplicationByRentApplicationState(admin.getCityId(), 2);
        List<RentApplicationUse> rentApplicationUseList = new ArrayList<>();
        for (RentApplication rentApplication : rentApplicationList) {
            String car = carMapper.selectCarNumberFromCarByCarId(rentApplication.getCarId());
            String park = parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getParkNumber();
            String userName = userMapper.selectFromUserByUserId(rentApplication.getUserId()).getUserName();
            List<String> strings = new ArrayList<>();
            strings.add(car);
            strings.add(park);
            strings.add(userName);
            RentApplicationUse rentApplicationUse = new RentApplicationUse(rentApplication, strings);
            rentApplicationUseList.add(rentApplicationUse);
        }
        return rentApplicationUseList;
    }

    /**
     * 同意申请
     * 修改申请状态和车位
     *
     * @param rentApplication
     */
    @RequestMapping("agree")
    @ResponseBody
    public void agree(@RequestBody RentApplication rentApplication) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        //更新申请表
        rentApplicationMapper.updateRentApplicationSetRentApplicationStateByrentApplicationId(1, rentApplication.getRentApplicationId());
        //更新车位
        parkMapper.updateParkSetParkStateAndCarIdByParkId(1, rentApplication.getCarId(), rentApplication.getParkId());
        //新增订单
        ParkingOrder parkingOrder = new ParkingOrder();
        parkingOrder.setParkId(rentApplication.getParkId());
        parkingOrder.setCarId(rentApplication.getCarId());
        parkingOrder.setUserId(rentApplication.getUserId());
        parkingOrder.setCityId(parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getCityId());
        parkingOrder.setParkingOrderPrice(parkMapper.selectFromParkByParkId(rentApplication.getParkId()).getRentPrice());
        parkingOrder.setParkingTime(simpleDateFormat.format(date));
        parkingOrder.setExpirationTime(simpleDateFormat.format(date.getTime() + (1000L * 60 * 60 * 24 * 30)));
        parkingOrder.setParkingOrderState(0);
        parkingOrder.setPayState(0);
        parkingOrderMapper.insertIntoParkingOrder(parkingOrder);
    }

    /**
     * 拒绝申请
     *
     * @param rentApplication
     */
    @RequestMapping("refuse")
    @ResponseBody
    public void refuse(@RequestBody RentApplication rentApplication) {
        rentApplicationMapper.updateRentApplicationSetRentApplicationStateByrentApplicationId(2, rentApplication.getRentApplicationId());
    }

    /**
     * 查看所有停车订单
     *
     * @param admin
     * @return
     */
    @RequestMapping("selectParkingOrder")
    @ResponseBody
    public List<ParkingOrderUse> selectParkingOrder(@RequestBody Admin admin) {
        List<ParkingOrder> parkingOrderList = parkingOrderMapper.selectFromParckingOrderByCityId(admin.getCityId());
        List<ParkingOrderUse> parkingOrderUses = new ArrayList<>();
        for (ParkingOrder parkingOrder : parkingOrderList) {
            List<String> strings = selectCarNumberAndParkNumberAndUserName(parkingOrder.getCarId(), parkingOrder.getParkId(), parkingOrder.getUserId());
            ParkingOrderUse parkingOrderUse = new ParkingOrderUse(parkingOrder, strings);
            parkingOrderUses.add(parkingOrderUse);
        }
        return parkingOrderUses;
    }

    /**
     * 搜索车牌、停车位、所属人
     * 
     * @param carId
     * @param parkId
     * @param userId
     * @return
     */
    @RequestMapping("selectCarNumberAndParkNumber")
    @ResponseBody
    public List<String> selectCarNumberAndParkNumberAndUserName(Integer carId, Integer parkId, Integer userId) {
        List<String> res = new ArrayList<>();
        res.add(carMapper.selectCarNumberFromCarByCarId(carId));
        res.add(parkMapper.selectFromParkByParkId(parkId).getParkNumber());
        res.add(userMapper.selectFromUserByUserId(userId).getUserName());
        return res;
    }

}