package com.dxhy.common.service;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;

/**
 * 基于mybatis plus的单个数据表能完成业务的service 接口需要继承
 *
 * @author jiaohongyang
 * @date 2019年4月24日
 *
 */
public interface MpBaseService<T> extends IService<T> {

    /**
     * 设置结果操作成功
     *
     * @param json
     *            数据
     * @return 返回
     */
    JSONObject succResult(JSONObject json);

    /**
     * 设置结果操作失败
     *
     * @param e
     *            异常信息
     * @return 返回
     */
    JSONObject errorResult(Exception e);

    /**
     * 统一pagehelper分页查询结果的返回信息
     *
     * @param json
     *            数据
     * @param pageInfo
     *            分页
     * @return 返回
     */
    JSONObject pageResult(JSONObject json, PageInfo<T> pageInfo);

    /**
     * 统一pagehelper分页查询结果转换为页面view对象后的返回信息
     *
     * @param json
     *            数据
     * @param pageInfo
     *            分页
     * @param returnList
     *            数据信息
     * @return 返回
     */
    JSONObject pageResult(JSONObject json, PageInfo<T> pageInfo, List<Object> returnList);

    /**
     * 统一mybatis-plus分页查询结果的返回信息
     *
     * @param json
     *            数据
     * @param pageInfo
     *            分页
     * @return 返回
     */
    JSONObject pageResult(JSONObject json, IPage<T> pageInfo);

    /**
     * 统一返回页面信息的格式
     *
     * @param json
     *            数据
     * @return 返回
     *
     */
    String responseResult(JSONObject json);

    /**
     * 设置公共的list列表参数
     *
     * @param titlelist
     *            头信息
     * @param titleprop
     *            头描述
     * @return 返回
     */
    JSONObject setTitleList(String[] titlelist, String[] titleprop);
}
