package com.backendsys.utils.v2;

import cn.hutool.core.convert.Convert;

/**
 * 表格数据处理
 */
public class TableSupport {
    public static final String PAGE_NUM = "page_num";                   // 当前记录起始索引
    public static final String PAGE_SIZE = "page_size";                 // 每页显示记录数
    public static final String ORDER_BY_COLUMN = "order_by_column";     // 排序列
    public static final String IS_ASC = "is_asc";                       // 排序的方向 "desc" 或者 "asc".
    public static final String REASONABLE = "reasonable";               // 分页参数合理化

    /**
     * 封装分页对象，要注意：
     * - 如果 dao.xml 已定义了 orderBy，则会以 xml 的排序为准 (order_by_column、is_asc 将无效)
     * - 如果 dao.xml 存在 JOIN 关联表，则 order_by_column 需要带着表参数，像 (f.create_time) (建议还是自定义去写排序)
     */
    public static PageDomain getPageDomain() {
        PageDomain pageDomain = new PageDomain();
        pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), null));    // defaultValue: 1
        pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), null));  // defaultValue: 10
        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
        pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
        return pageDomain;
    }

    public static PageDomain buildPageRequest() {
        return getPageDomain();
    }
}
