package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.QueryConfigMapper;
import com.ruoyi.system.domain.QueryConfig;
import com.ruoyi.system.service.IQueryConfigService;

/**
 * 查询配置Service业务层处理
 * 
 * @author 博曼
 * @date 2021-12-27
 */
@Service
public class QueryConfigServiceImpl implements IQueryConfigService 
{
    @Autowired
    private QueryConfigMapper queryConfigMapper;

    /**
     * 查询查询配置
     * 
     * @param configId 查询配置主键
     * @return 查询配置
     */
    @Override
    public QueryConfig selectQueryConfigByConfigId(Long configId)
    {
        return queryConfigMapper.selectQueryConfigByConfigId(configId);
    }

    /**
     * 查询查询配置列表
     * 
     * @param queryConfig 查询配置
     * @return 查询配置
     */
    @Override
    public List<QueryConfig> selectQueryConfigList(QueryConfig queryConfig)
    {
        return queryConfigMapper.selectQueryConfigList(queryConfig);
    }

    /**
     * 新增查询配置
     * 
     * @param queryConfig 查询配置
     * @return 结果
     */
    @Override
    public AjaxResult insertQueryConfig(QueryConfig queryConfig)
    {
        queryConfig.setCreateTime(DateUtils.getNowDate());
         //一种方式只能有一个数据
        //查询对应的主题和方式是否存在
        int rows = queryConfigMapper.selectQueryConfigByTypeAndMode(queryConfig);
        if ( rows > 0){
            return AjaxResult.error("该类型已存在,请勿重复添加");
        }
        if (queryConfig.getQueryMode().equals(UserConstants.QUERY_MODE_QR)){
            String qrTime = queryConfig.getQrTime();
            String qrUnit = queryConfig.getQrUnit();
            if (StringUtils.isBlank(qrTime) || StringUtils.isBlank(qrUnit)){
                return  AjaxResult.error("二维码失效时间和单位必须填写");
            }
        }
        int row = queryConfigMapper.insertQueryConfig(queryConfig);

        return row > 0?AjaxResult.success():AjaxResult.error();
    }

    /**
     * 修改查询配置
     * 
     * @param queryConfig 查询配置
     * @return 结果
     */
    @Override
    public AjaxResult updateQueryConfig(QueryConfig queryConfig)
    {
        queryConfig.setUpdateTime(DateUtils.getNowDate());
        int rows = queryConfigMapper.selectQueryConfigByTypeAndMode(queryConfig);
        if ( rows > 0){
            return AjaxResult.error("该类型已存在,请勿重复添加");
        }
        if (queryConfig.getQueryMode().equals(UserConstants.QUERY_MODE_QR)){
            String qrTime = queryConfig.getQrTime();
            String qrUnit = queryConfig.getQrUnit();
            if (StringUtils.isBlank(qrTime) || StringUtils.isBlank(qrUnit)){
                return  AjaxResult.error("二维码失效时间和单位必须填写");
            }
        }
        int row = queryConfigMapper.updateQueryConfig(queryConfig);
        return row > 0?AjaxResult.success():AjaxResult.error();

    }

    /**
     * 批量删除查询配置
     * 
     * @param configIds 需要删除的查询配置主键
     * @return 结果
     */
    @Override
    public int deleteQueryConfigByConfigIds(Long[] configIds)
    {
        return queryConfigMapper.deleteQueryConfigByConfigIds(configIds);
    }

    /**
     * 删除查询配置信息
     * 
     * @param configId 查询配置主键
     * @return 结果
     */
    @Override
    public int deleteQueryConfigByConfigId(Long configId)
    {
        return queryConfigMapper.deleteQueryConfigByConfigId(configId);
    }
}
