/OrderSeatSystem

通过分析网页api,用做了一个学校自习室座位预定的java库,使用该库只需少量的代码就可以完成座位预定,取消预定,查看自习室列表等功能,该库只提供学习与交流使用,任何将该库非法使用的组织或个人都与本人无关

Primary LanguageJava

OrderSeat


该库名称是CSC.jar,位置在OrderSeat\SeatSystem\lib目录下

核心类

	//接口ChooseSeatClient
		|——实现类ChooseSeatClientImpl
	
	
	/**
     * 登录,以下所有方法必须在该方法执行后调用
     * 传入用户名和密码
     * 成功返回:{
     *     status:200
     *     data:UserBean用户信息
     * }
     *  失败返回:{
     *      status:100//或是其他数字
     *      msg: 失败的原因,密码错误等
     *  }
     */
	default CommonBean<UserBean> login(String username, String password) {
        return null;
    }

	/**
	 * 注销
	 * 成功返回:{
	 *     status:200
	 * }
	 *  失败返回:{
	 *      status:100//或是其他数字
	 *      msg: 失败的原因,密码错误等
	 *  }
	 */
    default CommonBean<Object> logout() {
        return null;
    }

	/**
	 * 获取自习室列表
	 * 成功返回:{
	 *     status:200
	 *     data:List<CategoryBean>,CategoryBean包含自习室id,楼栋,方位和座位数等
	 * }
	 *  失败返回:{
	 *      status:100//或是其他数字
	 *      msg: 失败的原因,密码错误等
	 *  }
	 */
    default CommonBean<List<CategoryBean>> getAreaList() {
        return null;
    }
	
	/**
	 * 获取预约的记录列表
	 */
    default CommonBean<List<MyBookingBean>> myBookingList() {
        return null;
    }

	/**
     * 获取这个时间,对应id的自习室的限制,时长限制,开始时间,人数等
     *
     * @param contentId 获取的自习室实例的ID
     * @return CommonBean<CategoryInfoBean>实例
     */
    default CommonBean<CategoryInfoBean> getCategoryInfo(String contentId) {
        return null;
    }

	 /**
     * 搜索座位,获取所有座位信息
     *
     * @param beginTime 开始时间,时间戳/1000精确到秒
     * @param duration  时长,以小时为单位
     * @param num       获取推荐座位的数量
     * @param contentId 自习室对应id
     * @return CommonBean<CategorySeatsInfoBean>,包含所有座位信息,推荐座位,和如果是多个推荐座位,他们的间距
     */
    default CommonBean<CategorySeatsInfoBean> searchSeats(Integer beginTime, Integer duration, Integer num, String contentId) {
        return null;
    }
	
	/**
     * 选定某个座位
     *
     * @param beginTime 开始时间,时间戳/1000精确到秒
     * @param duration  时长,以小时为单位
     * @param seats     传入多个座位id,有序的选座,失败就用下一个id选座,所有id都选座失败,或是有一个成功方法结束
     * @return CommonBean<String> 包含是否成功
     */
    default CommonBean<String> lockSeats(Integer beginTime, Integer duration, String... seats) {
        return null;
    }
	
	/**
     * 解除推荐座位锁定,当执行searchSeats方法时,服务器会将推荐座位进行锁定,其他人无法选择的状态,该方法即可解除
     *
     * @return CommonBean 是否解除成功
     */
    default CommonBean unlockallseats() {
        return null;
    }
	
	 /**
     * 取消预选座位
     *
     * @param bookingId 传入预选的预定id
     * @return 是否取消成功
     */
    default CommonBean cancelbooking(Integer bookingId) {
        return null;
    }

	/**
     * 获取指定自习室的座位情况
     *
     * @param contentld 自习室id
     * @return CommonBean<List<SeatBean>>实例
     */
    default CommonBean<List<SeatBean>> getBlankPOIs(String contentld) {
        return null;
    }

	/**
     * 获取指定自习室的推荐座位
     *
     * @param contentld 自习室id
     * @return CommonBean<List<SeatBean>>实例
     */
    default CommonBean<List<SeatBean>> getRecommendSeat(String contentld) {
        return null;
    }
	

