package com.sqx.modules.common.service;

import com.sqx.common.utils.Result;
import com.sqx.modules.common.entity.ArtificerPartitioningDetails;
import com.sqx.modules.common.entity.CommonInfo;
import com.sqx.modules.common.enums.CommonEnum;

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

/**
 * @author fang
 * @date 2020/7/8
 */
public interface CommonInfoService {

    /**
     * 保存对象
     *
     * @param
     */
    Result update(CommonInfo commonInfo);

    /**
     * 获取一个对象
     */
    CommonInfo findOne(int id);

    /**
     * 删除一个
     */
    Result delete(long id);

    /**
     * 修改
     */
    Result updateBody(CommonInfo commonInfo);
    /**
     * 通过类型查询
     */
    Result findByType(Integer type);

    /**
     * 通过类型查询
     */
    Result findByTypeAndCondition(String condition);

    /**
     * 通过类型查询
     */
    Result rules(String type);

    Result rulesUpd(ArtificerPartitioningDetails artificerPartitioningDetails);

    /**
     * 按枚举查询
     * @param commonEnum
     * @return
     */
    CommonInfo findOneByEnum(CommonEnum commonEnum);

    /**
     * 根据类型查询一组配置
     * @param condition
     * @return
     */
    List<CommonInfo> getListByCondition(String condition);

    /**
     * 根据类型查询一组配置
     * @param condition
     * @return
     */
    List<CommonInfo> getListByConditionLike(String condition);

    List<CommonInfo> getListByTypes(Integer[] values);

    boolean updateGroup(List<CommonInfo> infos);

    Map<Integer, CommonInfo> getMapByCondition(String condition);

    /**
     * 是否可以修改订单
     * @return
     */
    CommonInfo isCheckChangeOrder(Date businessTime, Date nowTime);

    /**
     * 是否可以编辑订单
     * @return
     */
    boolean isCheckEditOrder(Date businessTime, Date nowTime);

    List<CommonInfo> getV3OrderForm();

}