package cn.ey.biz.module.system.dal.mapper.i18n;

import java.util.*;

import cn.ey.biz.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.ey.biz.framework.mybatis.core.mapper.BaseMapperX;
import cn.ey.biz.module.system.controller.admin.i18n.vo.I18nExportReqVO;
import cn.ey.biz.module.system.controller.admin.i18n.vo.I18nPageReqVO;
import cn.ey.biz.module.system.controller.admin.i18n.vo.I18nRespVO;
import cn.ey.biz.module.system.dal.dataobject.i18n.I18nDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 多语言 Mapper
 *
 */
@Mapper
public interface I18nMapper extends BaseMapperX<I18nDO> {

    default List<I18nDO> selectList(I18nExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<I18nDO>()
                .eqIfPresent(I18nDO::getType, reqVO.getType())
                .eqIfPresent(I18nDO::getLang, reqVO.getLang())
                .eqIfPresent(I18nDO::getKey, reqVO.getKey())
                .eqIfPresent(I18nDO::getLabel, reqVO.getLabel())
                .eqIfPresent(I18nDO::getMemo, reqVO.getMemo())
                .betweenIfPresent(I18nDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(I18nDO::getId));
    }

    IPage<I18nRespVO> selectPage(IPage page, @Param("c") I18nPageReqVO pageReqVO);

    @Select("SELECT COUNT(*) FROM infra_i18n WHERE type = 'menu' AND update_time > #{maxUpdateTime}")
    Long selectMenuCountByUpdateTimeGt(Date maxUpdateTime);

    List<I18nDO> getI18nByApp(@Param("acceptLanguage") String acceptLanguage,@Param("app") String app);
}