下面是一个使用示例

	package com.test;

	import top.itreatment.net.bean.*;
	import top.itreatment.net.core.ChooseSeatClient;
	import top.itreatment.net.core.impl.ChooseSeatClientImpl;
	import top.itreatment.net.res.Resource;
	import top.itreatment.net.util.Util;

	import java.util.List;

	public class Main {

    public static void main(String[] args) {
        //初始化客户端
        ChooseSeatClient chooseSeatClient = new ChooseSeatClientImpl();
        //登陆
        chooseSeatClient.login("xxxxxx", "xxxxxx");

        //获取自习室列表,默认有4个
        CommonBean<List<CategoryBean>> areaList = chooseSeatClient.getAreaList();

        //取第一个自习室的id
        String id = areaList.getData().get(0).getId();

        //获取这个自习室在此刻,允许的开始时间,持续的时长和人数
        CommonBean<CategoryInfoBean> categoryInfo = chooseSeatClient.getCategoryInfo(id);

        //获取允许的最早时间戳
        long date = categoryInfo.getData().getDate();

        //将时间戳转换成整点时间
        long time = Util.getTime(date * 1000, categoryInfo.getData().getBeginTime(), 0, 0);

        //获取自习室符合要求的座位,和所有座位情况信息等
        CommonBean<CategorySeatsInfoBean> categorySeatsInfoBeanCommonBean = chooseSeatClient.searchSeats((int) (time / 1000), 3 * 60 * 60, 1, id);

        //获取符合要求的第一个座位的id
        String id1 = categorySeatsInfoBeanCommonBean.getData().getSeats().get(0).getId();

        //选择该座位,设置时长为3小时
        CommonBean<String> integerCommonBean = chooseSeatClient.lockSeats((int) (time / 1000), 3 * 60 * 60, id1);

        System.out.println(Util.toJson(integerCommonBean));

        if (Resource.SUCCESS.equals(integerCommonBean.getStatus())) {
            try {
                Thread.sleep(1000 * 20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            //获取预定的座位信息列表
            CommonBean<List<MyBookingBean>> listCommonBean = chooseSeatClient.myBookingList();
            MyBookingBean myBookingBean = listCommonBean.getData().get(0);

            System.out.println(Util.toJson(myBookingBean));

            //取消所选预定的座位
            CommonBean<SeatBean> cancelbooking = chooseSeatClient.cancelbooking(myBookingBean.getId());

            System.out.println(Util.toJson(cancelbooking));
        }
        System.out.println(Util.toJson(categoryInfo));

        //注销登陆
        CommonBean<Object> logout = chooseSeatClient.logout();

        System.out.println(Util.toJson(logout));
		}
	}

通过该库api和poi库生成excel表格

	package com.test;

	import top.itreatment.net.bean.CategoryBean;
	import top.itreatment.net.bean.CommonBean;
	import top.itreatment.net.bean.UserBean;
	import top.itreatment.net.core.ChooseSeatClient;
	import top.itreatment.net.core.impl.ChooseSeatClientImpl;
	import top.itreatment.net.util.Util;

	import java.util.List;

	public class Main {


		public static void main(String[] args) {
			ChooseSeatClient chooseSeatClient = new ChooseSeatClientImpl();
			CommonBean<UserBean> xxx = chooseSeatClient.login("xxxxxx", "xxxxxx");

			CommonBean<List<CategoryBean>> areaList = chooseSeatClient.getAreaList();
			System.out.println(Util.toJson(areaList));

		}

	//    private static void create(CategoryBean categoryBean, ChooseSeatClient chooseSeatClient) {
	//        String contentId = categoryBean.getId();
	//        String name = categoryBean.getName();
	//        CommonBean<List<SeatBean>> blankPOIs = chooseSeatClient.getBlankPOIs(contentId);
	//        List<SeatBean> data = blankPOIs.getData();
	//        data.sort(Comparator.comparingInt(o -> Integer.parseInt(o.getY())));
	//        System.out.println(Util.toJson(data));
	//        chooseSeatClient.unlockallseats();
	//
	//        HSSFWorkbook workbook = new HSSFWorkbook();
	//        HSSFSheet sheet = workbook.createSheet(name);
	//        for (SeatBean datum : data) {
	//            String y = datum.getY();
	//            String x = datum.getX();
	//            int rowIndex = Integer.parseInt(y) / 2;
	//            int columnIndex = Integer.parseInt(x) / 2;
	//            HSSFRow row = sheet.getRow(rowIndex);
	//            if (row == null) {
	//                row = sheet.createRow(rowIndex);
	//            }
	//            HSSFCell cell = row.getCell(columnIndex);
	//            if (cell == null) {
	//                cell = row.createCell(columnIndex);
	//            }
	//            cell.setCellValue(Integer.parseInt(datum.getTitle()));
	//        }
	//
	//        try {
	//            workbook.write(new File("C:\\Users\\Administrator\\Desktop\\" + contentId + "_" + name + ".xls"));
	//        } catch (IOException e) {
	//            e.printStackTrace();
	//        }
	//    }
	}