package cn.cslg.pas.service;

import cn.cslg.pas.common.model.PersonnelVO;
import cn.cslg.pas.common.model.dto.ConfigDTO;
import cn.cslg.pas.common.model.vo.ConfigVO;
import cn.cslg.pas.common.model.vo.QueryConfigVO;
import cn.cslg.pas.common.utils.CacheUtils;
import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
import cn.cslg.pas.domain.WebLoginConfig;
import cn.cslg.pas.mapper.WebLoginConfigMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author admin
 * @description 针对表【web_config(网站配置)】的数据库操作Service实现
 * @createDate 2023-03-08 18:51:17
 */
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class WebLoginConfigService extends ServiceImpl<WebLoginConfigMapper, WebLoginConfig> {
    private final CacheUtils cacheUtils;
    private final LoginUtils loginUtils;

    //添加配置
    public void addLoginConfig(ConfigDTO configDTO) {
        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
        LambdaQueryWrapper<WebLoginConfig> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(WebLoginConfig::getWebId, configDTO.getWebId())
                .eq(WebLoginConfig::getTenantId, personnelVO.getTenantId());
        List<WebLoginConfig> configs = this.list(wrapper);
        WebLoginConfig config = new WebLoginConfig();
        if (configs.size() > 0) {
            config = configs.get(0);
        }
        config.setWebId(configDTO.getWebId());
        config.setTenantId(personnelVO.getTenantId());
        config.setLoginAccount(configDTO.getLoginAccount());
        config.setLoginPassword(configDTO.getLoginPassword());
        this.saveOrUpdate(config);
    }

    public WebLoginConfig getLoginConfig(Integer webId, Integer tenantId) {
        List<WebLoginConfig> configs = this.list(new LambdaQueryWrapper<WebLoginConfig>().eq(WebLoginConfig::getWebId, webId).eq(WebLoginConfig::getTenantId, tenantId));
        WebLoginConfig config;
        if (configs.size() > 0) {
            config = configs.get(0);
        } else {
            config = null;
        }
        return config;
    }

    public IPage<ConfigVO> queryLoginConfig(QueryConfigVO queryConfigVO) {
        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
        queryConfigVO.setTenantId(personnelVO.getTenantId());
        IPage<ConfigVO> dataPage = baseMapper.getPageList(new Page<>(queryConfigVO.getCurrent(), queryConfigVO.getSize()), queryConfigVO);
        return dataPage;
    }

    public Boolean deleteConfig(List<Integer> ids) {
        return this.removeByIds(ids);
    }

}