package com.ygtx.system.service.impl;

import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ygtx.system.mapper.SysPostHomePageMapper;
import com.ygtx.system.domain.SysPostHomePage;
import com.ygtx.system.service.ISysPostHomePageService;

/**
 * 首页配置Service业务层处理
 * 
 * @author ruoyi
 */
@Service
public class SysPostHomePageServiceImpl implements ISysPostHomePageService
{
    private static final Logger logger = LoggerFactory.getLogger(SysPostHomePageServiceImpl.class);
    
    @Autowired
    private SysPostHomePageMapper sysPostHomePageMapper;

    /**
     * 查询首页配置信息集合
     * 
     * @param sysPostHomePage 首页配置信息
     * @return 首页配置信息集合
     */
    @Override
    public List<SysPostHomePage> selectSysPostHomePageList(SysPostHomePage sysPostHomePage)
    {
        return sysPostHomePageMapper.selectSysPostHomePageList(sysPostHomePage);
    }

    /**
     * 通过ID查询首页配置信息
     * 
     * @param id 配置ID
     * @return 首页配置信息
     */
    @Override
    public SysPostHomePage selectSysPostHomePageById(Long id)
    {
        return sysPostHomePageMapper.selectSysPostHomePageById(id);
    }

    /**
     * 新增保存首页配置信息
     * 
     * @param sysPostHomePage 首页配置信息
     * @return 结果
     */
    @Override
    public int insertSysPostHomePage(SysPostHomePage sysPostHomePage)
    {
        logger.info("开始新增首页配置，岗位IDs: {}", sysPostHomePage.getPostIds());
        
        // 检查是否已存在该岗位的配置
        SysPostHomePage query = new SysPostHomePage();
        query.setPostIds(sysPostHomePage.getPostIds());
        List<SysPostHomePage> existingList = sysPostHomePageMapper.selectSysPostHomePageList(query);
        if (existingList != null && !existingList.isEmpty()) {
            logger.info("首页配置已存在，执行更新操作，岗位IDs: {}", sysPostHomePage.getPostIds());
            // 如果已存在，则更新而不是插入
            sysPostHomePage.setId(existingList.get(0).getId());
            int result = sysPostHomePageMapper.updateSysPostHomePage(sysPostHomePage);
            logger.info("更新操作完成，影响行数: {}", result);
            if (result <= 0) {
                throw new RuntimeException("更新首页配置失败");
            }
            return result;
        }
        
        logger.info("首页配置不存在，执行插入操作，岗位IDs: {}", sysPostHomePage.getPostIds());
        int result = sysPostHomePageMapper.insertSysPostHomePage(sysPostHomePage);
        logger.info("插入操作完成，影响行数: {}", result);
        // 检查插入结果
        if (result <= 0) {
            throw new RuntimeException("插入首页配置失败");
        }
        return result;
    }

    /**
     * 修改保存首页配置信息
     * 
     * @param sysPostHomePage 首页配置信息
     * @return 结果
     */
    @Override
    public int updateSysPostHomePage(SysPostHomePage sysPostHomePage)
    {
        logger.info("开始更新首页配置，ID: {}", sysPostHomePage.getId());
        int result = sysPostHomePageMapper.updateSysPostHomePage(sysPostHomePage);
        logger.info("更新操作完成，影响行数: {}", result);
        // 检查更新结果
        if (result <= 0) {
            throw new RuntimeException("更新首页配置失败，可能记录不存在");
        }
        return result;
    }

    /**
     * 删除首页配置信息
     * 
     * @param id 配置ID
     * @return 结果
     */
    @Override
    public int deleteSysPostHomePageById(Long id)
    {
        return sysPostHomePageMapper.deleteSysPostHomePageById(id);
    }

    /**
     * 批量删除首页配置信息
     * 
     * @param ids 需要删除的配置ID数组
     * @return 结果
     */
    @Override
    public int deleteSysPostHomePageByIds(Long[] ids)
    {
        return sysPostHomePageMapper.deleteSysPostHomePageByIds(ids);
    }
}