package com.usky.backend.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.usky.backend.domain.SysConfig;
import com.usky.backend.domain.SysTenant;
import com.usky.backend.domain.vo.SysConfigLoginVo;
import com.usky.backend.domain.vo.SysConfigTenantVo;
import com.usky.backend.mapper.SysConfigMapper;
import com.usky.backend.mapper.SysTenantMapper;
import com.usky.backend.service.SysTenantService;
import com.usky.common.mybatis.core.AbstractCrudService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 租户信息表 服务实现类
 * </p>
 *
 * @author ya
 * @since 2022-04-29
 */
@Service
public class SysTenantServiceImpl extends AbstractCrudService<SysTenantMapper, SysTenant> implements SysTenantService {

    @Autowired
    private SysConfigMapper sysConfigMapper;


    public SysConfigLoginVo getConfig( String domain) {
        SysConfigLoginVo sysConfigLoginVo = new SysConfigLoginVo();
        LambdaQueryWrapper<SysTenant> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.eq(SysTenant::getDomain,domain.trim());
        SysTenant sysTenant = this.getOne(queryWrapper);
        if (null == sysTenant) {
           return sysConfigLoginVo;
        }
        Integer tenantId = sysTenant.getId();
        LambdaQueryWrapper<SysConfig> configWrapper = Wrappers.lambdaQuery();
        configWrapper.eq(SysConfig::getTenantId,tenantId);
        List<SysConfig> sysConfigs = sysConfigMapper.selectList(configWrapper);
//        sysConfigs.stream().forEach(sysConfig -> {
//            String configKey = sysConfig.getConfigKey();
//            switch (configKey) {
//                case SysConfigLoginEnum.CONFIG_LOGIN_BACK_URL.getConfigKey():
//                     sysConfigLoginVo.setLoginTitle(sysConfig.getConfigValue());
//                    break;
//                case SysConfigLoginEnum.CONFIG_LOGIN_LOGO.getConfigKey():
//                     sysConfigLoginVo.setLoginLogo(sysConfig.getConfigValue());
//                    break;
//                default:
//            }
//        });
        return sysConfigLoginVo;
    }

    public SysConfigTenantVo getSysConfig(Integer tenantId) {
        SysConfigTenantVo sysConfigLoginVo = new SysConfigTenantVo();
        LambdaQueryWrapper<SysConfig> configWrapper = Wrappers.lambdaQuery();
        configWrapper.eq(SysConfig::getTenantId,tenantId);
        List<SysConfig> sysConfigs = sysConfigMapper.selectList(configWrapper);
        return sysConfigLoginVo;
    }

}
