package cn.com.tenlion.configcolumn.service.configcolumn;

import cn.com.tenlion.configcolumn.configcolumn.IConfigColumnDataService;
import cn.com.tenlion.configtable.pojo.dtos.configtableoperation.ConfigTableOperationDTO;
import cn.com.tenlion.configtable.pojo.dtos.configtableoperation.ConfigTableOperationGroupDTO;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResultList;
import cn.com.tenlion.configcolumn.pojo.dtos.configcolumn.ConfigColumnDTO;
import cn.com.tenlion.configcolumn.pojo.vos.configcolumn.ConfigColumnVO;
import cn.com.tenlion.configcolumn.pojo.bos.configcolumn.ConfigColumnBO;
import cn.com.tenlion.configcolumn.pojo.pos.configcolumn.ConfigColumnPO;

import java.util.List;
import java.util.Map;

/**
 * @ClassName: IConfigColumnService
 * @Description: 
 * @Author: CodeFactory
 * @Date: 2021-06-26 13:49:46
 * @Version: 3.0
 **/
public interface IConfigColumnService extends IConfigColumnDataService {

    /**
     * 新增
     *
     * @param configColumnVO
     * @return
     */
    void save(ConfigColumnVO configColumnVO);

    /**
     * 新增
     *
     * @param token
     * @param configColumnVO
     * @return
     */
    void save(String token, ConfigColumnVO configColumnVO);

    /**
     * 新增
     *
     * @param configColumnVO
     * @return configColumnId
     */
    String saveReturnId(ConfigColumnVO configColumnVO);

    /**
     * 新增
     *
     * @param token
     * @param configColumnVO
     * @return configColumnId
     */
    String saveReturnId(String token, ConfigColumnVO configColumnVO);

    /**
     * 删除
     *
     * @param ids id列表
     * @return
     */
    void remove(List<String> ids);


    /**
     * 删除
     *
     * @param token
     * @param ids id列表
     * @return
     */
    void remove(String token, List<String> ids);

    /**
     * 删除（物理删除）
     *
     * @param ids id列表
     */
    void delete(List<String> ids);

    /**
     * 修改
     *
     * @param configColumnId
     * @param configColumnVO
     * @return
     */
    void update(String configColumnId, ConfigColumnVO configColumnVO);

    /**
     * 修改
     *
     * @param token
     * @param configColumnId
     * @param configColumnVO
     * @return
     */
    void update(String token, String configColumnId, ConfigColumnVO configColumnVO);

    /**
     * 详情
     *
     * @param params 参数Map
     * @return
     */
    ConfigColumnDTO get(Map<String, Object> params);

    /**
     * 详情
     *
     * @param configColumnId
     * @return
     */
    ConfigColumnDTO get(String configColumnId);

    /**
     * 详情
     *
     * @param params 参数Map
     * @return
     */
    ConfigColumnBO getBO(Map<String, Object> params);

    /**
     * 详情
     *
     * @param configColumnId
     * @return
     */
    ConfigColumnBO getBO(String configColumnId);

    /**
     * 详情
     *
     * @param params 参数Map
     * @return
     */
    ConfigColumnPO getPO(Map<String, Object> params);

    /**
     * 详情
     *
     * @param configColumnId
     * @return
     */
    ConfigColumnPO getPO(String configColumnId);

    /**
     * 列表
     *
     * @param params
     * @return
     */
    List<ConfigColumnDTO> list(Map<String, Object> params);

    /**
     * 列表
     *
     * @param params
     * @return
     */
    List<ConfigColumnBO> listBO(Map<String, Object> params);

    /**
     * 列表
     *
     * @param params
     * @return
     */
    List<ConfigColumnPO> listPO(Map<String, Object> params);

    /**
     * 分页列表
     *
     * @param page
     * @return
     */
    SuccessResultList<List<ConfigColumnDTO>> listPage(ListPage page);

    /**
     * 统计
     *
     * @param params
     * @return
     */
    Integer count(Map<String, Object> params);

    /**
     * 通过栏目组IgetByGroupIdD查询栏目列表
     * @param id
     * @return
     */
    List<ConfigColumnDTO> getByGroupId(String id);

    /**
     * 按照编码查找
     * @param configColumnCode
     * @return
     */
    ConfigColumnDTO getByCode(String configColumnCode);

    /**
     * 保存栏目动态表单数据
     * @param configColumnId 栏目ID
     * @param token
     * @param params 栏目动态表单数据
     */
    String saveData(String token, String configColumnId, Map<String, Object> params);

    /**
     * 删除栏目动态表单数据
     * @param configColumnId  栏目ID
     * @param token
     * @param uid 动态表单ID
     */
    void deleteData(String token, String configColumnId, String uid);

    /**
     * 通过动态表单ID查询
     * @param token
     * @param configColumnId
     * @param uid
     * @return
     */
    ConfigTableOperationGroupDTO getData(String token, String configColumnId, String uid);

    /**
     * 通过动态表单列表数据查询
     * @param token
     * @param configColumnId
     * @param params
     * @return
     */
    List<ConfigTableOperationGroupDTO> listData(String token, String configColumnId, Map<String, Object> params);

    /**
     * 动态表单字段列表查询
     * @param token
     * @param configColumnId
     * @return
     */
    List<ConfigTableOperationDTO> listFieldConfig(String token, String configColumnId);

    /**
     * 通过动态表单列表数据查询
     * @param token
     * @param configColumnCode
     * @param params
     * @return
     */
    List<ConfigTableOperationGroupDTO> listDataByCode(String token, String configColumnCode, Map<String, Object> params);

    /**
     * 首页栏目列表(包含栏目数据)
     * @param params
     * @return
     */
    List<ConfigColumnDTO> listApp(String token, Map<String, Object> params);

}