All Downloads are FREE. Search and download functionalities are using the official Maven repository.

matrix.boot.jdbc.orm.mybatis.converter.PageConvert Maven / Gradle / Ivy

package matrix.boot.jdbc.orm.mybatis.converter;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.CaseFormat;
import matrix.boot.common.dto.PageDto;
import matrix.boot.common.exception.ServiceException;
import matrix.boot.common.utils.StringUtil;
import matrix.boot.common.vo.PageVo;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;

/**
 * 分页请求参数转换器
 *
 * @author wangcheng
 * date 2022/4/3
 */
public class PageConvert {

    /**
     * 参数数据转换
     *
     * @param queryVo 查询参数
     * @param      类型格式
     * @return 分页参数
     */
    public static  Page paramsConvert(PageVo queryVo, Class tClass) {
        Page page = new Page<>(queryVo.getPage(), queryVo.getPageSize());
        if (CollectionUtils.isEmpty(queryVo.getSorts())) {
            return page;
        }
        queryVo.getSorts().forEach(sort -> {
            if (StringUtil.isEmpty(sort.getProp())) {
                return;
            }
            OrderItem orderItem = sort.getAsc()
                    ? OrderItem.asc(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getProp()))
                    : OrderItem.desc(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getProp()));
            page.addOrder(orderItem);
        });
        return page;
    }

    /**
     * 结果数据转换
     *
     * @param data 原数据
     * @param   新数据格式
     * @param   老数据格式
     * @return 新数据分页参数
     */
    public static  PageDto resultConvert(IPage data, Class tClass) {
        PageDto result = new PageDto<>();
        result.setCount(data.getTotal());
        if (data.getTotal() > 0) {
            result.setList(new ArrayList<>());
            data.getRecords().forEach(item -> {
                try {
                    T t = tClass.newInstance();
                    BeanUtils.copyProperties(item, t);
                    result.getList().add(t);
                } catch (Exception e) {
                    throw new ServiceException(e);
                }
            });
        }
        return result;
    }
}