package com.hzya.frame.sys.service;

import com.alibaba.fastjson.JSONObject;
import com.hzya.frame.sys.entity.TemplateSave;
import com.hzya.frame.sys.testReturn.entity.TestReturn;
import com.hzya.frame.web.entity.JsonResultEntity;

import java.util.List;

/**
 * @description: 系统主要接口
 */
public interface IOptionService {

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 根据用户id查询菜单树
     * @Date 9:48 上午 2023/6/29
     **/
    JsonResultEntity queryTreeById(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 查询list表头
     * @Date 9:48 上午 2023/6/29
     **/
    JsonResultEntity queryTableHeader(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 查询列表按钮
     * @Date 9:48 上午 2023/6/29
     **/
    JsonResultEntity queryButton(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 查询字段
     * @Date 9:48 上午 2023/6/29
     **/
    JsonResultEntity queryColumn(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 查询 查询条件
     * @Date 9:48 上午 2023/6/29
     **/
    JsonResultEntity queryQueryCondition(JSONObject jsonObject);

    /**
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     * @Author lvleigang
     * @Description 查询 list
     * @Date 9:48 上午 2023/6/29
     **/
    //JsonResultEntity queryPageData(JSONObject jsonObject);

    JsonResultEntity queryTableButton(JSONObject jsonObject);

    JsonResultEntity queryTableData(JSONObject jsonObject);


    //********************************************************

    // 正式接口

    /**
     * @param jsonObject
     * @return
     * @Author lvleigang
     * @Description 获取用户模版数据
     * @Date 9:34 上午 2023/7/10
     **/
    JsonResultEntity queryUserTemplate(JSONObject jsonObject);
    /**
     * @param jsonObject
     * @return
     * @Author lvleigang
     * @Description 获取所有模版数据
     * @Date 9:34 上午 2023/7/10
     **/
    JsonResultEntity queryAllTemplate(JSONObject jsonObject);


    //获取模版所有字段（查询、列表、新增、修改，查看）
    /**
     * @Author lvleigang
     * @Description  获取模版所有字段 （查询、列表、新增、修改，查看）
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryAllTemplateFields(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  获取用户模版字段（查询、列表、新增、修改，查看）
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryUserTemplateFields(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  获取用户模版按钮
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryUserTemplateButtons(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  获取模版下的数据（不分页）
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryAllData(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  获取模版下的数据（分页）
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryPageData(JSONObject jsonObject);


    /**
     * @Author lvleigang
     * @Description  添加模版以及模版类型数据结构（默认分配给管理员admin）
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity addTemplateAll(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  获取模版对应service的某条数据（包括明细）
     * @Date 4:59 下午 2023/7/10
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryTemplateServiceData(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  新增对应service的数据（包括明细）（校验数据必填以及唯一性）
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity addTemplateServiceData(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  修改对应service的数据（包括明细）（校验数据必填以及唯一性，主表修改，明细先删除后新增）
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity updateTemplateServiceData(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  删除对应service的数据（包括明细）
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity deleteTemplateServiceData(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  查询数据（list 或者 分页）
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryTemplateData(JSONObject jsonObject);

    /**
     * @Author lvleigang
     * @Description  查询数据（树结构）
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity queryTemplateTreeData(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  新增数据
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity addMasterData(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  新增数据
     * @Date 1:33 下午 2023/7/12
     * @param jsonObject
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity addMasterDataList(JSONObject jsonObject);
    /**
     * @Author lvleigang
     * @Description  添加模版以及模版类型数据结构（默认分配给管理员admin）
     * @Date 4:59 下午 2023/7/10
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity testTemplateAll(List<TemplateSave> templateSaveList);
    /**
     * @Author lvleigang
     * @Description  对照
     * @Date 4:59 下午 2023/7/10
     * @return com.hzya.frame.web.entity.JsonResultEntity
     **/
    JsonResultEntity controlData(JSONObject jsonObject);

    void deleteData(String formmain_0030, boolean flag);
}