package com.hzs.system.base.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.system.base.BdTransaction;
import com.hzs.common.domain.system.base.ext.TransactionParam;
import com.hzs.common.domain.system.base.ext.TransactionResult;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * 统一翻译表 Mapper 接口
 */
public interface BdTransactionMapper extends BaseMapper<BdTransaction> {

    /**
     * 获取翻译
     *
     * @param bdTransaction
     * @return
     */
    BdTransaction getBdTransaction(BdTransaction bdTransaction);

    /**
     * 插入国际化内容
     *
     * @param transactionParam
     * @return
     */
    int insertTransactionExt(TransactionParam transactionParam);

    /**
     * 更新国际化内容
     *
     * @param transactionParam
     * @return
     */
    int updateTransactionExt(TransactionParam transactionParam);

    /**
     * 查询国际化指定内容
     *
     * @param content 翻译内容
     * @param from    来源字段
     * @param to      返回字段
     * @return
     */
    String queryTransactionContent(@Param("content") String content, @Param("from") String from, @Param("to") String to);

    /**
     * 查询国际化指定内容列表
     *
     * @param contentList 翻译内容列表
     * @param from        来源字段
     * @param to          返回字段
     * @return
     */
    List<TransactionResult> queryTransactionContentList(@Param("contentList") Set<String> contentList, @Param("from") String from, @Param("to") String to);

    /**
     * 查询国际化指定KEY列表
     *
     * @param key 翻译KEY
     * @param to  返回字段
     * @return
     */
    TransactionResult queryTransactionKey(@Param("key") String key, @Param("to") String to);

    /**
     * 查询国际化指定KEY模糊查询
     *
     * @param keyPrefixList 翻译KEY前缀列表
     * @param to            返回字段
     * @return
     */
    List<TransactionResult> queryTransactionListByKeyPrefix(@Param("keyPrefixList") Set<String> keyPrefixList, @Param("to") String to);

    /**
     * 查询国际化指定pkId查询
     *
     * @param pkIdList 翻译ID列表
     * @param to       返回字段
     * @return
     */
    List<TransactionResult> queryTransactionListByPkId(@Param("pkIdList") Collection<Integer> pkIdList, @Param("to") String to);

    /**
     * 查询列表（可指定列）
     *
     * @param column   指定语言列
     * @param isCache  是否缓存（true=是，false=否）
     * @param isUpload 是否上传OSS（true=是，false=否）
     * @return
     */
    List<BdTransaction> queryListByColumn(@Param("column") String column, @Param("isCache") boolean isCache, @Param("isUpload") boolean isUpload);

    /**
     * 查询指定语种数据
     *
     * @param column 指定语言列
     * @return
     */
    List<TransactionResult> queryToColumnList(@Param("column") String column);

    /**
     * 查询指定语种指定数据
     *
     * @param column   指定语言列
     * @param pkIdList 翻译数据ID列表
     * @return
     */
    List<TransactionResult> queryFromColumnList(@Param("column") String column, @Param("pkIdList") List<Long> pkIdList);

}
