package com.ff.base.system.service.impl;

import com.ff.base.system.domain.SysDatasource;
import com.ff.base.system.mapper.SysDatasourceMapper;
import com.ff.base.system.service.ISysDatasourceService;
import com.ff.base.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import java.util.List;

/**
 * 租户数据源Service业务层处理
 *
 * @author liukang
 * @date 2024-11-20
 */
@Service
public class SysDatasourceServiceImpl implements ISysDatasourceService
{
    @Autowired
    private SysDatasourceMapper sysDatasourceMapper;

    /**
     * 查询租户数据源
     *
     * @param id 租户数据源主键
     * @return 租户数据源
     */
    @Override
    public SysDatasource selectSysDatasourceById(Long id)
    {
        return sysDatasourceMapper.selectSysDatasourceById(id);
    }

    /**
     * 按租户id选择sys数据源
     *
     * @param id 身份证件
     * @return {@link String }
     */
    @Override
    public String selectSysDatasourceByTenantId(String id) {
        SysDatasource sysDatasource = sysDatasourceMapper.selectSysDatasourceByTenantId(id);
        if (ObjectUtils.isEmpty(sysDatasource)){
            return "Asia/Shanghai";
        }else {
            return sysDatasource.getTimeZone();
        }
    }

    /**
     * 获取租户时区名称
     * @param id 租户id
     * @return 时区名称
     */
    @Override
    public String selectTimeZoneNameByTenantId(String id) {
        SysDatasource sysDatasource = sysDatasourceMapper.selectSysDatasourceByTenantId(id);
        if (ObjectUtils.isEmpty(sysDatasource)){
            return "UTC+8";
        }else {
            return sysDatasource.getTimeZoneName();
        }
    }

    /**
     * 查询租户数据源列表
     *
     * @param sysDatasource 租户数据源
     * @return 租户数据源
     */
    @Override
    public List<SysDatasource> selectSysDatasourceList(SysDatasource sysDatasource)
    {
        return sysDatasourceMapper.selectSysDatasourceList(sysDatasource);
    }

    /**
     * 新增租户数据源
     *
     * @param sysDatasource 租户数据源
     * @return 结果
     */
    @Override
    public int insertSysDatasource(SysDatasource sysDatasource)
    {
        sysDatasource.setCreateTime(DateUtils.getNowDate());
        return sysDatasourceMapper.insertSysDatasource(sysDatasource);
    }

    /**
     * 修改租户数据源
     *
     * @param sysDatasource 租户数据源
     * @return 结果
     */
    @Override
    public int updateSysDatasource(SysDatasource sysDatasource)
    {
        sysDatasource.setUpdateTime(DateUtils.getNowDate());
        return sysDatasourceMapper.updateSysDatasource(sysDatasource);
    }

    /**
     * 批量删除租户数据源
     *
     * @param ids 需要删除的租户数据源主键
     * @return 结果
     */
    @Override
    public int deleteSysDatasourceByIds(Long[] ids)
    {
        return sysDatasourceMapper.deleteSysDatasourceByIds(ids);
    }

    /**
     * 删除租户数据源信息
     *
     * @param id 租户数据源主键
     * @return 结果
     */
    @Override
    public int deleteSysDatasourceById(Long id)
    {
        return sysDatasourceMapper.deleteSysDatasourceById(id);
    }
}
